迁移博客到新的服务器的具体过程
这几天用了新的服务器,经过一番折腾,成功把博客迁到新的服务器上。下面记录一下这次的迁移过程,供以后参考。
1. 打包老的服务器上的文件和数据库。以下命令是在老的服务器上操作的。
服务器上的wordpress是安装在/home/www/blog里面的,所以采用下面的命令打包这些文件:
# cd /home/www
# tar zcf /home/fengling/blog.tar.gz blog/
这样就把网站源文件和附件都打包到了 /home/fengling/blog.tar.gz 这个压缩包里面了。
之后,用下面的命令,备份MariaDB的数据库:
# mysqldump -uroot -pmypassword tyf0 > tyf0.sql
这样就备份好了数据库文件,也放在 /home/fengling/目录下面。
2. 在新的服务器上,把老服务器上打包好的文件用scp命令下载到新服务器:
# scp -P 33288 [email protected]:/home/fengling/blog.tar.gz ~
# scp -P 33288 [email protected]:/home/fengling/tyf0.sql ~
上述命令中-P后面跟的是老服务器的ssh端口。
这样就把老服务器上的备份好的文件,都转移过来了。
3 在新的服务器上,安装nginx+php+MariaDB环境:
新服务器装的是Debian 11的系统,使用下面的命令进行安装:
# apt install curl unzip
# apt install nginx php-gd php-curl php-fpm php-imagick php-zip php-intl php-sqlite3 php-mbstring php-mysql php-xml mariadb-server
安装完之后,就要进行配置了。
3.1 配置新服务器的MariaDB:
# mysql_secure_installation
# mysql -uroot -p
> create database tyf0;
> use tyf0;
> create user ‘mywpuser’@’localhost’ identified by ‘mypassord’;
> GRANT ALL ON tyf0.* TO ‘mywpuser’@’localhost’;
> FLUSH PRIVILEGES;
> exit
以上就完成了MariaDB的配置,还添加了一个mywpuser的用户,以及tyf0的数据库,用于新服务器上的博客。
3.2 配置php:
此时新服务器上安装的是php7.4。下面是配置过程:
# vi /etc/php/7.4/fpm/pool.d/www.conf
查看里面有一行:listen /var/run/php/php-fpm.sock,此行内容要与下面的nginx配置文件中的相匹配,同时看看系统文件是否有。
3.3 配置新服务器的nginx,并安装设置acme.sh,配合cloudflare来配置并自动更新SSL证书:
# cd /etc/nginx/sites-available/
# cp default tyf0.com
# vi tyf0.com
此文件改成如下内容:
server {
listen 80;
listen [::]:80;
listen 443 ssl;
listen [::]:443 ssl;
root /home/www/blog;
index index.php index.html index.htm;
server_name tyf0.com www.tyf0.com;
access_log /var/log/nginx/tyf0.com.access.log;
error_log /var/log/nginx/tyf0.com.error.log;
ssl_certificate /etc/nginx/cert/fullchain.cer;
ssl_certificate_key /etc/nginx/cert/private.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
if ($host !~* ^(www|subdomain)) {
rewrite ^/(.*)$ $scheme://www.$host/$1 permanent;
}
if (!-e $request_filename) {
rewrite ^(.+)$ /index.php?q=$1 last;
}
# pass PHP scripts to FastCGI server
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
下面安装acme.sh,并配合cloudflare 来自动配置和更新SSL证书:
首先登陆cloudflare,在 https://dash.cloudflare.com/ 下的域名列表,点tyf0.com,之后查看右下角的API区域,其中有区域 ID (就是CF_Zone_ID) 和帐户 ID (就是CF_Account_ID)。复制下之后,点击下面的“获取您的API令牌”,之后点“创建令牌”,使用“编辑区域 DNS”的模板,权限是编辑区域DNS,区域资源就是域名 tyf0.com,客户端IP筛选,就填写仅用于新的服务器的IP地址。最后把获得的API令牌(就是CF_Token)保存下来。
下面把这些信息,写入到~/.bashrc文件:
export CF_Token=””
export CF_Account_ID=””
export CF_Zone_ID=””
然后用命令 # source ./bashrc 使之生效。
接着下载并安装acme.sh:
# curl https://get.acme.sh | sh -s [email protected]
申请SSL证书,申请成功会放在家目录中:
# ~/.acme.sh/acme.sh –issue -d www.tyf0.com –dns dns_cf
安装申请好的证书:
# mkdir -p /etc/nginx/cert
# ~/.acme.sh/acme.sh –install-cert -d www.tyf0.com \
–key-file /etc/nginx/cert/private.key \
–fullchain-file /etc/nginx/cert/fullchain.cer \
–reloadcmd “systemctl force-reload nginx.service”
4 导入和恢复之前从老服务器下载的网站文件和数据库:
恢复之前的网站文件:
# tar zxvf blog.tar.gz
# mkdir -p /home/www
# mv blog/ /home/www/
# chown -R www-data:www-data /home/www
导入备份的数据库文件:
# mysql -umywpuser -pmypassword tyf0 < tyf0.sql
5 最后,在cloudflare里设置域名DNS,把A记录指向新服务器IP。最后执行以下命令,大功告成:
# systemctl enable nginx
# systemctl enable php7.4-fpm
# reboot