前景

现在越来越多的服务对 linux 的包容性更好一些。而 windows 相对来说安全性、性能等都赶不上 linux。当前我去使用 linux 作为服务器操作系统已经是必然之选。CentOS 一直是作为主要的 linux 服务器的首选。所以这次,我直接把阿里云上的实例换了。



操作

今天将网站进行了整体迁移。主要的一些操作如下:

  • 备份原网站。
    • 由于我的这个网站的内容非常的少,所以直接使用的 wordpress 自带的博客导出功能。导出为一个 xml 文件。
  • 由原来的 Windows 服务器改为 CentOS 服务器。
    • 直接在阿里云停止服务器,然后更改实例,选择 CentOS。
  • 由 IIS 向 Nginx 迁移。
    • 在 CentOS 中使用命令 yum install nginx -y 即可安装 nginx。
  • 由 http 向 https 迁移。
    • 在腾讯云SLL证书中,申请一个免费的证书
    • 上传至服务器的目录。我上传到了 /etc/nginx/ssl 中
    • 在配置中配置对应的证书,代码见下方配置处。

迁移过程中产生了一些问题。例如:

  • 如何在 CentOS 中安装 php7
  • 如何使用 Nginx php
  • 如何使用 Nginx https
  • 如何使 wordpress 拥有文件夹操作权限
    • 需要在 /etc/php-fpm.d/www.conf 中查看当前使用的 user 是谁
    • 然后更改 wordpress 根目录在权限
      • 命令为:sudo chown -R nginx:nginx ./

Nginx 的主要操作如下:

  • 在文件夹 /etc/nginx/conf.d/ 下新增配置文件 www.taliove.com.conf,具体内容见下方
  • 使用命令 systemctl restart nginx 重启 Nginx 服务。

Nginx 优化

观察发现,每个页面加载耗时非常的长。基本上在4~5秒左右。一般网站的耗时在1秒左右是较好的。超过了就难以接受。在www.taliove.com.conf配置中开启gzip的支持:

开启后发现,文章加载耗时降至1.3秒左右。首页也在这个时间范围。排查问题,发现字体消耗是的时间是较多的。接下来主要优化一下字体、图片的加载,其实也就是静态资源的加载,以及数据加载的问题。之后会引入 CDN。这样静态资源加载时间会更快一些。但是数据加载这里,暂时内存不太够用,不然也可以引入使用内存缓存机制。

php-fpm 优化

优化进程数

经过几天的观察,发现服务器的内存经常爆满。通过命令top查看占用情况,发现CPU的占用并不高。但php-fpm占用的大量的内存。查阅了一些资源,针对php做出如下优化。

修改文件/etc/php-fpm.d/www.conf的如下设置处:

pm.max_children值为50,每一个进程占用1%-2.5%的内存,加起来就耗费大半内存了,所以我们需要将其值调小,博主这里将其设置为25,同时,检查以下两个属性:

  1. pm.max_spare_servers: 该值表示保证空闲进程数最大值,如果空闲进程大于此值,此进行清理
  2. pm.min_spare_servers: 保证空闲进程数最小值,如果空闲进程小于此值,则创建新的子进程;

这两个值均不能不能大于pm.max_children值,通常设置pm.max_spare_servers值为pm.max_children值的60%-80%。

最后,重启php-fpm:

参考文章:http://blog.codingplayboy.com/2017/11/30/linux_php-fpm_memory_problem/

优化MariaDB

修改/etc/my.conf.d/server.cnf

参考文章:
https://linux.cn/article-5730-1.html

优化wordpress性能

Redis缓存的添加,以减少数据库查询的次数。实验证明,启用缓存后,数据库查询从20多降至个位数。

启用Opcache

在php7中启用Opcache可以极大的增强性能。实验证明,启用后,数据库查询由原来的200多毫秒降至十位数级。

Swap

交换空间的配置

由于使用的是阿里云最低配置的主机。内存只有1G。一会儿就使用完了。特别是使用 mysql 后,基本上数据库以后 Out of memory 后,内存就只剩下几十兆了。所以我们需要分配一下交换空间。

使用swapon命令可以检查系统是否已经配置过swap,这是一个通用的swap工具。使用-s标签可列出当前存储设备上的swap使用情况:

我们也可以使用 free -m 来查看剩余内存。其中会有交互空间的显示。接下来快速执行如下一系列操作即可:

参考文章:https://blog.csdn.net/zstack_org/article/details/53258588

结尾

这些问题也都一一解决。最终效果还是不错的。使用 CentOS + Nginx + https增强整体网站的性能与安全性。

所有的访问都会重定向至 https://taliove.com ,这样的链接看起来更简洁一些。