倚楼听风雨
淡看江湖路

记一次网站迁移全过程,单服务器单 IP 双域名搭建 lnmp 架构实现 WordPress 与 Discuz! 并存

最近给网站做了迁移,由于经验比较少,所以踩了很多坑,觉得网络上众多大佬没有几个认真对待这件事情的,写的都比较马马虎虎,也可能是大佬就是大佬,师傅领进门,修行在个人。不过对于老四这样的人喜欢详尽一点教程,便于日后复盘,所以特此记录一下,也希望能帮助一些和我有同样的需求的人吧。

背景

由原先的 lamp 架构单站点转为 lnmp 架构下的双站点,单 ip 利用 Nginx 实现 WordPress 和 Discuz! 共存。关于单站点 lamp 架构的搭建老四之前写过一篇教程,可戳《lamp搭建全流程,摆脱一键安装包 建站参考》参考。

需求

在单台服务其下部署两个项目类型的网站,一个是 WordPress,一个是 Discuz! 论坛,而且要分别配置两个不同的域名实现访问,但要求服务器只用一个 ip 地址。

为新的服务器配置用户、用户组以及设置 sudo 权限

老四用的是新的 CentOS7 64 位服务器纯净版,初始化只有一个 root 用户,使用 root 用户来做任何事情都是不好的行为,所以尽量不要使用 root 用户。另外多提一嘴,我劝你们尽量不要使用市面上出现一些「lnmp一键安装包」,不好维护、设置不自由、无用的模块东西比较多、内存占用比较大等等缺点都不如自己动手搭建来的切实际,并且有一种掌控欲,还增加自己的实操经验。以后优化以及维护可能都会给我带来挑战,但也给我们带来成长和经验,这是最重要的。如果你懒得折腾,那就请尽情的用,只不过那里的采坑不比自己手动少多少。

一、先添加用户组

查看现有的用户和用户组

添加用户组

二、添加用户到组

设置修改密码,之后才能 SSH 登陆

三、设置 sudo 权限

修改:

这样就可以了,然后可以使用 su 命令从root 用户切换到新增的用户。

安装 Nginx

一、首先关闭 SELinux

将配置文件中的「SELINUX=enforcing」改为 「SELINUX=disabled」

二、安装 Nginx 编译依赖库

我使用的是编译安装的方式安装 Nginx,没有采用 yum 安装,因为这种方式我觉得我可以集中管理 Nginx 的安装位置,设置你可以自定义配置。yum 的方式这里不介绍。

在安装之前,Nginx 需要一些依赖库,作为一台纯净版的服务器肯定是没有的,所以需要安装一下。一共四个,执行下面这四条命令即可。

三、编译安装 Nginx 1.16.0

这里注意一下,我安装的时候使用的是默认的配置,也就是「sudo ./configure」,安装完毕后 Nginx 会安装在 /usr/local/nginx 路径下面。如果你想高度自定义配置,可以使用「./configure –help」看看都有哪些命令,然后自定义按需执行即可。

四、安装完毕之后一些常用的维护命令

安装完成后,浏览器访问你服务器的 ip 地址,不出意外的话都会看到欢迎页,代表你已经安装成功了。

分享一些比较常用的 Nginx 维护命令

这里说一下关于 Nginx 中 quit 和 stop 两个命令的区别:

  • quit:此方式停止步骤是待 Nginx 进程处理任务完毕进行停止,也就是平滑的停止进程。
  • stop:此方式相当于先查出 Nginx 进程号然后再使用 kill 命令强制杀掉进程,也就是不管不顾直接杀死 Nginx 进程

所以,基于以上的区别,重启 Nginx 服务器比较推荐的方式即先执行 quite 停止命令平滑停机然后再执行启动命令

另外,Nginx 的配置文件修改之后不需要使用重启服务器的方式,可以上面 reload 命令即可,代表重新加载配置文件。

安装 PHP

老四使用的是 PHP 5.6.40 版本。

一、配置 Centos 7 下的 PHP 安装源

二、按需安装 PHP 以及 PHP 模块

这里说明一下,有很多 PHP 模块是我们建站不需要的,所以没必要装,我就是我需要使用哪个就用哪个,如果你到这里也有对应的一些需求,查找对应的模块按需安装即可。说明一下我安装的这些模块分别是用来干嘛的。

  • php 这肯定是要安装的了
  • php-mysql php用来连接的 MySQL 的,必须安装
  • php-mcrypt 负责加解密的,我是在我的 WP 站下载栏需要用到这个库
  • php-fpm 用来管理 PHP的,必须安装
  • php-devel PHP的开发扩展,如果以后想编译安装一些所需要的模块扩展,需要用到这个依赖库。
  • php-gd* PHP的图像处理库,我在使用验证码的时候需要用到这个库
  • php-xmlrpc Discuz! 需要 xml 解析库
  • opcache php 5.5之后自动加了 opcache 模块提高程序性能,默认关闭,自行搜索资料打开即可
  • phpmyadmin 管理 MySQL 的界面工具,可以根据建议来对你的业务数据库进行优化。
  • mbstring phpmyadmin 要求必须添加的模块,一起安装上

三、配置 PHP 开机启动服务

四、查看版本以及是否安装启动成功

五、另外,如果你想要安装高版本,比如说 php 7.3 版本,其实变化跟上面没太区别,就是需要在 remi-php56 命令修改为 remi-php73 即可。如下:

安装 MySQL 5.7

我之前用的是 MySQL 5.6,但是操蛋的是总出现 mysql.sock 丢失的问题,这回换 MySQL 5.7 看看有没有同样的问题出现。关于 mysql.sock 丢失的问题可以参考一下老四的《如何彻底解决mysql.sock(Can’t connect to local MySQL server through)丢失的问题?非网上各种瞎哔哔的解决方式》这篇文章。

一、yum 源安装 MySQL 5.7

二、安装完毕后启动 Mysql 服务

三、设置开机启动

四、修改 root 本地登录密码

MySQL 5.7 及以上版本安装完成之后,会在 /var/log/mysqld.log 文件中给 root 用户生成了一个临时的默认密码。去那里找到那个临时密码,我就不截图了。然后用这个密码登陆 MySQL,修改密码并设置远程连接权限。这里注意一下,我的示例用了 root 用户进行了远程连接,在建站部署的时候尽量建立普通用户来进行数据库的管理,安全规范要做好,并且尽量设置一下远程连接的白名单,而不是使用通配符「%」将权限放开。

五、打开防火墙 3306 端口

关于 firewall 命令是 CentOS 7 之后新出的命令,取代了之前的 iptables,更多信息可以参考一下老四的《常用Linux命令操作集(CentOS) 持续更新》文章。

六、设置 MySQL 数据库编码

我们基本都用 UTF-8,所以尽量都记得修改一下。修改 /etc/my.cnf 配置文件,在 [mysqld] 下添加编码配置,如下所示:

然后重启 MySQL 服务。

以上,lnmp 这样的结构我们基本就安装搭建完毕了。接下来简单的介绍一下部署 WordPress 和 Discuz! ,主要是说一些部署这两个项目需要在 Nginx 中的一些相关配置,就是应题如何在单服务器单 IP 双域名搭建 lnmp 架构实现 WordPress 与 Discuz! 并存。

配置 Nginx 配置文件实现双目共存

Nginx 安装完毕之后,默认的项目位置是 /var/www 下面,然后可以建立两个目录,分别放入 WordPress 和 Discuz! 安装程序包,至于这些程序的安装与部署我就不细讲了。这里最关键的是 Nginx 的配置,基本上所有的配置都在 /usr/local/nginx/conf 里面,打开 nginx.conf,在 http 模块里面配置两个 server,配置如下:

以上就是两个项目的 Nginx 配置,着重看一下关于 WordPress 重写规则的配置,因为 lnmp 架构下需要在 Nginx 中配置重写规则,重写规则其实就是伪静态,如果是 lamp 架构是在 PHP 和 Apache 中的「.htaccess」中配置的。关于这一点,尤其是从 Apache 转到 Nginx 上,这个配合网上很多写的都是错的,会导致管理员从前端页面进入后台无限循环重定向的问题。最后老四找到几个完美的配置,供你参考一下,上面的也是正确的,此外还有如下:

最后,老四发现了一个 Apache 重写规则与 Nginx 重写规则互相转换的在线地址,这里小小的推荐一下,不过没那么好用的,还是我上面推荐的两个写法好用。

还有一点,就是可以建立一个 vhosts 目录,里面配置两个conf,然后分别配置 server,然后在 http 模块中 include 这两个文件。我没采用这种方式是因为就两个 server,没必要。还有就是将默认的 server 配置注视掉。

好了,重要的一些点也就这么多了,如果实操还是遇到很多问题,可以看看下面的这个常见问题汇总,另外也可以留言或者加入官方交流群一起交流。

常见问题汇总

一、在安装的 PHP 的过程中,由于网络的原因,可能执行「sudo yum install epel-release」的过程中发生网络错误无法安装,可以尝试一下 yum update 并重新安装 epel-release。

二、如何彻底的卸载 PHP 然后进行重新安装?

三、重启网络服务的命令

四、查看某个 PHP 模块的信息以及查看当前 PHP 安装了那些模块扩展

五、如何彻底卸载 CentOS 上的 MySQL?

基于 yum 安装 MySQL 卸载:

更博不易,如果觉得文章对你有帮助并且有能力的老铁烦请捐赠盒烟钱,点我去赞助。或者扫描文章下面的微信/支付宝二维码打赏任意金额(点击「给你买杜蕾斯」),也可扫描小站放的支付宝领红包二维码,线下支付享受优惠的同时老四也可以获得对应赏金,老四这里抱拳谢谢诸位了。捐赠时请备注姓名或者昵称,因为您的署名会出现在赞赏列表页面,您的捐赠钱财也会被用于小站的服务器运维上面,再次抱拳感谢。

赞(22) 给你买杜蕾斯
本站原创文章受自媒体平台原创保护,未经允许不得转载高老四博客 » 记一次网站迁移全过程,单服务器单 IP 双域名搭建 lnmp 架构实现 WordPress 与 Discuz! 并存

开始你的表演 2

  1. #1

    非常详细的教程

    里维斯社5年前 (2019-05-30)回复
    • 后期还会优化并加一些内容

      Glorze5年前 (2019-05-30)回复

觉得文章有用就打赏一下老四,鼓励我更好的创作

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

登录

找回密码

注册