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

by 1月 28, 2016 14 意見                

身為一個不入流的部落客,棲身在 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 / 業界講師 / 資訊顧問 / 部落客

14 則留言 :

  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深度教學^^

      刪除
  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. 文章很不錯@@

    回覆刪除