UbuntuLinux安裝WordPress從零到有的筆記

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進行置換修改
瀏覽次數:47