watermoon 发表于 2016-11-26 17:09:54

群晖下搭建wordpress博客站点

本帖最后由 watermoon 于 2017-8-15 09:48 编辑

  如果说群晖只是拿来做数据仓库的话,那么这个仓库未免有点空旷了。如果说群晖只是拿来做下载的话,那么它就只是一台老牛破车。群晖的作用还有很多值得我们去进一步挖掘,这里我只想把自己这几个月亲身实践,试用了黑群白群多个版本之后,搭建wordpress博客站点的一些心得体会,完整地记录下来,供同好们参考。
  wordpress是一个强大的开源博客程序,在接触群晖以前,我就已经为单位的网站架设过。当发现群晖有相应的套件可以直接采用时,颇感欣喜。尽管网络上有许多免费的博客站点可以让我们书写,但是谁也不能保证它们是否能长期存在下去。所以选博客网站,一是要可靠,二是要国外品牌。我一开始是千选万选选了微软的博客livespace来写的。心想微软不会说到就倒吧,它要倒了,电脑也进化了吧。不成想,live品牌整个被砍掉了,博客也就泡汤了。当然微软还是有善后的,国外的自动转给wordpress,国内因为“你懂的”原因所以不能给wordpress。所以我只能在新浪和网易上都占了地方。然而,又是因为“你懂的”原因,这两个地方都不太平,很容易被删文章或者评论。因此还是自己有服务器来搭建博客最可靠了。以上是前言。

  进入正题,先说说如何在群晖DSM5.2系统下搭建wordpress博客站点。为何不直接说现在最新的DSM6.0.2呢?看下去就知道了。

一、在群晖DSM5.2系统下搭建wordpress博客站点。

  1)打开web服务。wordpress博客程序就是一套网站程序,所以首先要打开系统的web服务。

  在这里可以先简单地勾选启用即可,至于里面的设置以后用到时再说。在开始菜单里打开web station,若能显示下图,则表明已经开启了群晖系统的web服务了。

  2)下载并安装wordpress套件。这个不用多说,群晖套件比windows下建站要方便多了,不需要考虑apache啊、php啊、mySQL啊等等,傻瓜式安装。它会自动提示需要安装数据库套件,一路“下一步”,直至完成。

  至于数据库密码,若是需要,则首先要打开数据库套件在其中设置好(默认是空密码),再在wordpress套件安装的这一步中输入密码。

  3)初始化wordpress。在开始菜单里点击wordpress,跳出博客网站的初始化页面,然后按需填入相关内容,一路下去就建好了博客站点。

  现在只要在浏览器的地址栏中输入群晖服务器所在地址在其后加上/wordpress/即可在局域网中访问到wordpress博客站点。当然想要让主页自动跳转到博客首页的话,可以修改共享目录web下的index.html文件,在<title></title>标签之间加入自动跳转代码,如:
<meta http-equiv="refresh" content="0.1;url=/wordpress/">  4)外网访问设置。在这之前其实wordpress站点已经搭建完毕,但关键问题是我们要让外网访问到站点。外网访问,白群有群晖提供的免费域名XXXXXX.synology.me,也可以用其他免费的动态域名。比如,我就用的是watermoon.f3322.net。

  理论上只要在群晖的控制面板“外部访问”中新增好DDNS,在“路由器配置”中做好端口映射,就能从外网访问到博客站点。然而,现实却往往与理论相悖。宽带运营商一般都会无耻地封闭个人用户的上行80端口,导致无法通过域名访问直接访问站点。解决办法就是新增端口,在控制面板“web服务”中,勾选额外端口,填入自定义端口号,比如:8888(好像电信连8080都封掉的),再到“路由器配置”中做好端口映射。以后在外网访问时,地址上必须加端口号才行。例如:http://watermoon.f3322.net:8888/。
  5)外网访问为什么wordpress站点只能看到首页?这个问题是wordpress才会碰到的。因为这套网站里面的链接都是采用绝对路径,而不是相对路径,所以端口号改变之后,其内部的链接仍然是没有端口号的,导致外网访问异常。最简单的办法是登录wordpress后台,修改设置-常规选项中的站点地址,加入端口号。

注意:这样做有一个副作用,就是再也无法在内网中直接输入IP地址访问站点了。解决办法就是要让wordpress自动获取站点地址。我们在web共享目录下的wordpress目录中找到设置文件wp-config.php,在文件的最后添加一段代码:

$home = 'http://'.$_SERVER['HTTP_HOST']; #获取当前访问的域名
$siteurl = 'http://'.$_SERVER['HTTP_HOST'];
define('WP_HOME', $home.'/wordpress');
define('WP_SITEURL', $siteurl.'/wordpress');  保存以后,无论是在外网用动态域名+端口,还是在内网直接输入IP地址,都能正常访问wordpress博客站点中的所有链接了。

  至此,在群晖DSM5.2系统下搭建wordpress博客站点大功告成!

二、在群晖DSM6.0.2系统下搭建wordpress博客站点。
  照理说,系统应该越新越简便,然而在DSM6下搭建wordpress却变成了噩梦。
  1)安装套件。这个仍然很自动、很傻瓜,会提示还需要安装web服务和数据库套件。注意:新的系统把web服务也做成了套件,而不再是集成于系统的控制面板中了,产生什么影响,下文再说。
  2)初始化wordpress。以上大致与5.2系统下没什么区别,到了这里第一个大问题出现了。初始化时选了简体中文,完成后进入仪表盘,首页居然是英文的,里面很多都汉化不全,这是怎么回事呢?后来无意间发现了群晖在站点插件里加了一个翻译插件。问题就在这里了!尽管没有启用,但它对wordpress造成了困扰。

  我试着启用它,选择英文,然后再关闭它。这之后,再在wordpress的设置中选择简体中文,终于让整个站点设置都显示为中文状态了。然而,与此同时,我又发现wordpress居然不能自动检查到最新版本了,请看截图。

  再来看看正常状态下的截图。

  问题似乎是出在wp-config.php中被群晖加了一段不自动检查的代码:
define( 'AUTOMATIC_UPDATER_DISABLED', true );
add_filter('pre_site_transient_update_core','__return_null');
  可是,就算删除这段代码,也还是无法找回升级按钮,只能看到新版的版本号。你说群晖是在折腾啥?我只能认为这是群晖故意不让用户通过wordpress自动升级的,而是一定要通过群晖的套件方式进行升级,因为群晖在wordpress的源代码中修改了其他东西,怕自动升级冲掉这些东西。
  3)外网访问问题。接着有一个大问题出现了。上文讲过新的系统把web服务也做成了套件,但这个套件里面却再也找不到打开额外web服务端口的设置了!有网友去信咨询过,确认是群晖删除了这个设置。可恶啊!难道他们不知道国内电信基础运营商都是封掉80上行端口的吗?怎么办?通过不懈努力和盲目摸索。我终于找到了一个替代办法。添加虚拟主机,设定其端口号为8888,然后在外部访问中把路由器的8888映射到群晖的8888上。注意,不能使用路由器8888映射到群晖的80,为什么?因为当外网访问时必须始终显示端口号才行,而80端口号会被系统自动省略,那就会导致错误。在这里,我一直遇到问题,就是在外网访问时只能显示首页,却不能显示CSS等其他内容,找了半天也没查出问题,我只得把5.2下的wp-config.php拷贝出来覆盖6.0.2下的相应文件,终于解决了问题。至于有何副作用,目前还没发现。
  现在貌似正常了,但折腾了我好多时间,谁说群晖比windows下架设wordpress方便了?

补记:
  群晖系统在不断升级和完善。最近的DSM6.1.3版本中,wordpress套件也有了进步。尽管版本号还不算最新,只是4.7.5,不过上文提到的显示中文界面的小麻烦已经解决了,可以直接在设置中选择中文。当然如果想要让wordpress自动升级到最新版的话,按照上文中注释掉那句不允许检测版本的语句即可。中文版的升级按钮还是看不见,不过我们可以先升级成英文版的,其后就会出现中文版的升级按钮。现在已经可以很方便地升级到4.8.1中文版了。

momo 发表于 2016-11-26 19:11:15

不错,支持下。

无网不渗 发表于 2016-12-3 17:08:53

详尽,实用,顶一个!

dannyw 发表于 2016-12-18 20:06:43

谢谢分享。。













http://www.gebi1.com/static/image/common/sigline.gif
https://wrdan.com         一个运行在家里的小网站

baogyq 发表于 2016-12-19 16:21:33

求大神解答,目前内局域网 IP可以访问,但是公网 IP,还有域名都不行。
内网用192.168.1.59/wordpress,可以访问。
由于电信屏蔽就做了端口映射,外网430,内网80,外网88,内网80都试过无法访问
然而用公网 IP+上述的做了端口映射的端口访问phpmyadmin却可以远程访问,说明端口映射没有问题
域名+上述的做了端口映射的端口访问phpmyadmin却可以远程访问,域名也没问题
就是访问wordpress时候会先转跳至res://ieframe.dll/navcancl.htm,之后直接BOOM
无法访问
还有带端口号可以用隐性URL去尾巴么?
求大神QAQ

dannyw 发表于 2016-12-19 18:23:35

本帖最后由 dannyw 于 2016-12-20 08:54 编辑

baogyq 发表于 2016-12-19 16:21
求大神解答,目前内局域网 IP可以访问,但是公网 IP,还有域名都不行。
内网用192.168.1.59/wordpress,可 ...
用https   443端口











http://www.gebi1.com/static/image/common/sigline.gif
https://wrdan.com         一个运行在家里的小网站

watermoon 发表于 2016-12-19 18:53:00

baogyq 发表于 2016-12-19 16:21
求大神解答,目前内局域网 IP可以访问,但是公网 IP,还有域名都不行。
内网用192.168.1.59/wordpress,可 ...

phpmyadmin打开数据库,看看网站设置用的是哪个地址。我发现有时候就算加了上面那段代码还是会有些问题。所以还是老老实实把地址全都写成外网的地址,比如:http://watermoon.f3322.net:8888/
电信似乎是把80,8080什么的都关了。

baogyq 发表于 2016-12-22 17:13:36

watermoon 发表于 2016-12-19 18:53
phpmyadmin打开数据库,看看网站设置用的是哪个地址。我发现有时候就算加了上面那段代码还是会有些问题。 ...

谢谢,终于可以了

zenpaul 发表于 2017-3-7 10:22:32

怪不得我怎么找也找不到打开额外web服务端口的设置。原来是我的群晖出场就是6.0

tvrcfdfe 发表于 2017-3-9 11:11:38

收藏一下感觉6下好麻烦

ccss123 发表于 2017-3-10 10:01:49

学习!!长知识!!

ck_i 发表于 2017-3-14 20:39:03

然而,现实却往往与理论相悖。宽带运营商一般都会无耻地封闭个人用户的上行80端口,导致无法通过域名访问直接访问站点。解决办法就是新增端口,在控制面板“web服务”中,勾选额外端口,填入自定义端口号,比如:8888(好像电信连8080都封掉的),再到“路由器配置”中做好端口映射。以后在外网访问时,地址上必须加端口号才行。
想请教一下,WEB服务那里改成了8888,在路由器映射那里怎么配?外部端口填8888,内部填80?选TCP协议?

watermoon 发表于 2017-3-15 18:39:10

ck_i 发表于 2017-3-14 20:39
想请教一下,WEB服务那里改成了8888,在路由器映射那里怎么配?外部端口填8888,内部填80?选TCP协议? ...

web服务虚拟服务器开8888端口,路由器那里内外部都选8888即可。

潜水猫 发表于 2017-4-10 22:26:30

为什么我设置好了,但是外网报500错误呢?内网没问题可以访问

tvrcfdfe 发表于 2017-4-11 09:25:05

学习了 感觉我不怎么需要写这个 嘿嘿

robbing 发表于 2017-4-26 23:33:11

5.2下的wp-config.php麻烦共享下

watermoon 发表于 2017-4-27 11:28:39

robbing 发表于 2017-4-26 23:33
5.2下的wp-config.php麻烦共享下

抱歉,这个文件我没保存,后来我还是不用套件直接装了。参见:
不用群晖套件在DSM下架设wordpress博客站点

milkha 发表于 2017-6-9 09:33:10

请教,群晖建站后,如何给网站安装SSL证书。

snowman1003 发表于 2017-6-9 09:49:49

感谢楼主分享,一直以为wordpress只能内部访问

watermoon 发表于 2017-6-9 09:54:00

milkha 发表于 2017-6-9 09:33
请教,群晖建站后,如何给网站安装SSL证书。

证书申请后,下载到本地,然后在控制面板-安全性中添加进去即可。
页: [1] 2
查看完整版本: 群晖下搭建wordpress博客站点