(视频) 《快速创建网站》 3.2 WordPress多站点及Azure在线代码编辑器 - 扔掉你的ftp工具吧,修改代码全部云端搞定...

本文是《快速创建网站》系列的第6篇,如果你还没有看过之前的内容,建议你点击以下目录中的章节先阅读其他内容再回到本文。

访问本系列目录,请点击:http://devopshub.cn/tag/wordpress-on-azure/

1. 网站管理平台WordPress和云计算平台Azure简介 (6分钟视频 )
2.1 在Azure上创建网站及网站运行机制 (13分钟视频)
2.2 域名绑定操作和Azure负载均衡机制 (12分钟视频)
2.3 WordPress 初始化和网站管理功能 (11分钟视频)
3.1 WordPress 数据导入 (12分钟视频)
3.2 WordPress 多站点支持和Azure在线代码编辑器 (14分钟视频)
3.3 WordPress 多语言支持 Multisite Language Switcher (15分钟视频)
3.4 WordPress 主题安装和配置,美化你的网站 (15分钟视频)
4.1 为啥造软件不同于造汽车,为啥是软件就一定会有Bug - 构建开发运维一体化(DevOps)(11分钟视频)
4.2 完结篇 – 应用运营vs.发射卫星,遥测(Telemetry) 技术 (13分钟视频)

在上一节(3.1)中,我们已经完成了数据导入。在这一节(3.2)中,我将对WordPress进行多站点升级,让我的中文内容放置在http://anb.io/ 这个主站上,同时在http://anb.io/en/ 上放置英文的内容。相当于在我们的网站中创建了一个子站点,而且这个子站点具备和主站同样的功能,后续我们添加了多语言切换插件后,就可以在主站上启用中文,在/en的子站上启用英文,形成一个多语言的站点群。

这部分的内容对于不具备开发经验的用户可能稍显复杂,因为我们需要手动更新WordPress后台的代码。但是不必担心,在整个操作过程中我不会使用任何的开发工具,所有的操作都在浏览器中完成。

请配合视频阅读本文

微软Visual Studio Online在线编辑器

为了能够完成WordPress多语言模式的升级,我们需要对WordPress后台的代码文件进行简单修改。一般来说,对网站后台文件进行修改需要经过下载-更新-上传的过程,但是借助微软Azure云计算中集成的Visual Studio Online的在线编辑器,我们可以轻松的使用浏览器完成所有操作。

启用Visual Studio Online在线编辑器:在Azure门户的网站仪表板上点击 配置

图:在Azure中切换到网站配置页面

在配置页面中找到 EDIT IN VISUAL STUDIO ONLINE 这个选项,点击打开,并保存配置

图:在Azure中启用Edit in Visual Studio Online功能

回到 仪表板 页面,在右侧的 速览 中找到 在Visual Studio Online中编辑 链接,点击进入编辑器

图:在Azure中进入Visual Studio Online "Monaco"在线编辑器

进入编辑器后,可以看到WordPress网站的文件列表会在左侧显示。
图:Azure上的Visual Studio Online "Monaco"在线编辑器

这里,我们看到的是一个全功能的在线IDE(集成开发环境),不仅仅支持对文件的简单编辑,也支持代码的智能分析和开发辅助。Visual Studio Online 在线编辑器的CodeName是”Monaco”,当前对Web开发所使用的语言环境支持很好,具体请参考以下视频和链接。

我在MVP ComCamp2015上的主题演讲中关于Monaco的演示视频:

注:这段视频中使用的一个Node.JS应用程序。视频的前半部分是对Visual Studio Online的开发平台部分进行介绍,后半部分才是对在线编辑器的介绍,同时也有和GitHub集成的演示。

预告:在本系列的最后部分(4.1)中,我还会介绍如何使用Visual Studio Online和Azure集成进行WordPress的代码管理及本地开发环境的构建。

MSDN Channel 9上的Monaco视频汇总
http://channel9.msdn.com/Series/Visual-Studio-Online-Monaco

Monaco开发团队的博客
http://blogs.msdn.com/b/monaco/

WordPress多站点模式升级操作

WordPress多站点模式属于WordPress的高级功能,在界面上没有直接配置的选项,必须通过修改后台代码激活。对于运营网站的同学来说,这是一个非常有价值的功能。

在我们常用的各种网站上,我们会经常看到多站点模式的应用,比如:新浪的多站点

http://www.sina.com.cn/ :这是主站,作为整个网站的第一入口
http://news.sina.com.cn/ :这是新闻子站
http://tech.sina.com.cn/ :这是科技子站

以上的多站点模式叫做:子域名方式,对于内容比较多的站点,我们可以使用子域名(也就是域名中的第一部分)来区分不同的功能/内容区域。

再看下面新浪对于科技子站内的分类:

http://tech.sina.com.cn/internet/ :科技子站中的互联网内容
http://tech.sina.com.cn/tele/ : 科技子站中的电信类内容
http://tech.sina.com.cn/discovery/ :科技子站中的科普内容

以上这种多站点模式叫做:子目录模式,对于同一个大分类下面的小分类,就可以使用子目录的方式来进一步划分。

当然,以上两种模式我们既可以只使用其中一种,也可以混合使用。根据你的站点规模和工作模式自己选择。多站点模式不仅仅影响你的用户如何消费内容,对于网站后台的工作模式也同样有影响,不同类别的内容一般由不同部门/专业的人员进行管理,对这些用户我们需要进行权限的控制。使用多站点模式,我们就可以很容易根据不同部门/专业对不同的用户进行管理,并进行逐级授权。所以,WordPress完全可以作为企业门户的解决方案来使用。

多站点规划

从上面的例子可以看出,多站点是需要一定规划的,而且一旦启用多站点,其结构就难以调整,需要预先进行的计划才可以。

图:anb.io多站点多语言规划

按照我的规划,用户将以http://anb.io 作为统一入口,按照客户端所使用的不同语言分别进入中文或英文的子站,中间使用多语言切换插件进行连接,形成以下的访问体验。

图:anb.io博客站点多语言切换效果

上图可以看到,同一片文章的两个不同语言版本使用页面右侧的多语言切换工具进行链接,用户可以通过点击其中的语言选项跳转到相应的语言版本,WordPress也会根据用户所使用的浏览器的语言设置自动将第一次进入站点的用户直接定位到不同语言的首页上。

注意两篇文章的url虽然不同,但是可以很轻易的分别他们是属于不同语言的,这样的格式也将对搜索引擎优化有所帮助。
http://anb.io/blog/opensource-freetools-crossplatform-mvp-comcamp2015-keynote/
http://anb.io/en/opensource-freetools-crossplatform-mvp-comcamp2015-keynote/

由于没有必要对所有的内容都提供2种语言的版本,相应语言的博客首页只会显示那些已经提供了当前语言的文章链接,如下图:

图:anb.io多站点首页可以根据语言显示不同内容

WordPress多站点升级操作

首先,你可以通过WordPress的官方文档了解一下WordPress的多站点功能,里面列出了各种前提条件和主要操作步骤。但是因为WordPress的文章主要是针对Linux/Apache/Mysql环境写的,在Azure所使用的WordPress上进行操作的时候略有差异,对于本系列的所涉及的操作请看下文。

WordPress多站点模式文档:http://codex.wordpress.org/Create_A_Network

操作步骤

  1. 编辑wp-config.php文件,激活多站点升级模式使用之前打开的在线编辑器,在wp-config.php这个文件中找到以下代码/* That's all, stop editing! Happy blogging. */

    并在这行代码下面添加以下代码define( 'WP_ALLOW_MULTISITE', true ); 

     

    意思就是告诉WordPress:请激活多站点升级模式。如下图
    图:在WordPress中编辑wp-config.php文件激活多站点升级模式
    注意:Monaco中进行编辑时不需要保存的,它会自动完成保存操作。

  2. 修改完成后,切换回到你的WordPress的控制台首页,在Tools菜单下会出现Network Setup这个选项
    图:在WordPress中进入Tools | Network Setup页面
    选中这个选项即可进入多站点升级引导页面,引导程序首先会提示你需要将站点中的插件暂时关闭,才能完成升级。点击 deactivate your plugin链接,并将所有的插件deactivate,再回到这个引导页面。
    图:WordPress多站点升级需要deactivate所有插件
    这时,WordPress就可以进行多站点升级了,再以下页面中直接点击 install即可。
    图:启动WordPress多站点升级
    然后WordPress会提示你再次修改配置文件,这次需要修改的分别是wp-config.php和web.config文件。wp-config.php的修改如下:将之前我们添加的那行代码替换成以下代码
    注:一定要替换,而不是保留原来的代码,之前那行代码只是激活升级模式,现在已经完成了升级,我们需要对多站点模式进行配置。

     

    define('MULTISITE', true);
    define('SUBDOMAIN_INSTALL', false);
    define('DOMAIN_CURRENT_SITE', 'www.anblogs.net');
    define('PATH_CURRENT_SITE', '/');
    define('SITE_ID_CURRENT_SITE', 1);
    define('BLOG_ID_CURRENT_SITE', 1);

    注意以上define(‘SUBDOMAIN_INSTALL’, false),这里要使用false。因为我们是使用子目录模式的多站点,而不是子域名方式的多站点。

    Web.config的修改如下:
    注:WordPress直接给出的配置文件是有错的,请使用以下配置完成修改。

    <rewrite>
    <rules>
    <rule name="WordPress Rule 1" stopProcessing="true">
    <match url="^index\.php$" ignoreCase="false" />
    <action type="None" />
    </rule>
    <rule name="WordPress Rule 2" stopProcessing="true">
    <match url="^([_0-9a-zA-Z-]+/)?files/(.+)" ignoreCase="false" />
    <action type="Rewrite" url="wp-includes/ms-files.php?file={R:2}" appendQueryString="false" />
    </rule>
    <rule name="WordPress Rule 3" stopProcessing="true">
    <match url="^([_0-9a-zA-Z-]+/)?wp-admin$" ignoreCase="false" />
    <action type="Redirect" url="{R:1}wp-admin/" redirectType="Permanent" />
    </rule>
    <rule name="WordPress Rule 4" stopProcessing="true">
    <match url="^" ignoreCase="false" />
    <conditions logicalGrouping="MatchAny">
    <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
    </conditions>
    <action type="None" />
    </rule>
    <rule name="WordPress Rule 5" stopProcessing="true">
    <match url="(^[_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*)" ignoreCase="false" />
    <action type="Rewrite" url="{R:2}" />
    </rule>
    <rule name="WordPress Rule 6" stopProcessing="true">
    <match url="^([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
    <action type="Rewrite" url="{R:2}" />
    </rule>
    <rule name="WordPress Rule 7" stopProcessing="true">
    <match url="." ignoreCase="false" />
    <action type="Rewrite" url="index.php" />
    </rule>
    </rules>
    </rewrite>

    对web.config的修改是针对托管WordPress的Azure网站服务器进行的,以上的内容都是一些url重写规则,WordPress给出的配置在使用目录模式的时候无法正常工作,所以请一定使用本文给出的代码。

    注意:你需要修改的仅仅是配置节的内容,请保留其他内容,如下图
    图:WordPress多站点升级中对web.config的重定向模块进行配置

  3. 进行多站点配置,完成以上配置后,并从新登录。你会注意到顶部的菜单发生了变化,请点击 My Sites | Network Admin | Dashboard进入到多站点管理控制台。图:进入WordPress多站点管理控制台
    多站点管理控制台从逻辑上看,是位于你所有子站点之上的根控制台,今后所有的插件/外观(主题)安装都需要使用这个控制台完成,而文章/内容的管理则要使用相应站点的控制台完成。现在让我们添加我们的英文站点,点击Sites | All Sites菜单,并在Sites页面中点击 Add New按钮

    图:WordPress中添加新的子站点
    在Add New Site页面中填写新站点的信息,Site Address就是你的新站点所处于的目录位置,后面就是站点名称和管理员邮箱。点击 Add Site 按钮,完成操作。

    图:WordPress子站点创建

    完成后再回到 Sites | All Sites 页面,你会看到现在有两个站点了。

  4. 前台分别打开这两个站点的地址,你会看到主站上因为之前导入了数据,所以文章会多一些,而新建的子站上只有Hello World这一篇文章

    图:WordPress多站点升级效果

到这里,我们就完成了多站点升级的操作。在下一节(3.2)中,我们将对2个站点进行不同的语言配置,并安装多语言切换插件将两个站点链接到一起。

请关注微信公众号anb-io,每周推送内容,有技术也有生活,一起做个有情怀的程序猿。

图片:扫一扫微信订阅号,和你一起做一个有情怀的程序猿。

转载于:https://www.cnblogs.com/ups216/p/4315222.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431984.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自定义外部协议使浏览器拉起本地程序

什么是自定义协议 由于我们的游戏需要在浏览器中调用NPAPI插件&#xff0c;而chrome移除了NPAPI的支持&#xff0c;导致游戏并不能很好的适配所有的浏览器&#xff0c;所以这个时候我们对于chrome浏览器用到了自定义浏览器协议这一标准。自定义浏览器协议允许在浏览器中使用pr…

hssfcolor 不建议使用_不建议使用微信双开的真正原因!

不少小伙伴都有两个甚至多个微信号&#xff0c;通常一个是自己的私人号&#xff0c;其它则用于工作&#xff0c;所以想要在手机中双开微信&#xff0c;这样使用起来更方便。不过使用 iPhone 的小伙伴就很郁闷了&#xff0c;为什么在 iPhone 上不能像部分安卓手机那样方便的双开…

React Canvas:高性能渲染 React 组

React Canvas 提供了使用 Canvas 渲染移动 Web App 界面的能力&#xff0c;替代传统的 DOM 渲染&#xff0c;具有更接近 Native App 的使用体验。React Canvas 提供了一组标准的 React 组件&#xff0c;由基于的渲染元素抽象而成。 GitHub 源码下载 示例代码&#xff1a; …

移除集合效率高还是add高_List、set集合接口分析

一、List接口详解1、List接口有三个实现类&#xff0c;ArrayList、LinkedList、Vector2、三个实现类的异同点&#xff1a;&#xff08;1&#xff09;ArrayList: 作为list接口的主要实现类&#xff1b;线程不安全&#xff0c;效率高&#xff1b;底层使用Object[]存储&#xff08…

python 读取excel太慢_Python 读取excel并转换为字典

方法一&#xff1a;利用利用xlrd读取excel文件其实整个过程比较简单&#xff0c;利用xlrd读取excel文件&#xff0c;再把读取到的数据转换为dict即可。1.安装 xlrdpip install xlrd2.读取文件&#xff0c;并进行格式转换导入的excel表格的格式是这样的&#xff1a;解析后的格式…

大表与大表join数据倾斜_技术分享|大数据技术初探之Spark数据倾斜调优

侯亚南数据技术处支宸啸数据技术处在大数据计算中&#xff0c;我们可能会遇到一个很棘手的问题——数据倾斜&#xff0c;此时spark任务的性能会比预期要差很多&#xff1a;绝大多数task都很快执行完成&#xff0c;但个别task执行极慢或者报OOM(内存溢出)。数据倾斜调优&#xf…

磁盘剩余空间策略_MySQL磁盘消耗迅猛掌握这点就够了,包你事半功倍

Part1:写在最前当一张单表10亿数据量的表放在你面前&#xff0c;你将面临着什么&#xff1f;Part2:背景介绍为了提升数据库资源利用率&#xff0c;一个实例中&#xff0c;在不互相影响&#xff0c;保证业务高效的前提下&#xff0c;我们会将同一个大业务下的不同小业务放在一个…

logback日志pattern_@Slf4j 实现日志输入到外部文件

添加一个配置文件\src\main\resources\logback-spring.xml<?xml version"1.0" encoding"UTF-8"?><configuration scan"true" scanPeriod"10 seconds"> <contextName>logbackcontextName> <prope…

前驱和后驱什么意思_为什么只有豪车才敢用后驱

为什么只有豪车才敢用后驱https://www.zhihu.com/video/1156959599864147968一般的家用车&#xff0c;基本上都是前驱为主&#xff0c;前驱够用&#xff0c;成本还低。但前驱满足不了豪华车的运动需求&#xff0c;所以豪华车后驱才是王道。有人这个时候肯定要跳出来不服了&…

思科光传输功率查询_常见的6款40G QSFP+光模块型号介绍及应用

近些年来&#xff0c;云计算和大数据在我国兴起一股热潮&#xff0c;为了提供足够的带宽&#xff0c;许多接入交换机已经发展到可以连接40G以太网的核心交换机。互连数据传输的快速发展&#xff0c;离不开40G光模块&#xff0c;因为它可以提供足够的带宽&#xff0c;以确保数据…

sigquit信号默认忽略吗_老妹儿,你真的搞懂了 Shell 信号吗?

作者&#xff1a;李振良OK链接&#xff1a;https://blog.51cto.com/lizhenliang/1899347哈喽&#xff0c;各位新来的小伙伴们&#xff0c;大家好&#xff01;由于公众号做了改版&#xff0c;为了保证公众号的资源能准时推送到你手里&#xff0c;大家记得将咱们的公众号 加星标置…

datetimepicker不可以选择当天之前_专访吴京:网上《战狼3》的消息我都不知道,大家可以选择不信...

搜狐娱乐讯 (哈麦/文)在2017爆火的《战狼2》之后&#xff0c;吴京演了《祖宗十九代》《流浪地球》《老师好》《银河补习班》《攀登者》《我和我的祖国》《我和我的家乡》《金刚川》八部电影&#xff0c;但是计划中的《战狼3》一直没有动静。不过&#xff0c;关于《战狼3》&…

机器人蛮王_盖伦:吊打我老婆,蛮王:我也是,他:被老婆打的不敢出塔

相遇就是缘分&#xff0c;你点开了我的文章&#xff0c;小编感到万分荣幸&#xff0c;感谢各位朋友。既然看到了我的文章&#xff0c;就说明我们还是有缘&#xff0c;希望大家可以帮我点点左上角的蓝色字体&#xff0c;小编给大家鞠躬了&#xff01;LOL如此好玩的原因&#xff…

android serialport new 软件退出_基于Android9.0,了解Android启动流程

先记住四个进程和三种方式。**四个进程**1.Launcher进程2.system_server进程3.App进程4.Zygote进程**三种方式**1.Binder方式2.Socket方式3.Handler方式点击桌面APP图标&#xff0c;Launcher调用startActivitySafely&#xff08;Launcher进程&#xff09;java/*** Default laun…

【转】使用命令行方式创建和启动android模拟器

原文网址&#xff1a;http://blog.csdn.net/tiandinilv/article/details/8953001 1、Android模拟器介绍 Android中提供了一个模拟器来模拟ARM核的移动设备。Android的模拟器是基于QEMU开发的&#xff0c;QEMU是一个有名的开源虚拟机项目&#xff08;详见http://bellard.org/qem…

LPC1768的SPI通讯

SPI是一种全双工串行接口&#xff0c;可处理多个连接到指定总线上的主机和从机。在数据传输过程中总线上只能有一个主机和一个从机通信。在数据传输中&#xff0c;主机总是会向从机发送一帧8到16个位的数据&#xff0c;而从机也总会向主机发送一帧字节数据 使用代码如下 void S…

文本显示变量_几千个IO状态显示.十几分钟搞定实例

工程上常会在一个或者数个界面中对所有IO点监控&#xff0c;很多小伙伴用一一映射的传统方法来实现&#xff0c;在超小型项目中实用性较强&#xff0c;在稍微大一点的项目中实现起来效率低还经常出错。本文旨在分享有价值的实际经验&#xff0c;供小伙伴们参考。在实现监控前要…

TabBarController创建及使用方法简介

TabBarController创建及使用方法简介 大致讲解一下TabBarController的创建过程&#xff1a; 首先&#xff0c;我们需要一些视图&#xff0c;如创建UIControllerView类型的view1&#xff0c;view2&#xff0c;view3. 然后&#xff0c;我们需要创建 一个UITabBarController类型的…

华为gre隧道全部跑静态路由

最终实现&#xff1a; 1、pc1能用nat上网ping能pc3 2、pc1能通过gre访问pc2 3、全部用静态路由做&#xff0c;没有用ospf&#xff0c;如果要用ospf&#xff0c;那么两边除了路由器上跑ospf&#xff0c;核心交换机也得用ospf r2配置&#xff1a; acl number 3000 rule 5 deny…

数组与串,串的实现,KMP,BF算法

数组是一种常用的数据结构&#xff0c;高级语言头提供了支持数组的基本操作&#xff0c;而且数组也是构成其他数据结构的重要组成。 数组是N个相同元素的构成的占用一块地址连续的内存单元的有限序列。 数组的任一个元素都可以用在数组的位置来表示。 数组与线性表区别&#xf…