2015年9月11日 星期五

[專案] LNAMP 網站重建, 根目錄移轉, 架設 WordPress 4.3 網誌網路

[專案] LNAMP 網站重建, 根目錄移轉, 架設 WordPress 4.3 網誌網路

專案日期: 2015.09.11 (五)


目的:

1. 想讓 local 端和免費空間上所建的 WordPress 網誌網路目錄結構一致, 方便在 local 編撰後再 update 到免費空間上發佈!

2. 原先網站根目錄 /var/www/html 之下的內容想先保留可切換回來的彈性。

3. 原 WordPress 網誌網路的文章資料要倒進新的網誌


專案資訊:

原網站根目錄: /var/www/html
新網站根目錄: /var/www/wordpress



執行步驟:

1. 透過 WordPress 控制台工具匯出原 wordpress 上的文章
2. 備份 Apache 與 Nginx 需修改到的設定檔:
$ sudo cp /etc/apache2/apache2.conf /ect/apache2/apache2.conf.path.html
$ sudo cp /etc/apache2/sites-available/000-default.conf /ect/apache2/sites-available/000-default.conf.path.html
$ sudo cp /et/nginx/sites-available/default /etc/nginx/sites-available/default.path.html
3. 修改 Apache 與 Nginx 的設定檔, 將錄徑 /var/www/html 改為 /var/www/wordpress
$ sudo vi /etc/apache2/apache2.conf
<Directory /var/www/wordpress>
        AllowOverride All
</Directory>

$ sudo vi /etc/apache2/sites-available/000-default.conf
DocumentRoot /var/www/wordpress

$ sudo vi /etc/nginx/sites-available/default
root /var/www/wordpress;
4. 下載 WordPress 4.3, 解壓縮, 複製程式主目錄到 /var/www/wordpress 並修改權限
$ sudo cp -r wordpresss /var/www/wordpress
$ sudo chown -R www-data:www-data /var/www/wordpress
$ sudo chmod -R 644 /var/www/wordpress
$ sudo chmod -R a+X /var/www/wordpress
5. 備份並修改 wp-config-sample.php 啟用 WordPress MU 的安裝工具
$ sudo cp /var/www/wordpress/wp-config-sample.php /var/www/wordpress/wp-config-sample.php.backup

$ sudo vi /var/www/wordpress/wp-config-sample.php
define('WP_ALLOW_MULTISITE', true);
6. 重啟 Apache 及 Nginx 服務
$ sudo service apache2 restart
$ sudo service nginx  restart
7. 建立新的 MySQL 資料庫, 和原站台的資料分開管理
$ mysql -uroot -p
mysql> create database newpress;
mysql> exit
8. 瀏覽器連上 VM 網址, 開始安裝 WordPress
使用新的 database 名稱 newpress,
安裝的第一個網誌將做為網誌網路的簡單入口, 先輸入與網誌網路相關標題, 之後可修改!
安裝完會要求以設定的帳密登入, 登入後會直接進到控制台

9. 安裝網誌網路:
控制台 --> 工具 --> 網誌網路安裝
設定 "網誌網路標題"
如果連線時是使用 IP 而非 domain name, WordPress 會直接認為初始安裝是用子目錄, 所以網誌網路的架構只能用子目錄而不能使用子網域;因為本來就想用子目錄方式安裝, 所以不影響!
點選 "安裝" 按鈕後會提示要備份和修改 .htaccess 和 wp-config.php 檔, 照做!
$ sudo cp /var/www/wordpress/.htaccess /var/www/wordpress/.htaccess.backup
$ sudo cp /var/www/wordpress/wp-config.php /var/www/wordpress/wp-config.php
修改完後重新登入 WordPress
10. 修改 nginx 的設定檔, 解決已知 WordPress 架在 LNAMP 下會出現的重複導向問題
$ sudo vi /etc/nginx/sites-available/default  # 注意 location 設定的順序會影響結果
// location 原 /
// location 自訂 .php
// location 自訂 cache
// location wp-admin
location ~ (^(?:/[^/]+)?/wp-admin$) {
        rewrite (.*) $1/;
}
// location 自訂 / 
location ~ ^/.* {
        proxy_pass http://localhost:8080;
        include proxy_params;
}
有些設定看似多餘, 是為了讓設定項目看起來和原先版本的架構較一致方便比對, 兩個版本的設定檔都有適合使用的地方, 都要保存起來參考。

11. 使用和免費空間上一致的子目錄名稱建立一個新的子網誌並匯入備存的既有文章
日後重新匯入時要先刪除文章、頁面、標簽、分類並清除相關回收桶資料才不會重複!

安裝後出了一個後來覺得很糗的問題:
架好後出現以下無法存取的情況, 一直想不通是啥原因!

Not Found

The requested URL /lnamp/wp-admin/ was not found on this server.
Apache/2.4.7 (Ubuntu) Server at 192.168.227.134 Port 8080
看錯誤訊息是來自 Apache 無法讀取 /lnamp/wp-admin/ 這個偽靜態網址。
其實一開始就猜可能是 Apache 那邊設定的問題, 因為根據之前使用的經驗 Nginx 這邊最多只需處理一個因 LNAMP 架構多出來的一個問題, 要負責把 /lnamp/wp-admin rewrite 成 /lnamp/wp-admin/ 丟給 Apache 就算完成任務了,之後其他 wp-admin 的工作或是偽靜態網址的處理都是 Apache 那邊要負責的! 但一直看不出原因,所以又來回好幾次呆呆地在測 Nginx 那邊的 proxy 設定是否改錯了? /var/www/wordpress 和底下檔案及 .htaccess 權限是否設錯了? Apache 的 rewrite module 是否沒重新啟用而無效? 後來發現連主網誌的偽靜態網址也失效,確信是 Apache 那邊 rewrite 出了問題,把相關設定仔仔細細看了好幾遍最後發現是開 rewrite 權限的 <Directory> 不小心把 wordpress 打成 wordpresss 多了一個 s, 差點沒昏倒! XD


沒有留言:

張貼留言