记录基于腾讯云服务器的Typecho博客迁移
in 大杂烩 with 0 comment

记录基于腾讯云服务器的Typecho博客迁移

in 大杂烩 with 0 comment

前段时间腾讯云的三年服务器提示还有7天到期,于是便到腾讯云上选购服务器了。有直接续费的,我的最低配1200+三年,直接续费是最简单的,但是后来在活动页面购买了3年的服务器500+RMB。我这次迁移的是基于PHP Typecho框架的Pinghsu主题博客系统。

旧服务器数据迁出

登录旧服务器,针对Typecho框架博客我们需要备份的数据有:

  1. MySQL对应的数据库数据:使用命令mysqldump -uroot -p --all-databases > db.sql(或者--all-databases改成对应的数据库名即可),将导出的sql文件存到本地;
  2. 主程序:复制/home/wwwroot下,也就是Typecho所在的主目录,复制出来(里面包含了typecho的程序、配置,Pinghsu主题,以及百度爬虫)
    ​​​​1.png
  3. nginx的配置:到/usr/local/nginx/conf,备份nginx.conf、SSL证书(如果有的话)。

购买腾讯云服务器

活动页面:云产品回馈专场_云产品特惠_云产品活动-腾讯云,这种活动一般常年都有的。
2.png

购买后,我直接选择了预装好的LNMP镜像,这样就不用自己安装PHP、MySQL、Nginx。
3.png

旧数据迁移到新服务器

nginx ssl配置

打开新服务器,将nginx的配置以及SSL证书(两个),复制到新服务的/usr/local/nginx/conf下,然后重启nginx即可。
我这里加上了80端口转发到443,也就是都是https访问,如果没有SSL证书,可以直接到腾讯云进行一年有效期的SSL证书申请(到期也直接申请替换原SSL证书即可),我的nginx的配置文件如下:

 user  www www;

 worker_processes auto;

 error_log  /home/wwwlogs/nginx_error.log  crit;

 pid        /usr/local/nginx/logs/nginx.pid;

 # Specifies the value for maximum file descriptors that can be opened by this process.
 worker_rlimit_nofile 51200;

events
  {
    use epoll;
    worker_connections 51200;
    multi_accept on;
  }

  http
  {
    include       mime.types;
    default_type  application/octet-stream;

    server_names_hash_bucket_size 128;
    client_header_buffer_size 32k;
    large_client_header_buffers 4 32k;
    client_max_body_size 50m;

    sendfile   on;
    tcp_nopush on;

    keepalive_timeout 60;

    tcp_nodelay on;

    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 64k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 256k;  

    gzip on;
    gzip_min_length  1k;
    gzip_buffers     4 16k;
    gzip_http_version 1.1;
    gzip_comp_level 2;
    gzip_types     text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss;
    gzip_vary on;
    gzip_proxied   expired no-cache no-store private auth;
    gzip_disable   "MSIE [1-6]\.";

    # limit_conn_zone $binary_remote_addr zone=perip:10m;
    # # If enable limit_conn_zone,add "limit_conn perip 10;" to server section.

    server_tokens off;
    access_log off;
    # rewrite ^(.*) https://$host$1 permanent;
    
    server
    {
        listen 443 default_server;
        ssl on;
        # listen [::]:80 default_server ipv6only=on;
        server_name richule.com www.richule.com;
        ssl_certificate 1_www.richule.com_bundle.crt;
        ssl_certificate_key 2_www.richule.com.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # 按照这个协议配置
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;# 按照这个套件配置
        ssl_prefer_server_ciphers on;
        index index.html index.htm index.php;
        root  /home/wwwroot/richule;
        # error_page   404   /404.html;

        # Deny access to PHP files in specific directory
        # location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }

        include enable-php-pathinfo.conf;

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }

        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }

        location ~ /.well-known {
            allow all;
        }

        location ~ /\.
        {
            deny all;
        }

        access_log  /home/wwwlogs/access.log;
    }
    server {  
        listen 80;  
        server_name www.richule.com richule.com;
        rewrite ^(.*)$  https://$host$1 permanent;  
    }  
    server {  
        listen 80;  
        server_name v.richule.com;
        index admin.php;
        root  /home/wwwroot/richule/usr/admin/;
        # error_page   404   /404.html;

        # Deny access to PHP files in specific directory
        # location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }

        include enable-php-pathinfo.conf;

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }

        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }

        location ~ /.well-known {
            allow all;
        }

        location ~ /\.
        {
            deny all;
        }

        access_log  /home/wwwlogs/access.log;
    }  

include vhost/*.conf;
}

恢复MySQL数据

将第一步导出的sql文件上传到新服务器,直接进入到数据库,source恢复。

mysql -u root -p
mysql>use 数据库
#然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
mysql>source /home/wwwroot/bushu/db.sql

恢复主程序

将第一步备份的程序复制到新服务器的/home/wwwroot/下,此时直接访问新服务器的IP,会出现typecho第一次运行的安装部署界面,一步步操作设置即可,可以参照博客:Typecho博客转移服务器,数据备份. - 简书 (jianshu.com)
4.png
最后点击使用原有数据即可。

修改域名指向

到这里,已经可以使用域名访问新的服务器的博客,如果有域名,记得到域名解析处,修改指向,修改保存后,过几分钟即可通过域名访问到新的服务器。5.png

Responses