遷移 wordpress 博客主機到阿里雲 ecs 服務器

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 工具等。

1、恢復 db 數據

我安裝的是 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

2、恢復網站 wordpress 文件

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 來訪問建立也能夠。

3、nginx 配置可訪問 wordpress 內容

這塊是重點,好比配置後出現 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.confwordpress.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 的安裝文件了。

相關文章
相關標籤/搜索