Ubuntu 22.04安裝WordPress筆記,我用了大概2年多累積的經驗,筆記起來隨時可以參考使用
切換成root角色
有些vps預設會直接用root,我是習慣全用root去執行操作,主機只有自己會管理,有時遇到權限的問題真的蠻雷的 XD
sudo su
安裝主要程式
apt install nginx php-fpm php-gd php-mbstring php-gd php-xml php-mysql mysql-server mysql-client certbot
安裝前有先安裝 (WordPress裝完後可以再檢查看看有沒有漏掉哪個php程式再滿足即可,不要用apt-install php,這樣會安裝apache)
啟用及設定伺服器防火牆
ufw enable ufw allow from xxx.xxx.xxx.xxx (填上自己連入的IP) ufw allow 80/tcpufw allow 'Nginx HTTP'ufw allow 'Nginx HTTPS'
安裝wp-cli
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar chmod +x wp-cli.phar sudo mv wp-cli.phar /usr/local/bin/wp
wp-cli安裝參考:https://wp-cli.org/#installing
新增目錄並使用wp-cli下載最新版本的WordPress主程式
cd /var/www/ mkdir site cd site wp core download --locale=zh_TW --allow-root
設定mysql密碼
yourpassword 記得改成你自己的密碼
mysql -u root ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'yourpassword'; exit;
在 /etc/mysql/mysql.cnf 最尾段加入後重啟 server
[client] default-character-set = utf8mb4 [mysqld] character-set-server = utf8mb4 max_connections = 600 innodb_read_io_threads = 24 innodb_write_io_threads = 24 expire_logs_days = 7 max_binlog_size = 1G
在 ~/.my.cnf 加入密碼
[client] password = yourpassword
新增資料庫
mysqladmin -u root -p create site
Nginx 設定檔
server {
## Your website name goes here.
server_name site.com;
## Your only path reference.
root /var/www/site;
## This should be in your http block and if it is, it's not needed here.
index index.php;
client_max_body_size 100M;
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:/var/run/php/php8.2-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;
}
}
設定SSL
certbot -d site.com
調整目錄權限
chown -R www-data:www-data /var/www/site
完成後就可以輸入 https://site.com 進站完安裝程序
安裝WordPress後的設定及我必裝的外掛
裝好後最好立即啟用防火牆外掛,並更換wp-admin預設路徑;永久連結設定選擇文章名稱,媒體設定為上傳的檔案建立以年份及月份命名的資料夾勾選取消
- 必裝外掛,安全相關:All In One WP Security、Falcon
- 必裝外掛,效能相關:APCu Manager、DecaLog、Cache Enabler
- 必裝外掛,SEO相關:Slim SEO、XML Sitemap & Google News
圖片管理的部份,由於我是用圖床,採用 External Media without Import 處理圖的問題
使用wp-cli維護更新程式
#!/bin/bash
# 充許root使用WP CLI
export WP_CLI_ALLOW_ROOT=1
# 列出要更新的網站
SITES=("site" "site1" "site2" )
# 更新網站語法
for SITE in "${SITES[@]}"; do
SITE_DIR="/var/www/$SITE"
cd "$SITE_DIR"
# 執行更新動作
wp core update
wp plugin update --all
wp core language update
wp core update-db
wp theme update --all
# wp db optimize
echo "網站 $SITE 更新完成"
done
調整執行權限,之後執行 ./wpnew.sh 即可更新
chomd +x wpnew.sh
網站搬家
網站搬家可以分成2種來討論
- 不用換網址:直接把目錄及sql備份還原及可
- 需要換網址:由於WordPress的站如果網址有更動,就必須透過WPvivid這類的備份還原程式,成功率算蠻高的,當然還是加減有還原失敗的經驗,例如有些路徑沒成功還原,漏網之魚可以在登入phpmyadmin進行置換修改
※ 注意!每個人都有自己的管理操作習慣,這裡的資訊僅供參考