使用LNMP環境搭建WordPress網站

前言

這算是之前搭建部落格時考慮過的方案,不過後來還是選擇了hexo這種靜態框架,所以就記錄一下查詢資料和架設的歷程。

架設

安裝

先下載安裝必要的組件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ sudo apt install nginx nginx-extras
$ # 我使用的database是mariadb,也可使用mysql或postgresql
$ sudo apt install mariadb-server
$ # 安裝需要的php軟體包,可視情況減少或增加
$ sudo apt install php php-fpm php-cli php-mysql php-mbstring php-xml php-gd php-curl php-ssh2 php-imagick php-json php-tokenizer php-zip php-intl
$ # 下載wordpress
$ wget https://tw.wordpress.org/latest-zh_TW.tar.gz
$ # 解壓縮
$ tar -zxvf latest-zh_TW.tar.gz
$ # 新建網站的根目錄,sitename可以是網站的網址或任何你喜歡的名字,後面按需替換
$ sudo mkdir -p /var/www/sitename
$ sudo mv wordpress/* /var/www/sitename/
$ # 更改權限
$ chown -R www-data:www-data /var/www/sitename
$ chmod -R 755 /var/www/sitename

Database配置

使用root執行mysql_secure_installation

1
# mysql_secure_installation

跟著引導安裝即可,說明很完全


執行mysql,進入Database

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 可以使用其他的名稱來命名Database,這裡以wordpress作為範例,如果改名後面也要更改
MariaDB [(none)]> CREATE DATABASE wordpress;
Query OK, 1 row affected (0.002 sec)

# 新建wpuser的帳戶,密碼為passwd,可以存取wordpress的所有權限,可以用其他用戶名和密碼,待會會使用到
MariaDB [(none)]> GRANT ALL PRIVILEGES ON wordpress.* TO "wpuser"@"localhost" IDENTIFIED BY "passwd";
Query OK, 0 rows affected (0.008 sec)

# 應用
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.003 sec)

MariaDB [(none)]> exit
Bye

網頁設定

php

編輯/etc/php/8.2/fpm/php.ini,搜尋這三個設定並更改,如果php版本較高,記得更改對應的位置

1
2
3
cgi.fix_pathinfo=0
upload_max_filesize = 256M
post_max_size = 256M

編輯/etc/php/8.2/fpm/pool.d/www.conf,這些應該是預設值,確認一樣即可

1
2
3
listen = /run/php/php8.2-fpm.sock
user = www-data
group = www-data

重啟php-fpm

1
2
# systemctl enable --now php8.2-fpm
# systemctl restart php8.2-fpm

nginx

編輯/etc/nginx/nginx.conf,修改對應的部分

1
2
3
4
5
6
7
8
9
event{
worker_connections 1024;
use epoll;
multi_accept on;
}
http{
server_tokens off;
client_max_body_size 256M;
}

編輯/etc/nginx/fastcgi_params,在最後加上設定

1
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

新增/etc/nginx/sites-available/wordpress,編輯virtual server設定,這個設定為http站點,且設定為default_server,可依照自己需求進行更改。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
server {
listen 80 default_server;
## Your website name goes here.
# server_name example.com;
## Your only path reference.
root /var/www/sitename;
## This should be in your http block and if it is, it's not needed here.
index index.php;

client_max_body_size 512M;

# log
access_log /var/log/nginx/wordpress/access.log;
error_log /var/log/nginx/wordpress/error.log;

location = /favicon.ico {
log_not_found off;
access_log off;
}

location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}

location / {
# This is cool because no php is touched for static content.
# include the "?$args" part so non-default permalinks doesn't break when using query string
try_files $uri $uri/ /index.php?$args;
}

location ~ \.php$ {
#NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
include fastcgi_params;
fastcgi_intercept_errors on;
fastcgi_pass unix:/run/php/php-fpm.sock;
#The following parameter can be also included in fastcgi_params file
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
}

最後將站點啟用並重啟nginx

1
2
3
4
5
6
7
8
9
10
11
12
13
$ # 創建設定檔中log的放置資料夾
$ sudo mkdir -p /var/log/nginx/wordpress/
$ # 啟用站點
$ sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/wordpress
$ # 刪除預設站點
$ sudo rm /etc/nginx/sites-enabled/default
$ # 測試設定檔是否正確,應該是不會報錯
$ sudo nginx -t
$ # 啟用服務
$ sudo systemctl enable --now nginx.service
$ # 重啟nginx
$ sudo nginx -s reload

WordPress安裝

在完成前面的設定後使用瀏覽器打開你架設WordPress服務器的IP,應該會看到這個頁面

接下來就跟著導引安裝即可

資料庫名稱使用剛剛Database設定部分資料庫的名字,帳號和密碼同樣也是按照設定的填

如果都沒填錯,那麼應該就會看到這個畫面,執行安裝即可

接下來就是WordPress站點的設定,同樣也是自己按需填寫即可,這邊填的都是範例資料

這樣就完成WordPress的安裝了,登入即可開始Wordpress網站的設定

參考


使用LNMP環境搭建WordPress網站
https://www.zenwen.eu.org/wordpress-with-LNMP-environment/
作者
Zen Wen
發布於
2024年8月5日
許可協議