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進行置換修改
※ 注意!每個人都有自己的管理操作習慣,這裡的資訊僅供參考