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 的安裝文件了。