[CentOS 7] 自己的部落格自己架,讓 Wordpress 幫你架好架滿

by 1月 28, 2016 20 意見                

身為一個不入流的部落客,棲身在 Google 的 Blogger 平台上,也默默的爬了兩年的格子,但是幾過了幾次的版面,實在沒有辦法做些大幅度的調整,所以也開始考慮要用虛擬主機來自行架設部落格。

說到早年要架部落格,可不是像現在到處都有現成的部落格平台,而是除了自己土炮手刻程式碼之外,就是得用部落格套件來架設了。

當時首選的套件非 Movable Type 莫屬,可是好景不長,在 2004 年中,因為他們突然修改了 User License 的條文,讓粉絲們產生了逃命潮,關於這個故事可以看一下 Mr Jamie 在 2011 年寫的文章:為什麼 WordPress 大受歡迎,Movable Type 卻沒有。。

而 Wordpress 適時把握了這個缺口,不只一舉拿下了部落格市場,根據 W3Techs 的統計資料,他們的市佔率在 2015 年底已經是全球 CMS (內容管理系統,Content Management Systems) 的第一名,每四個網站就有一個是用 Wordpress 建置的。

現在絕大部份的部落客應該都是使用 痞客邦 PIXNETGoogle Blogger隨意窩 Xuiteudn 部落格Yam 天空部落格 ... 等部落格平台來發文,一方面介面簡單而且大多免費,另一方面也不用擔心伺服器的管理問題,只要專心發文就行。

既然現成的部落格平台那麼方便,又為何還要自行架設呢?我想原因不外乎這幾點:
  1. 打造 100% 符合需求的版面。
  2. 擁有專屬自己的品牌形象,例如:網域名稱 http://blog.itist.tw、E-Mail 信箱 heracles@itist.tw。
  3. 不會受到平台業者影響造成心血全毀 (對!無名小站,我說的就是你)。

事前準備


不管你是 LAMP 愛用者或是 LEMP 大粉絲,請先參閱下列的文章先建置好底層服務。
Wordpress 的系統需求是:
  • PHP 5.2.4 以上
  • MySQL / MariaDB 5.0 以上

這邊我們會以 LEMP 架構來實作,愛用 LAMP 架構的朋友不必擔心,步驟完全相同。

此外,
租用虛擬主機的朋友也可以依照這篇文章的步驟來自行建置。


取得主程式


先連上 Wordpress 官網

找到下載連結,目前最新的版本是 4.4.1。

下載 Wordpress 主程式,它已經內建繁體中文語系,所以不必額外再安裝了。
wget https://tw.wordpress.org/latest-zh_TW.zip

將主程式解壓縮,若是使用 LAMP 架構的話,請把路徑改到 /var/www/html。
unzip latest-zh_TW.zip -d /usr/share/nginx/html

這樣就會在網站根目錄看到 Wordpress 主程式的目錄。

接下來是非常多非常多教學文章都亂教的步驟:調整目錄存取權限。

我們常常會看到他們要求使用者用這樣子的指令來解決權限問題。
sudo chmod 777 -R /usr/share/nginx/html/wordpress
或是
sudo chmod a+rwx -R /usr/share/nginx/html/wordpress

可是,這是 200% 錯誤的方法!!!

這會造成什麼結果呢?
其實也不是什麼嚴重的問題啦,只不過就是任何一個路邊連上來的阿狗阿貓都可以任意上傳資料,然後就輕輕鬆鬆執行傳上來的程式、木馬、蠕蟲、惡意程式,或是把 Server 上的所有資料全部看光光。

接著會發生什麼事,我想這個問題,就直接問老天吧 ...... XD

正確的做法應該:
將目錄權限不變,調整擁有者與擁有群組,修改成 Web Server 的使用者及群組,像我這次用的是 Nginx,就應該下這樣的指令才對。
sudo chown nginx:nginx -R /usr/share/nginx/html/wordpress


建立資料庫


先連線到 MySQL / MariaDB,用預設帳號 root 登入,此 root 非彼 root,它是 DB 自管的帳號而不是 Linux 的本機帳號。
mysql -u root -p

建立一個專用的資料庫。
create database `wordpress`;

資料庫的名稱請用反引號 ` (backtick) 包起來,而不是用單引號 ' (single quotation marks)。

建立 Wordpress 專用的使用者。
create user 'wpadmin'@'localhost' identified by 'P@ssw0rd';

讓專用帳號有完整存取 wordpress 資料庫的權限,並重新載入權限。
grant all on wordpress.* to 'wpadmin'@'localhost';
flush privileges;

用新帳號登入資料庫。
mysql -u wpadmin -p

確認可以登入並擁有正確的資料庫存取權限了。
show databases;


開始安裝


打開瀏覽器連上 Web Server,別忘了我們是放在網站根目錄下的 wordpress 目錄,在輸入網址的時候別打錯了。
http://10.1.1.214/wordpress

認真說起來,這些步驟也算不上是安裝,目的是為了產生主設定檔 wp-config.php 裡的設定值而已,詳細說明可以參閱 Wordpress.org - Editing wp-config.php
  • 資料庫名稱 - 專屬的 Database 名稱
  • 帳號 / 密碼 - Wordpress 的管理員
  • 資料庫主機位址 - 若是 Web Server 跟 DB Server 不是同一台才要修改
  • 資料表前綴 - 用來分辨不同 Wordpress 的資料表 (DB Tables)

如果出現「無法選擇資料庫」的錯誤訊息,可能的原因有:
  • 資料庫還沒建
  • 帳號密碼錯誤
  • 權限不夠
  • IP 位址錯誤
  • 被防火牆擋住

如果出現「無法寫入 wp-config.php 檔案」的錯誤訊息,只要自己手動建立就可以了。

新增主設定檔。
sudo vi /usr/share/nginx/html/wordpress/wp-config.php

直接貼上系統提供的設定值文字內容即可。

還要調整一下權限。
sudo chown nginx:nginx /usr/share/nginx/html/wordpress/wp-config.php

恭禧~~~
安裝步驟已經到了最後一步,只要輸入部落格的基本資料就完成了。
  • 網站標題
  • 帳號 / 密碼
  • 確認密碼
  • 你的電子郵件
  • 搜尋引擎可見度

大功告成!
這時候就可以用剛剛建立的帳號密碼登入 Wordpress 的管理介面。



訪客也可以開始瀏覽我們的部落格文章了。


參考資料


圖片來源

  • https://movabletype.org/documentation/administrator/managing-blogs/viewing-a-list-of-blogs.html
  • http://m.life.tw/?app=view&no=286611

更新紀錄

  • 2016/01/28 撰文。

Heracles Jam,江湖人稱「海公公」

IT 技術家 - 創站部落客

一個常用 Windows、慣用 macOS、愛用 Linux 的 3C 阿宅
現職 MIS / 業界講師 / 資訊顧問 / 部落客

20 則留言 :

  1. 板主你好, 我按照你的教學, 從CentOS7 安裝LENP開始, 安裝到wordpress!
    安裝完wordpress後, 想要安裝外掛"Jetpack"
    卻無法連接wordpress帳號...
    請問該如何解決呢?

    回覆刪除
    回覆
    1. 解決了, 將wordpress搬到根目錄就可以了!
      可能是目前設置的nginx不支援/usr/share/nginx/html/wordpress的關係!
      不知到版主有沒有辦法解?

      刪除
    2. 這個可能要測一下,
      我之前遇到 Jetpack 沒辦法連接 Wordpress 帳號的原因是 HTTPS 的問題,跟你的狀況不太一樣 .... @@

      刪除
    3. 因為採用樓主的方式, 因為多一層/wordpress目錄!
      我使用port轉, 但nginx好像沒辦法把網站對應到外網!
      所以導致Jetpack 一直無法對外, 因此一直無法連接!
      把wordpress搬到根目錄就可以了!
      不知道版主, 後續會分享nginx設定教學嗎?
      也許是我這邊沒設好@@

      刪除
    4. 我想到為什麼不行了.....

      因為我在 LEMP 教學文章裡面,Nginx 網站根目錄指定的是 /usr/share/nginx/html,而不是 /usr/share/nginx/html/wordpress,所以你會連不到。

      你把 Nginx 主設定檔裡的 Document Root 改成 /usr/share/nginx/html/wordpress 就行了。

      真不好意思,害你燒了不少腦細胞 .... XDDD

      刪除
    5. 這個方式我測試過呢, 好像還是會有點問題!
      期待樓主之後的Nginx深度教學^^

      刪除
    6. 請問Nginx主設定檔裡的兩個root都要改嗎?

      刪除
  2. 作者已經移除這則留言。

    回覆刪除
  3. 請問 當我上傳時 theme 或相片時,會出現錯誤, 如下:
    無法建立目錄: wp-content/uploads/2016/10。伺服器是否允許寫入上層目錄?
    我看過 wp-content 已經是755 及在wordpress下全部也是 nginx:nginx 了, 是否錯了什麼地方呢?

    回覆刪除
    回覆
    1. 我倒是沒遇到這回事耶...
      你要不要檢查一下後台設定值,跟 wp-content/uploads 目錄的權限?

      刪除
    2. Jam大哥, 我也覺得奇怪,
      這幾天我也在分析:
      1. 我可以在wordpress加入新文章, 只是上傳不到相片/Theme, 那應該 Maria, php, nginx 基本設定正確了, 估計問題應該在 檔案結構.
      2. 我已暫時設定 wp-content/uploads 到777 及 wordpress內全已設定 chown nginx:nginx 那應該不是 資料夾的權限問題.
      但有幾點想請教一下Jam大哥,
      1. 我在Terminal輸入 php -v 是顯示版本是 5.4.16 但在 localhost\phpinfo.php, 是顯示 7.012 會否出現版本混亂的問題? 會否我設定php70, 但wordpress是在運行 php 5.4
      2. 會否出現在wordpress上傳圖片時或系統建立資料夾時(wp-content/uploads/2016/11), 不是在使用nginx 的權限呢? 會否我改了權限給 nginx, 但centos在運行其他權限讀取?

      可能以上問題很底級, 但我真的是Linux新手, 出現了天馬行空的推測, 敬請見諒~

      刪除
    3. 最後我還是屈服了, 開一個新的VM, 重新用LNMP方式安裝, 避開了問題. 最後當然是要謝謝JAM大哥寫了那麼好的文章, 小弟學習了不少新知識.

      刪除
    4. 1. 你是不是曾經裝過 5.4.16,移除了之後再重裝 7.012?
      還是根本沒移除5.4.16、或是裝過 Apache ...... XDDD
      2. 理論上不會.....
      3. 別客氣,大家教學相長 ^^

      刪除
    5. 我當初沒有安裝其他的東西(5.4), 但當上傳失敗後, 就會去GOOGLE搜查 及什麼都試下 (gnome, ftp, phpmyadmin)~ 哈~ 雖然也學多了知識, 但因為基礎不穏, 導致消化不良, 弄到系統 亂七八糟. 很感謝你的文章, 令我對Linux多了知識, 多了興趣.

      刪除
  4. 文章很不錯@@

    回覆刪除
  5. 我想問一下要讓外網能連
    是否還是要到ap管理介面開啟NAT功能?

    回覆刪除
    回覆
    1. 你該開的應該是 port forwarding 吧...

      刪除
    2. 阿阿真的不太懂亂說了
      我也是有遇到無法連到jetpak的問題
      話說我是用中華電信的ap
      這次的這一台是dasan的h660w
      好像沒有這個功能
      要去買一台有port forwarding的功能的機子嗎?

      刪除
    3. 這個拿到的應該是浮動的實體 IP 吧,firewalld 直接開 port 不就好了嗎?

      刪除
  6. 請問權限是否可以設定成sudo chown nginx:nginx -R /usr/share/nginx/

    回覆刪除