关于博客迁移至 Linux 服务器上的那点事

之前就有把服务器换成 linux 的想法,但因为比较忙(lan),所以一直拖着。前几天终于狠下心来,把原有的服务器更换成 linux 系统,把自己的退路断了。当然在更换前,该备份的都已经备份好了。

大概的流程主要参考这三篇文章,有些地方修改下即可:

手动部署 LNMP 环境(CentOS7)
手动搭建 WordPress(CentOS7)
WordPress 搬家方法总结:迁移主机和更换域名

1、备份

我是使用第三篇文章中的 All-in-One WP Migration 进行博客数据的搬迁,傻瓜式操作,比较方便。各位可以选择自己熟悉的方法,只要能保证数据正确即可。

2、PHP 和 WordPress 版本问题

文章中所使用的 PHP 版本是7.0,在我的 WordPress 安装完成后会有不安全的提示,且默认安装的 WordPress 是英文版,且无法在后台切换成中文,所以这两步进行些修改。

使用 PHP 7.2:

yum -y install php72w-devel php72w-cli.x86_64 php72w-common.x86_64 php72w-gd.x86_64 php72w-ldap.x86_64 php72w-mbstring.x86_64 php72w-pdo.x86_64 php72w-mysqlnd  php72w-fpm php72w-opcache php72w-pecl-redis php72w-pecl-mongodb

至于 WordPress,可以去官网上下载最新的中文压缩包,尝试过在 wp-config.php 文件中 加上 define('WPLANG', 'zh_CN'),但并没有看到更新提示,如果可以请忽略这步。

# 解压文件
tar xfvz xxx.tar.gz
# 进入压缩后的文件夹
cd wordpress
# 复制一份 wp-config.php
cp wp-config-sample.php wp-config.php

之后把解压的文件拷贝或剪贴到对应的位置即可

3、nginx https 配置

    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  xxx.com;       # 域名
        return 301 https://xxx.com$request_uri;     # 强制https
        root         /usr/share/nginx/html/wordpress;   # 网站目录

        location / {
            index index.php index.html index.htm;
            if (-f $request_filename/index.html){
            rewrite (.*) $1/index.html break;
            }
            if (-f $request_filename/index.php){
            rewrite (.*) $1/index.php;
            }
            if (!-f $request_filename){
            rewrite (.*) /index.php;
            }
        }

        location ~ .php$ {
            root /usr/share/nginx/html/wordpress;   # 网站目录
            fastcgi_pass 127.0.0.1:9000;   #Nginx通过本机的9000端口将PHP请求转发给PHP-FPM进行处理
            fastcgi_index index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include fastcgi_params;   #Nginx调用fastcgi接口处理PHP请求
        }

    # https 设置
    server {
        listen       443 ssl http2 default_server;
        listen       [::]:443 ssl http2 default_server;
        server_name  xxx.com;       # 域名

        root /usr/share/nginx/html/wordpress;   # 网站目录
        index index.php index.html;
        ssl_certificate xxx.pem;    # 网站证书
        ssl_certificate_key xxx.key;# 网站密钥
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout 10m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;

        location / {
            if (-f $request_filename/index.html){
                    rewrite (.*) $1/index.html break;
                }
                if (-f $request_filename/index.php){
                    rewrite (.*) $1/index.php;
                }
                if (!-f $request_filename){
                    rewrite (.*) /index.php;
                }

        }

        location ~ .php$ {
            root /usr/share/nginx/html/wordpress;   # 网站目录
            fastcgi_pass 127.0.0.1:9000;   #Nginx通过本机的9000端口将PHP请求转发给PHP-FPM进行处理
            fastcgi_index index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include fastcgi_params;   #Nginx调用fastcgi接口处理PHP请求
        }
    }

配置完成后重启 nginx 即可

4、文件权限问题

在安装插件时,可能会提示 “要执行请求的操作,WordPress需要访问您网页服务器的权限”,并要求输入 FTP 账号密码,这是由于文件夹的权限和用户的问题导致的。

修改 wp-config.php 文件,添加配置

define("FS_METHOD", "direct");
define("FS_CHMOD_DIR", 0777);
define("FS_CHMOD_FILE", 0777);

修改文件夹权限

chown -R www /usr/share/nginx/html/wordpress    # 授予用户权限
chmod -R 775 /usr/share/nginx/html/wordpress    # 授予文件权限

如果提示 www 用户不存在的话,则需要先创建用户和用户组

# 查看 www 用户
id www
# 用户不存在
id: www: no such user
# 添加 www 用户组
groupadd www
# 添加 www 用户
useradd -g www -s /sbin/nologin www
# 查看 www 用户
id www
# 用户存在
uid=1002(www) gid=1002(www) 组=1002(www)

记得在 WordPress 后台将站点地址更改为自己的域名。
至此,博客就顺利搬迁完成了。

  • 用支付宝打我
  • 用微信打我

Long may the sunshine

发表评论

电子邮件地址不会被公开。 必填项已用*标注

召唤蕾姆