04 六月

安裝 WordPress(一步一腳印,從零開始)

上一篇 po 文講咗點樣利用 Google Cloud 搞一個  WordPress VM,當時係用 Google 嘅 Cloud Launcher 啲鑵頭嘢,而 Cloud Launcher 喺用咗 Bitnami 鑵頭工廠嘅出品,大家都唔使用腦。 😆

不過,如果係真正嘅達人,會唔會想跳過 Bitnami 自己搞?由冇到有!係,咁就睇落去囉。

第一步要有台 server,可以係 Google Cloud 嘅 Compute Engine,可以買台真嘅實體 server,亦可以用 VMware 嘅 Virtualization 搞,又或者用 Oracle 嘅 VirtualBox 都得。而我,由於我有自己嘅 Data Centre,我就用 VMware 嘅 vSphere 搞,搞完可以俾自己嗰客用,一舉兩得。 😳

好,喺 vSphere 開個新 VM:

Screen Shot 2016-06-01 at 9.51.54 AM

唔使好勁嘅 hardware 就得,我打算安裝 Ubuntu 16.04,我揀咗:

  • 一粒 CPU (single core)
  • 1 GB Memory
  • 30GB Hard Disk

CPU 同 memory 日後可以因應 traffic 改勁啲,hard disk 我多數用 30GB,因為個WordPress 網站會有 blog、有 online shopping、仲要有 events calendar 同 event registration,30GB 足夠用好幾年。

Ubuntu 16.04 server 淨係安裝 Core + standard system utilities + OpenSSH server:

Screen Shot 2016-06-01 at 9.59.35 AM

同上一代唔同,Ubuntu16.04 安裝完就已經有 Open-VM-Tools,而 OpenSSH Server 可以俾我用 SSH Client login,咁,我用 Chrome 就可以搞哂,理論上我有台 ChromeBook 就掂哂,方便快捷(暫時未有 ChromeBook 有機會就買台返嚟玩玩)。

安裝完,check 下有幾多 disk space:

Screen Shot 2016-06-01 at 10.05.23 AM

仲有 24.5GB,所以 10GB 好快唔夠用,20GB 都得,不過計埋啲與日俱增嘅 log files 同 photo albums,我一般都會俾多 10GB,於是 30GB 就放心好多,而且 hard disk 咁平,唔使同我慳!

循例,先 update 個 Ubuntu:

sudo apt-get update
sudo apt-get upgrade

sudo vi /etc/network/interfaces

更正個 network IP address,改用 static IP:

Screen Shot 2016-05-28 at 4.16.43 PM

安裝 Apache、啟用 Url Rewrite 功能、安裝 mysql:

sudo apt-get install apache2
sudo a2enmod rewrite

sudo apt-get install mysql-server-5.7

放心,以上步驟都唔會有 error 咖喇!再嚟就係安裝 mysql 嘅 security,security 當然重要,咁就要多講幾句:

sudo mysql_secure_installation

Screen Shot 2016-06-01 at 10.28.36 AM

這個 VALIDATE PASSWORD PLUGIN 有點討厭,就跟 Windows server 差不多,總係話你選用嘅 password 唔夠 secure,最好用大細草、要有混合符號同數目字、又要足夠長、最好超過 12 隻字,搞完之後就冇可能記得,要搵張紙寫低,吹漲!😂

我就唔用,你就自己諗諗啦。

Screen Shot 2016-06-01 at 10.28.53 AM

改 root password?我又一於唔跟,你唔怕麻煩就自便。

Screen Shot 2016-06-01 at 10.29.09 AM

冇名冇性就一定唔准 login 啦,仲使問嘅?

Screen Shot 2016-06-01 at 10.29.25 AM

Remote 又准唔准?不久之前都仲係唔准嘅,local 先可以,不過最近打算用 DreamFacotry 協助搞 RESTful API,而 DreamFactory 最好就係安裝喺另外一隻獨立嘅 VM,所以我選 Yes,你冇需要就應該用 No。

Screen Shot 2016-06-01 at 10.29.38 AM

「test database」 對我嚟講係冇用嘅,我唔係要學點樣玩 mysql,我要佢嚟做 WordPress 個 database 啫。

 

Screen Shot 2016-06-01 at 10.29.51 AM

Reload privilege tables?要,我哋趕住要用 mysql 繼續安裝 WordPress。到此,mysql 安裝大功告成!

再嚟就係安裝 php、php 同 apache 嘅 plugin、php 同 mysql 嘅 plugin:

sudo apt-get install php

sudo apt-get install libapache2-mod-php7.0

sudo apt-get install php-mysql

完全冇難度,接落嚟就係安裝重頭戲 WordPress,未有 WordPress 之前試試 Apache 有咩反應:

Screen Shot 2016-06-01 at 10.34.36 AM Screen Shot 2016-06-01 at 10.34.52 AM
Apache web server 個 root 會有一隻 html 檔案叫 index.html 你如果用 web browser 去訪問嚟個 web page 會顯示一個 Apache Default Page.

篇文章到哩度好似有啲長?無法啦,一步一腳印呀嘛,我已經 skip 咗安裝 Ubuntu!😇

Okay,去下載 WordPress、解壓:

  • 英文版
    wget http://wordpress.org/latest.tar.gz
    
    tar -xzvf latest.tar.gz
    
  • 中文版
    wget https://tw.wordpress.org/latest-zh_TW.tar.gz
    
    tar -xzvf latest-zh_TW.tar.gz
    

有少少心德分享:安裝英文版而你個網站係中文嘅時候有冇問題?大部份功能都冇問題,不過如果你個網站選 default language 用繁體中文咁就會有啲奇怪嘅嘢會出現,你個 WordPress 已經係最新版本,但係個 Admin Dashboard 係都話你有一個更新要 update,而個 update 就係 zh_TW (繁體中文),同一個版本號。咁,我 click UPDATE 會點?冇咩嘅,WordPress 會 download zh_TW 然後 update failure,我都唔明解?我嘅辨法就係用英文版好似安全啲,因為啲 plugins 同 themes 作者都係以英文版為主嚟開發,穩定啲吧!個 warning 就當睇唔倒。如果要全中文,咁一開始就安裝 zh_TW,今次用全中文。

講完心德,可以抄 WordPress 去 Apache:

  • 一般用 sub-directory
    sudo mkdir /var/www/html/wordpress
    
    sudo cp -r ~/wordpress/* /var/www/html/wordpress
    
  • 非一般,用 root directory
    sudo rm /var/www/html/index.html
    
    sudo cp -r ~/wordpress/* /var/www/html
    

又要二揀一?都幾煩吓啵,唔可以簡單啲咩?有,用 Bitnami 鑵頭囉!不過,就算用鑵頭,你都想知鑵頭廠揀咗邊個掛?

用 root directory 定係用 sub-directory?跟大隊就用 sub-directory,而我今次就用 root directory,因為我唔會再安裝其他 web applications,連 webadmin 都唔裝,隻 VM 淨係安裝 WordPress,而且我想個 website 直接用 http://domain_name 搵到,唔係 http://domain_name/wordpress 或者用 Url Rewrite 去取消 wordpress 隻字。

順便講講,URL Rewrite 或者 URL Redirect 可以有兩度可以搞,我揀 .htaccess,因為改 index.php 有機會喺日後啲 WordPress updates overwrite 咗:

  • .htaccess
    # BEGIN WordPress
    #<IfModule mod_rewrite.c>
    Options -Indexes
    Options +FollowSymLinks
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^(www.)?hkwsa.nxstudio.com$
    RewriteRule ^(/)?$ wordpress [L]
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    
    # WordPress 安裝喺 sub-directory
    RewriteRule . /wordpress/index.php [L]
    
    # WordPress 安裝喺 root
    RewriteRule . /index.php [L]
    #</IfModule>
    # END WordPress
    
  • index.php
    /** Loads the WordPress Environment and Template */
    require( dirname( __FILE__ ) . '/wordpress/wp-blog-header.php' );
    或者
    /** Loads the WordPress Environment and Template */
    require( dirname( __FILE__ ) . '/wp-blog-header.php' );
    

揀好,抄好,就要整理一下啲 files permissions,咩嘢係 file permission?咪係邊個 user 又或者邊類  users 有咩權去 Read Write Exceute 每隻 file 囉。當講到  file permission 你會見到好多 numbers,例如:777、775、755、644 等等,下面有張圖解釋:

Unix-File-Permission

我哋要:

sudo mkdir /var/www/html/wp-content/cache
sudo mkdir /var/www/html/wp-content/uploads

sudo find /var/www/html/. -type d -exec chmod 755 {} \;  # Change directory permission
sudo find /var/www/html/. -type f -exec chmod 644 {} \;  # Change file permissions

sudo chown -R www-data:www-data /var/www/html # Let Apache be owner
Screen Shot 2016-06-01 at 10.36.13 AM Screen Shot 2016-06-01 at 10.42.32 AM Screen Shot 2016-06-01 at 10.45.16 AM
未動手術之前 create uploads directory create cache directory
Screen Shot 2016-06-01 at 10.54.46 AM
改 permission 同埋改 owner

點解要咁樣設定啲 file permission?因為使用 WordPress 嘅時候,我哋會有需要 upload 檔案,例如更新 WordPress、更新/安裝 plugins/themes、上傳 pictures 等等,我哋要准許 Apache 有足夠使用權去 Read/Write/Create 啲 sub-directory 同 files。不過,Apache 有太多權又會導致 security 嘅問題,最常發生就係有人上傳隻 virus 然後叫 Apache 去 execute,一般嘅准則係安裝完一切有關嘅嘢之後就速速降低啲 file permission,不過,實際上好難操作,因為好多時你會因為 security 嘅問題而迫住要做更新,做更新又要有一定嘅 permission,兩難!😩

係時候修改 Apache 嘅 default configuration,先抄一份做 backup,然後用 editor 改少少,加一段指令喺尾,搞完就 restart apache:

cp /etc/apache2/apache2.conf ~

sudo vi /etc/apache2/apache2.conf
	AddType application/x-httpd-php .html

sudo /etc/init.d/apache2 restart

加一句  AddType application/x-httpd-php .html,係咁多,有圖俾你睇:

Screen Shot 2016-06-01 at 10.56.46 AM

輪到搞 mysql:

mysql -u root -p
	CREATE DATABASE wordpress;
	CREATE USER wordpressuser;
	SET PASSWORD FOR wordpressuser= PASSWORD('your_password');
	GRANT ALL PRIVILEGES ON wordpress.* TO wordpressuser IDENTIFIED BY 'your_password';

睇圖易啲:

Screen Shot 2016-06-01 at 10.58.02 AM Screen Shot 2016-06-01 at 10.58.30 AM Screen Shot 2016-06-01 at 10.58.48 AM
第一句:
mysql -u root -p
第二句,已經入咗 mysql:

CREATE DATABASE wordpress;

第三句:

CREATE USER wordpressuser;

Screen Shot 2016-06-01 at 10.59.45 AM Screen Shot 2016-06-01 at 11.00.21 AM Screen Shot 2016-06-01 at 11.00.57 AM
第四句:

SET PASSWORD FOR wordpressuser= PASSWORD(『your_password』);

第五句:

GRANT ALL PRIVILEGES ON wordpress.* TO wordpressuser IDENTIFIED BY 『your_password』;

最後,exit 離開 mysql,收工!

搞掂咗 mysql,咁就要通知 WordPress 新鮮滾熱辣嘅 mysql 設定:

sudo cp /var/www/html/wp-config-sample.php /var/www/html/wp-config.php

sudo vi /var/www/html/wp-config.php

唔使惊,edit 隻 wp-config.php 係有圖睇嘅:

Screen Shot 2016-06-01 at 11.02.34 AM Screen Shot 2016-06-01 at 11.03.59 AM Screen Shot 2016-06-01 at 11.06.56 AM
未改之前,因為我用 WordPress_zh_TW,可以見到啲中文 comments 有 3 度要改:

  • DB_NAME
  • DB_USER
  • DB_PASSWORD
順便改埋(加一句)喺尾:define(『FS_METHOD』, 『direct』);

哩句係話唔想用 FTP 或者 SFTP 嚟 update WordPress

嚟到哩度可以 fire up WordPress,用 browser 去訪問哩隻 WordPress server:

Screen Shot 2016-06-01 at 11.09.59 AM Screen Shot 2016-06-01 at 11.11.05 AM Screen Shot 2016-06-01 at 11.11.41 AM
WordPress 第一次啟動,要 create 管理員 答問題,答完要抄低你輸入咗啲咩資料,日後唔記得咗就冇人幫到你 😀 Welcome to WordPress,請登入!
Screen Shot 2016-06-01 at 11.12.42 AM Screen Shot 2016-06-01 at 11.12.55 AM Screen Shot 2016-06-01 at 11.13.18 AM
唔好意思,有啲資料要整黑佢 😜 WordPress admin 控制台 (dashboard),紅色圓圈係通知俾你有 updates 我哋試下做 update,有一隻 plugin 要 update
Screen Shot 2016-06-01 at 11.13.33 AM Screen Shot 2016-06-01 at 11.14.28 AM Screen Shot 2016-06-01 at 11.14.40 AM
成功 update 隻 plugin 試下安裝新嘅 theme,我用 fruitful 做一下 search  Fruitful 3.3.1 安裝成功
Screen Shot 2016-06-01 at 11.15.14 AM Screen Shot 2016-06-01 at 11.15.26 AM Screen Shot 2016-06-01 at 11.16.01 AM
 再嚟,試下安裝新嘅 plugin,搵 WP Edit,真係有用咖  唔使問又成功!  設定>一般
可以更正 WordPress URL 同 網站 URL 為你嘅 domain name
Screen Shot 2016-06-01 at 11.25.36 AM Screen Shot 2016-06-02 at 10.41.44 AM
設定>固定網址
選用你心水嘅 permalink
大功告成!
用咗未到 5GB,仲有 25GB storage 剩

冇啦?有冇咩 missed?呀,upload 檔案有 file size 限制,可以改 php.ini 或者 .htaccess,我會改 .htaccess,加幾句:

php_value upload_max_filesize 64M
php_value post_max_size 64M
php_value max_execution_time 300
php_value max_input_time 300

你可以自己決定用咩 parameters。

後記:改 .htaccess 唔 work,奇怪?傳統智慧唔合潮流?要改 /etc/php/7.0/apache2/php.ini 先掂。😱

仲有,隻 .htaccess 最好用 644 同埋轉 owner 俾 Apache,咁,WordPress 可以自己執番正隻 .htaccess 嘅內容。

後後記 😝 :

如果你發覺啲 permalink(固定網址)唔可以用中文,而你隻 .htaccess 己經係由 WordPress 自己 gen 嘅,唔應該有錯,即係搵唔到仲有咩未做,咁你可以 check 下 Apache config file:/etc/apache2/sites-enabled/000-default.conf,睇下有冇以下哩幾句:

<Directory /var/www/html>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
</Directory>

冇就加番,我上面都冇提過,因為我多數唔會用中文做 permalink 或者 slug,因為中文字唔 SEO friendly,一般會用 plugin Pinyin SEO 將佢轉做拼音,據講,用咗 羅馬拼音 Google 會開心啲,咁你個 web page 嘅 search ranking 又會高啲。😘

*** The End ***

IT 老人
本來想用 IT 聖誕老人,不過一來感覺有啲長,二來咪每年得 12 月會出現?太少了,於是,IT 老人 就剛剛好。 :)

咁,掂解叫老人?因為喺哩行資歷深囉。不過,學無前後,達者為先。(我信架)

發表回覆