wordpress 博客迁移到新的服务器上,其实很简单,整机迁移便可,将数据库、wordpress博客文件打包压缩后,在新的服务器上启用就行了。但中间有一些细节,好比新采购的阿里云服务器,空机器,啥也没有,须要搭建 wordpress 的运行环境,对 php 等运行原理不怎么熟悉的人来讲,浪费的不少时间。php
需求以下,域名 abc.com 原来采用 https://www.hostinger.com.hk/ 的年费主机,以前采用的缘由是方便,集成了 wordpress 环境,直接在后台页面操做就能够,关键是便宜些,比起国内的厂商便宜不少。hostinger有免费的主机, 推荐对速度性能要求不高的人来用一下。 如今打算将 abc.com 对应的博客迁移到阿里云上,购买的阿里云 ecs 服务器,空盘 centos 6.8 ;其实初始化时候能够直接从云市场购买 wordpress 的服务,不事后来才知道。html
搭建 wordpress 的运营环境,咱们知道 wordpress 是用 php 写的,因此很天然的想到 lnmp 架构,好在 lnmp 搭建很方便,https://lnmp.org/ 按照说明安装便可,等待时间看网络状况了,我大概是20分钟左右。 这里提一下 lnmp 安装后软件都去了哪些目录: https://lnmp.org/faq/lnmp-sof...mysql
Nginx:/usr/local/nginx/nginx
MySQL:/usr/local/mysql/git
MariaDB:/usr/local/mariadb/sql
PHP:/usr/local/php/数据库
PHPMyAdmin:/home/wwwroot/default/phpmyadmin/apache
默认虚拟主机网站目录:/home/wwwroot/default/centos
Nginx日志目录:/home/wwwlogs/api
Nginx主配置文件:/usr/local/nginx/conf/nginx.conf
MySQL/MariaDB配置文件:/etc/my.cnf
PHP配置文件:/usr/local/php/etc/php.ini
PHP-FPM配置文件:/usr/local/php/etc/php-fpm.conf
PureFtpd配置文件:/usr/local/pureftpd/etc/pure-ftpd.conf
Apache配置文件:/usr/local/apache/conf/httpd.conf
lnmp 搭建好后,php、nginx、mysql 都已经起来好了,在原主机 hostinger 后台进行备份 db 和网站文件,下载对应的 zip 包,下载后上传到新的阿里云 ecs 上面,能够采用 scp 、rz、或者其它的 ssh 工具等。
我安装的是 mariadb ,登陆 : /usr/local/mariadb/bin/mysql -u root -p
,输入安装时数据库的密码便可进入:
[tester@ixirong bin]$ /usr/local/mariadb/bin/mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 756 Server version: 10.1.23-MariaDB Source distribution Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. # 建立数据库,执行导出的 sql 文件,便可恢复网站数据 MariaDB [(none)]> create database testdb; Query OK, 1 row affected (0.00 sec) MariaDB [(none)]> use testdb; Database changed MariaDB [testdb]>source /home/tester/abc.com.sql
wordpress 备份恢复很简单,将原有 hostinger 主机上 public_html 目录下全部文件zip 包,拷贝到 ecs 虚拟机上面,解压缩便可,我放到了目录 /home/tester/public_html
下面了。
-rw-r--r-- 1 u783329617 u783329617 418 Sep 17 2016 index.php -rw-r--r-- 1 u783329617 u783329617 19935 Aug 5 08:03 license.txt -rw-r--r-- 1 u783329617 u783329617 6956 Aug 5 08:03 readme.html -rwxrwxrwx 1 u783329617 u783329617 42385 Aug 4 22:42 sitemap_baidu.xml -rw-r--r-- 1 u783329617 u783329617 5447 Aug 5 08:03 wp-activate.php drwxr-xr-x 9 u783329617 u783329617 4096 Sep 17 2016 wp-admin -rw-r--r-- 1 u783329617 u783329617 364 Sep 17 2016 wp-blog-header.php -rw-r--r-- 1 u783329617 u783329617 1627 Aug 5 08:03 wp-comments-post.php -rw-r--r-- 1 u783329617 u783329617 2930 Aug 5 08:03 wp-config-sample.php -rw------- 1 u783329617 u783329617 3519 Oct 21 2016 wp-config.php drwxr-xr-x 10 u783329617 u783329617 4096 Oct 21 2016 wp-content -rw-r--r-- 1 u783329617 u783329617 3286 Sep 17 2016 wp-cron.php drwxr-xr-x 18 u783329617 u783329617 12288 Aug 5 08:03 wp-includes -rw-r--r-- 1 u783329617 u783329617 8044 Sep 17 2016 wp-itapi.php -rw-r--r-- 1 u783329617 u783329617 2422 Aug 5 08:03 wp-links-opml.php -rw-r--r-- 1 u783329617 u783329617 3301 Aug 5 08:03 wp-load.php -rw-r--r-- 1 u783329617 u783329617 34327 Aug 5 08:03 wp-login.php -rw-r--r-- 1 u783329617 u783329617 8048 Aug 5 08:03 wp-mail.php -rw-r--r-- 1 u783329617 u783329617 16200 Aug 5 08:03 wp-settings.php -rw-r--r-- 1 u783329617 u783329617 29924 Aug 5 08:03 wp-signup.php -rw-r--r-- 1 u783329617 u783329617 4513 Aug 5 08:03 wp-trackback.php -rw-r--r-- 1 u783329617 u783329617 3065 Aug 5 08:03 xmlrpc.php
注意: wp-config.php
文件里面存储着 wordpress 的数据库链接串信息,及时根据本身刚才建立的 db 的数据库信息,库名、用户名、密码、前缀信息及时更新,不更新的话,待会 nginx 配置好后经过 http://127.0.0.1 来访问建立也能够。
这块是重点,好比配置后出现 403 forbidden,以前的博客内容出现404页,首页 500/502 打不开等都是配置不正确的缘由。
在配置以前,先略微了解下缘由,nginx 是没法解析 php 语言的内容的,因此须要 fast-cgi 模块来处理,关于 CGI、FastCGI、PHP-FPM、PHP-CGI 分别是什么,却别又是啥,应该用哪一个 !http://www.awaimai.com/371.html
看完以后应该能够理解了,咱们须要使用 php-fpm 来解析 php 程序,经过 nginx 将请求转发到 php-fpm 上来。
php-fpm 启动方式以及参数以下:
# 配置地方,详情文件参考 https://wizardforcel.gitbooks.io/nginx-doc/content/Text/6.5_nginx_php_fpm.html # /usr/local/php/etc/php-fpm.conf [global] pid = /usr/local/php/var/run/php-fpm.pid error_log = /usr/local/php/var/log/php-fpm.log log_level = notice [www] listen = /tmp/php-cgi.sock ##注意这个地方不少教程上都是配置的 127.0.0.1:9000 listen.backlog = -1 listen.allowed_clients = 127.0.0.1 listen.owner = www listen.group = www listen.mode = 0666 user = www group = www pm = dynamic pm.max_children = 20 pm.start_servers = 10 pm.min_spare_servers = 10 pm.max_spare_servers = 20 request_terminate_timeout = 100 request_slowlog_timeout = 0 slowlog = var/log/slow.log
若是须要重启的话,直接从新加载配置便可:/etc/init.d/php-fpm reload
nginx 配置最终的配置以下,注意有注释的地方:
server { listen 80 default_server; server_name _; index index.php; root /home/u783329617/public_html; #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.conf; ##这是 php-fpm 对接的地方 include wordpress.conf; ## 这是 wordpress 的配置,若是不加入,则会报404错误 access_log /home/wwwlogs/access.log; } include vhost/*.conf; ##这是其它的域名配置
enable-php.conf、wordpress.conf 的配置以下:
# enable-php.conf location ~ [^/]\.php(/|$) { try_files $uri =404; fastcgi_pass unix:/tmp/php-cgi.sock; #这个地方的配置要看/usr/local/php/etc/php-fpm.conf的 listen 处,不少教程配置都是 127.0.0.1:9000 fastcgi_index index.php; include fastcgi.conf; } # wordpress.conf location / { try_files $uri $uri/ /index.php?$args; } # Add trailing slash to */wp-admin requests. rewrite /wp-admin$ $scheme://$host$uri/ permanent;
nginx 配置完成后从新加载文件 /usr/local/nginx/sbin/nginx -s reload
后直接访问 http:127.0.0.1 就能看到经典的 wordpress 的安装文件了。