在群晖NAS上搭建WordPress动态网站并实现外网访问
目录
家有群晖NAS一台,型号是DS216+II,系统目前升级到了DSM 7.1,使用五年,常用的功能都充分发挥了作用,最近突然想试试在NAS上建一个WEB站点。知识储备不够,好在有万能的互联网,再加上自己孜孜不倦的钻研精神,也算是把站点建起来了。当然,建站的过程中碰到了很多的问题,有些问题在网上找到了解决的方法,有些找不到答案只能靠自己摸索。生怕时间一长,把这些解决问题的方法忘掉了,赶紧写篇小文记录下来。为节省篇幅,常规的过程或网上有成熟教程的环节就一带而过了,可自行上网查找。
一、安装套件
1. 安装Web Station套件
要让群晖NAS具有网站功能,必须要安装Web Station这个套件,还要安装必须的后端套件,后端套件有多个版本,我也不管三七二十一,统统都给他安上。安装完成后,在系统中会产生一个名称为“web”的共享文件夹,网站文件就放在这个文件夹里,在这个文件夹里有一个“index.html”的主页文件,在局域网里,在浏览器地址栏输入NAS的IP地址“http://IP”,如“http://192.168.×.×”,就可以看到“index.html”这个网页的内容了,说明我已经在NAS上建立起了一个静态网站。
2. 安装MariaDB 10数据库套件
静态网站搭建好,尝试着写了几个网页,总觉得功能太单一了,就想着如何才能做出页面漂亮、功能强大的网站,那就要考虑搭建动态网站了。要建立一个动态网站,就需要使用数据库,那就先安装网站数据库套件,群晖为我们提供了MariaDB 10这个数据库套件,还是按照默认设置进行安装,安装过程中需要设置一个比较复杂的数据库密码,这个密码必须要记住,如果忘掉了,那就只能重置了。
3.安装服务套件
MariaDB 10的界面非常简单,而要对数据库进行管理,必须要安装phpMyAdmin数据库管理套件,安装过程也就一路默认即可。其实,很多人是没有数据库管理能力的,一般情况下也不需要手动操作数据库,如果不想直接操作数据库,这个套件不装问题也不大。
凭空建设一个动态网站,明显超出了我的能力范围,好在群晖提供了两个CMS(内容管理系统)套件,一个是WordPress,还有一个是Joomla。两个套件安装方法差不多,安装过程中需要专门为这个套件建立一个数据库账户,需要设置一个密码。安装完了以后立即启动套件,按照网页提示进行必要的设置,设置完成就可以使用了。当然,这两个套件的功能是差不多的,一般情况下只需要安装一个就可以了,我现在使用的是WordPress。
4.我为什么要用WordPress?
网上看了两个套件的介绍和对比,感觉这两个套件各有千秋,实在难以判断,那就都安装试试吧。首先安装的是Joomla,安装过程还算顺利,虽然群晖提供的版本比较低,安装好了以后Joomla也一直提醒版本太低,好在安装好以后可以升级到最新版,这个应该不是问题。问题有两个,一个是最新版的Joomla 4,强烈要求系统提供更高版本的php(安装时是php 7.4),但在群晖里没有办法修改这个套件的php版本,所以Joomla会一直提醒。第二个问题是Joomla在安装一些插件或组件时,虽然组件标明跟当前版本是兼容的,但还是会导致Joomla数据库的崩溃,崩溃后就只能重新安装,如果网站已经建好,那损失就太大了。经过好几次的重装,也找不到崩溃的原因,就只好放弃了。然后就安装WordPress,装好后折腾了一段时间,安装了好几个插件,兼容的都用上了,不兼容的也没有导致崩溃,目前使用正常。
5.建站的其它方法
在群晖里安装套件是比较简单的,按步骤操作很快就可以完成安装,当然,可供设置的内容也是比较少的。如果想要更强大的功能和更自由的设置,也可以不使用群晖的套件,比如可以在WordPress网站下载软件,上传到NAS手动来安装,还可以在群晖Docker里安装宝塔面板,在宝塔面板上来安装数据库系统和各种服务套件,相关教程可自行查找。
二、访问WordPress动态网站
1.内网访问
群晖对web套件提供了一个标准化的文件目录,安装Web Station后创建默认服务器,同时创建“web”共享文件夹,内网访问默认服务器,只需要“http://IP”即可,访问的是“web”文件夹。而其它服务套件,群晖默认安装在“web_packages”文件夹中,每个套件创建一个子文件夹,路径和名称都是自动创建不能随意修改的。要在内网访问WordPress动态网站,网址为“http://IP/wordpress”,访问的是“web_packages/wordpress”文件夹。
2.外网访问
要实现外网访问NAS上的WEB网站,你的家庭宽带必须要有公网IP地址,群晖的QuickConnect只能用于DSM和群晖自家的套件上,不能用于WEB网站访问。
如果有公网IP,事情就比较简单,首先在群晖里设置好DDNS,群晖也会提供一个免费的二级域名。如我的域名就是“×××××.myds.me”,外部访问默认服务器,就是“http://×××××.myds.me”,访问WordPress动态网站就是“http://×××××.myds.me/wordpress”。当然,事情并没有那么简单,http访问需要用80端口,https访问需要用443端口,NAS的这两个端口都是开放的,所以内网访问的时候没有问题,而路由器的这两个端口一般是被网络运营商关闭的,外网访问就没有办法进行了。所以外网进行http或https访问,必须要使用其它端口并让路由器映射到NAS的80和443端口,我就设置了8000和8001两个端口,在路由器里设置分别映射到NAS的80和443端口。这样一来,访问WordPress动态网站就是“http://×××××.myds.me:8000/wordpress”或者“https://×××××.myds.me:8001/wordpress”。
如果没有公网IP,那也有办法,就是进行内网穿透,这个问题后面来讲。
3.WordPress的访问设置
要成功打开WordPress网站或后台管理页面,还有一个非常重要的因素就是WordPress里网络地址的设定。
WordPress地址(URL)是打开后台管理页面的地址,使用时输入“http://×××××.myds.me:8000/wordpress/wp-admin”,站点地址(URL)是你制作的网站的地址。WordPress设置中这两个地址一定要设置正确,否则即使你在浏览器输入了正确的地址,WordPress也会按这个设置帮你转到设定好的地址上去, 如果设定错误就导致网站无法访问。我一开始设置的时候地址里没有端口号,因为在内网,访问没有问题,等到了外网访问的时候,虽然输入地址时加上了端口号,但因为设置里的地址没有端口号,所以就没有办法访问到网站。
4.别名访问
网站虽然能够访问,但总觉得自己的网站地址里有“wordpress”的字样,一是没有个性,二是也不太想让人一看就知道自己网站的制作工具。但在群晖里又不能随意修改安装路径,真要修改那也是比较复杂的。不过,群晖提供了一个简单的方案,就是使用别名来访问网站。打开“Web Station”,“网页服务门户”里找到“WordPress”,点击编辑,把别名修改为自己喜欢的名字。
假设别名修改为“baidu”,那么网站就可以通过“http://×××××.myds.me:8000/baidu”来访问了。当然,WordPress后台设置里的两个地址也要进行修改,因为别名访问不影响原来名称的访问,如果不修改WordPress后台设置,网站还是能够访问,但地址仍会显示“wordpress”而不是别名“baidu”。
三、申请域名
1.为什么要申请域名
虽然我的家庭宽带有公网IP,在群晖DDNS里申请了一个群晖的二级域名,通过二级域名来访问,但总觉得二级域名不方便,没有一级域名那么高大上,就想着到专门的网站上去申请一个一级域名。如果你的家庭宽带没有公网IP,按目前的形势,要想问运营商申请一个公网IP基本不可能,那就考虑内网穿透,做内网穿透前,先要把域名申请好。在国内申请域名,首选是阿里云或者腾讯云,中文界面,一目了然,配套服务齐全,“.com”“.net”随便挑,明码标价,各取所需。当然,如果不想花钱,也有国外的一些免费域名申请,因为只是作为一个建站尝试,我先申请个免费的试试。
2.在freenom申请.tk免费域名
目前,免费且简洁的一级域名已经不多了,网上多推荐“.tk”,是南太平洋岛国Tokelau的国家顶级域名,申请网址是“https://freenom.com”,该网站提供.tk、.ml、.ga、.cf、.gq等域名后缀的免费注册。网站提供中文服务,但希望英语还行的朋友直接用英文,中文翻译很不到位,英文其实也挺简单。
先注册一个账户,完善个人信息,要注意正确填写电子邮箱和国家、地区等信息,网站会向邮箱发送一些域名到期提醒等邮件,注册完成就可以开始查询你心仪的域名了。
查到可用的域名,就可以进行注册了,我遇到了一个网站bug,明明域名可用,但无法进入下一步,然后尝试在搜索框输入带后缀的全名进行查询,比如“mysitename.tk”,就可以了。
然后按照网页提示一步步完成注册,免费域名默认是3个月,可改为12个月,时间到了再来续期。当然,申请了域名是要用来访问自己的网站的,这里提供了两种访问的方式,一种是转发,前提是你的网站已经有一个域名了。第二种是DNS解析,指向你的固定公网IP地址,如果没有公网IP或者IP不固定,就无法实现,这个地方我考虑使用国内的DNS解析服务,就先搁置一下,回头再来设置。
3.为什么会注册失败?
所有步骤操作完成,最终就可以看到订单信息了,我一开始以为看到订单号,就表明注册成功了,但随后就发现有问题。再仔细看这个订单信息,如果只有上面一段,那说明域名注册成功了。如果还有下面“Attention!”这一段,说明注册过程出了问题,注册失败了。经过分析研究,发现注册失败的原因是我的个人信息登记有问题,在填我所在的国家地区时随便填了其它国家的地方,而freenom网站会通过你上网的IP地址来识别你所在的国家地区,如果跟你在个人信息里面登记的不符,就会导致注册失败。修改好正确的信息,注册成功!
4.购买付费域名
如果像我只是自己学习研究之用,或者在极小的范围内试用,免费域名不会有太大的问题。而网站要投入使用,域名就必须要进行备案,也要宣传推广,免费域名可能会存在一些问题,用户只有免费域名的使用权而无所有权,在某些情况下会被收回,而且像“.tk”这样的其它国家的国家域名,使用在自己的网站上,多少也有些尴尬。如果要正式地做一个网站,建议还是在阿里云或腾讯云注册一个常规的域名。
四、内网穿透
1.内网穿透的基本原理
内网穿透必须要依赖于有公网IP的服务器作为服务端,服务端安装有服务软件,没有公网IP需要内网穿透的主机安装客户软件,或安装集成了软件的网络硬件,在服务端和客户端之间建立起一种特殊的网络联系。在客户端进行必要的设置,主要是通知服务端自己的域名和端口,再通过DNS解析将自己的域名指向服务端,当我们访问域名时,首先访问到了具有公网IP的服务端,然后通过服务端和客户端的连结进行通讯,间接地访问到了我们自已的主机。
内网穿透的服务原理其实比较简单,如果自己有具有公网IP的服务器,也可以自己来做穿透服务,当然,就是因为我们没有公网IP,才需要内网穿透服务。网上有一些知名的内网穿透服务商,但费用是比较高的,因为我们主机的访问都要通过服务端来进行,要占用服务端的带宽,消耗服务端的流量,所以,服务商的服务也是明码标价的,带宽越大,流量越多,使用时间越长,费用就越高。我只是做个建站试验,没必要花那个冤枉钱,就找网上免费的内网穿透服务。
2.使用免费内网穿透服务
在网上找到一个免费的frp内网穿透服务网站,输入网址“freefrp.net”打开网站。
网站不仅提供内网穿透服务,还提供了详细的安装教程,重点阅读了下面两篇教程:
看完教程,就进行实际操作,操作进按教程走就可以了,但还是有几个关键点需要注意一下。
首先,要预先做好配置文件,配置文件的名称是“frpc.ini”,建议用代码编辑器编辑,最好不要用文本编辑器,容易出错。配置文件做好后,上传到NAS的共享文件夹里,建议上传到“/Docker/frpc/frpc.ini”,文件夹没有的就新建。frpc.ini的格式如下:
[common]server_addr = frp.freefrp.net # 服务器IP或者地址,一般不要修改,如果改为其它线路(如frp2),则在配置DNS解析时要保持一致。server_port = 7000 # 服务器提供的端口号,这个不要修改,freefrp的连接端口只有这一个。token = freefrp.net # 服务器提供的token,这个不要修改,这是freefrp连接的密码。[web1_xxxxxx] # 为避免错误,一定需更改为比较特殊的名称,不能和服务器端其他配置重名,保证[]内的名称在freefrp网站上是唯一的。type = http # http协议local_ip = 192.168.1.5 # 填写群晖内网IP。local_port = 5000 # 群晖内网HTTP端口,如果要连接到DSM,默认为5000,如果要连接到WEB网站,改为80。custom_domains = nas.ioiox.com # 填写你的域名,如果前面申请了一级域名,填写刚刚申请好的域名。[web2_xxxxxx] # 这是另外一段协议,填写方法和上一段是一样的。用来配置第二个端口,如果要配置更多端口,则可以再复制一段进行修改。type = https # https协议local_ip = 192.168.1.5 # 填写群晖内网IP.local_port = 5001 # 群晖内网HTTPS端口,如果要连接到DSM,默认为5001,如果要连接到WEB网站,改为443。custom_domains = nas.ioiox.com # 填写你的域名,如果要穿透多个域名,不管是一级还是二级域名,每个域名都需要单独写一段。
其次,使用Docker安装配置frpc客户端。按照教程一步步操作,一般不会太大的问题,需要注意一个地方:在“高级设置”里“添加文件”,“文件/文件夹”这个位置要输入前面上传的frpc.ini配置文件的路径“docker/frpc/frpc.ini”,如果文件上传在其它位置,则按实际填写。装载路径是默认的,不能修改。
最后,就是尝试启动这个客户端,如果不能正常启动或自动退出,要检查frpc.ini的路径填写是否正确,配置文件的内容格式是否有问题,配置文件是否用代码编辑器编辑等,如果不存在这些问题,客户端就能正常启动。
3.内网穿透的问题
内网穿透必须要依赖于具有公网IP的服务器,所有的访问流量都要通过服务器中转,所以访问的稳定性和网速受制于服务器提供的服务,还存在一定的信息泄露风险,所以一定要选择可靠的内网穿透服务商。免费的frp服务质量到底如何,还无法确定。当然,在某宝上也有frp服务出售,几十块钱质保一年,保证带宽和流量,也可以去试试。
五、域名解析
1.申请DNS域名解析
通过内网穿透服务,我们在frp服务器和自己的内网主机之间建立了联系,也申请好了自己中意的域名,现在就要让我们的域名来联结到frp服务器,这就需要DNS解析服务了。前面我们在freenom申请了.tk的域名,freenom也提供免费的DNS解析服务,但考虑到毕竟是国外的服务器,而且freenom提供的免费解析服务也不能满足我们的需要,所以就直接使用我们国内的DNS解析服务。华为云和腾讯云都是很好的域名服务商,都提供域名注册、解析等服务,我选择了腾讯云,也没有什么道理,两家都不错。
打开dnspod.cn网站,注册一个账号,完成实名认证,就可以享受DNSPOD的服务了。打开管理控制台,添加前面申请到的×××××.tk域名,网站就会告诉我们提供DNS解析的服务器名称。
因为我是在freenom申请的域名,默认应该由freenom来提供DNS解析服务,现在要让DNSPOD来进行解析,必须得跟freenom说一声,否则就会有问题。那就登录freenom,选择要设置的域名,在“Manage Freenom DNS”选项卡下填上腾讯云DNS服务器的名称,保存即可。
2.添加解析记录
DNS解析的方式有多种,其中“A”记录是最常见的方式,就是将域名指向一个固定IPv4地址,“CNAME”记录是将域名指向另外一个域名。因为我们需要将域名指向frp服务器的域名“frp.freefrp.net”,所以我们要来添加一条“CNAME”记录。
主机记录默认是“@”,指的是一级域名,也可以解析二级域名,如“www.”等,如要解析多个二级域名,需要逐条添加多个记录。这里的主机记录(×××××.tk)和域名(frp.freefrp.net)要和前面编辑的内网穿透frpc.ini配置文件里面的设置完全一致,否则无法实现域名解析和内网穿透。添加好解析记录,网站会告诉我们将把记录发送到各运营商服务器,需要一点时间,但在正常情况下,马上就可以实现解析了。DNSPOD还提供了免费的SSL证书服务,也可以在这里申请免费证书。
3.修改WordPress设置
现在,我们让域名指向了frp服务器,frp服务器又通过内网穿透和我们的内网主机联结起来,我们在外网通过域名就间接地访问到了在内网主机上的WordPress网站。这时,我们还要修改一下WordPress网站地址的设置,WordPress地址(URL)和站点地址(URL)都修改为“http://×××××.tk/wordpress”,这样才能保证网站的正常打开。因为frp服务器开放了80和443端口,所以我们访问网站不再需要添加端口号了,虽然我有公网IP,但通过内网穿透和DNS解析,把二级域名替换成了一级域名,也省略了端口号,网站地址大大地简化了。
六、进一步提升使用体验
1.进一步简化网址
现在,我们的网站地址已经比较简化了,但能不能更加简化一下,用“http://×××××.tk”来直接访问呢?这个就比较简单了,只需要到群晖的Web Station里去设置一下。
在“网页服务门户”里点击“新增”,选择“套件服务器门户”,选择“WordPress”,在主机名中填上我们的域名,其它不要修改,保存即可。
设置好了以后,还是要进入WordPress后台,修改两个地址(URL)为“×××××.tk”,这样我们的WordPress网站就只需要“http://×××××.tk”就可以访问了,其实简单点输入“×××××.tk”也可以,我们的网站一下子就变得高大上了。当然,有一利必有一弊,现在×××××.tk就变成了WordPress网站的专用域名,不能用来访问群晖的其它服务了,不过,我们还可以再去freenom申请一个免费的域名,然后在frpc.ini配置文件里添上几段,到DNSPOD添加好DNS服务,就可以实现对群晖其它服务的访问了。
2.还有问题需要解决
做到这一步,原以为圆满地解决了所有的问题,但打开WordPress后台后,发现网页上有错误警告,打开“工具”-“站点健康”查看状态,错误应该是系统无法将文件写到文件夹里去,估计是权限出了问题。
再点开“信息” 确认,确实是文件夹写入权限的问题。
在网上查找这一问题的解决办法,解决方案多种多样,但都非常烦琐,也尝试了几种方法,没有效果,但基本确认是用户和用户组的权限问题。最后还是回到群晖的文件夹设置来看看吧,打开File Station,找到“web_packages/wordpress”文件夹,右键“属性”-“权限”,发现http用户和http用户组的权限都是“读取”,会不会这个问题?那就来修改试试,全部改为“读取&写入”,应用到子文件夹,“保存”。回到WordPress后台,错误消失,问题解决。
另外,我们在修改网站地址的时候,建议在内网中进行操作,因为WordPress网站地址的设置会影响到网站能否正常访问,内网中操作可以方便地打开WordPress后台,及时修改网站地址。
3.终于完工了
这一次的建站体验,涉及到了几个方面的专业知识,但不想搞得太专业,建站过程中尽量使用最简单的方法,相关软件也尽量使用群晖自带的套件,经过努力,最终实现了貌似较完美的结果。当然,网站要投入使用,特别是要商用的话,这种建站方法就无法满足使用需求了,这种建站方法仅限于自娱自乐。一次建站的尝试,也是一次学习的过程,将体验记录下来和大家分享。可能有更好或更简便的方法来解决我所遇到的问题,可能文中还有一些错误,敬请批评指正。
来源地址:https://blog.csdn.net/weixin_56957163/article/details/126909346
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341