月份: 2019 年 12 月

安裝 WordPress

No Comments

在自己電腦上架站安裝 wordpress,步驟很簡單

  • # 筆者的第一步之用意是若使用者複製貼上,第一步可阻擋若尚未進入暫時的管理員權限。按 ctrl-c 便能終止不當的執行。
  • sudo apt update
  • cd /var/web
  • sudo wget https://wordpress.org/latest.tar.gz
  • sudo tar -zxvf latest.tar.gz
  • # 便會産生 ./wordpress 子目錄及其內容
  • # 筆者最原先嘗試 root:www-data 這樣嚴格的擁有者權限給 wordpress,導致 wordpress 不僅以英文界安裝(即,運作不正常了)還需額外安裝 ftp server,也未能讓 wordpress 順利工作。當然可以以 www-data:www-data 設定給 wordpress,就必定沒問題了。不過筆者最後仍嘗試 www-data:root 這種權限。目前看來還 OK。權限的嚴謹度 root:www-data >= www-data:root >= www-data:www-data。另外檔案權限保持解壓縮後的狀態不異動。
  • sudo chown -R www-data:root ./wordpress
  • # 若有搭配使用 ftp server,可加使用下一步
  • sudo chmod a-w ./wordpress
  • sudo cp ./wordpress/wp-config-sample.php ./wordpress/wp-config.php

接著,透過 phpmyadmin 為 wordpress 建立資料庫,並只要提供給 wordpress 三個資料:此 database 的名稱,此 database 的使用者,及其密碼,安裝即告完成。

下一步,為 wordpress 建立資料庫,筆者已更新文章在這個連結了。

https://waterfalls.ddns.net/2019/12/03/安裝-phpmyadmin/#db_wordpress

分別使用 MYWPADMIN,MYWPADMIN,MYWPPW

資料庫建立完成後接著 sudo gedit /var/web/wordpress/wp-config.php,並於這三處更改成這三個字串如下圖。存檔離開。

WordPress 安裝配置完成了,沒錯就這麼簡單。接著,別忘了,還要讓 Caddy web server 應對得到 wordpress 的網頁內容。所以最後,要編輯 /etc/caddy/Caddyfile 組態檔。

由 Web Server 提供的 routing 組態檔,功能上與配置上是可以很複雜的,但相對地彈性至極,有興趣的可以谷歌深入研究,不可錯過:至少要知道它到底能幫助您哪些東西。筆者在之前已配置了 8080,8081 兩個段落,接著加入第三段。

配置完存檔離開記得重啟:sudo systemctl restart caddy.service

# for general purpose tests
localhost:8080 {
    tls off
    root /var/web/html

    log /var/log/caddy/test_access.log
    errors /var/log/caddy/test_errors.log

     # PHP-FPM Configuration for Caddy
     fastcgi / /run/php/php7.3-fpm.sock php
}


# for phpmyadmin
localhost:8081 {
    tls off
    root /var/web/dbadmin

    log /var/log/caddy/dbadmin_access.log
    errors /var/log/caddy/dbadmin_errors.log

     # PHP-FPM Configuration for Caddy
     fastcgi / /run/php/php7.3-fpm.sock php
}

# for wordpress
http://localhost, https://localhost {
    tls off
    root /var/web/wordpress

     # PHP-FPM Configuration for Caddy
     fastcgi / /run/php/php7.3-fpm.sock php

    # Prevent malicious PHP uploads from running
    rewrite {
	r /uploads\/(.*)\.php
	to /
    }
    rewrite {
	if {path} not_match ^\/wp-admin
	to {path} {path}/ /index.php?{query}
    }
}

接著,開啟 wordpress 首頁進行安裝,也只有兩步驟毌須贅述:http://localhost/

歡迎進入 WordPress 天地

筆者後記:各位不難發現,Caddyfile 中加入一個區塊,其以不同網址來識別,來處理所設定的 root document 下的網頁內容。因此,例如,筆者可以再追加一個區塊,設其 root /var/web/wp,並以網址 http://localhost:8088/ 來識別。那麼如此仿照本文做法可建出另一個 wordpress 網站。就分別由 http://localhost/ 及 http://localhost:8088/ 來訪問到兩個不同的 wordpress 網站。這一點就通就不再追述。

倒是,筆者在他處提過,在 wordpress 下所有由使用者編輯的資料都是存放在資料庫的,那麼,是否可以只存放一份 wordpress 程式碼,共享給數個網站使用?應該是不行,最主要是 wordpress 的組態檔只有一份,且 ./wp-content 下的內容是因不同使用者而異的。但筆者認為應是可透過程式來引導分流的,也猜想是 wordpress 已有提供這樣用途的套件封裝了。
Creating Micro-sites Using WordPress: An Innovative Trend to Deviate from Existing Themes

20210908 補充

  • 正由於 ./wp-content 是 wp 最脆弱的地方,所以我們必須防範該“起義點”。一方面權限不能設太低。一方面也要防範它觸手所及之處;指的是其他 wp 系統檔案;所幸它們不會被更動。故,須將 ./wp-content 以外的檔案,全設為 444 或 400(?)。
  • 又或是 ownership 為 root:www-data,mode 644。
  • 最後終案:
  • 1. 若使用 root:www-data,那麼 wordpress 是無法自動更新,因為 owner 是 root。不過此權限在不打算更新的前提下,是最安全的;當有多人進入控制台時,可能就是設此權限且設全唯讀的時機。若要更新就是整個目錄底下手動更新。而 ./wp-content 需排除在外,需使用 www-data:root,不然 wordpress 根本無法使用。
  • 2. 因此較佳解就是使用 www-data:root。而 ./wp-content 排除在外來說,所有檔案使用 fmode=640,但 config 檔需使用 fmode=460(060 不行因為 wp 會去讀取)。而 ./wp-content,則是使用 fmode=664;ownership 則使用 www-data:root(事實上若 www-data:www-data 也無妨),其便可區隔由 www-data 新增出的檔案。
  • 3. database name 使用至少 2 個字元較恰當。
  • 執行示例如下,在 wordpress 目錄下,
sudo chown -R www-data:root *
sudo chmod -R 0640 *
sudo chmod 0460 wp-config.php
sudo chmod -R 0664 ./wp-content
sudo find . -type d -exec chmod a+x {} \;
  • 4. 預設下,./wp-content/ 底下的所有內容,都能夠被外界存取到,唯若路徑及檔名能夠正確地被索引到。這引導了兩個想法:
    想要自訂出某些路徑及檔案,便可置於此目錄底下。但命名必定要特殊不要輕易地被猜到。
    其次,新的自訂目錄,必要使用 0111 的目錄權限,才能確保目錄底下的檔案不被探知。
    當然,此舉未被知地削弱了安全性。

Categories: 架設網站

Tags:

PHP Code Snippets Powered By : XYZScripts.com