跳到主內容

新頁面

切換成root角色

sudo su

有些vps預設會直接用root,就不用切換。我是習慣全用root去執行操作,主機只有自己會管理,有時遇到權限的問題真的蠻雷的 XD

安裝伺服器

apt install nginx php-fpm php-gd php-mbstring php-gd php-xml mysql-server mysql-client certbot

Drupal或WordPress裝完後可以再檢查看看有沒有漏掉哪個php程式,再補齊安裝即可

不要用apt-install php,這樣會安裝apache2

設定MySQL

設定mysql密碼

以root進入mysql

mysql -u root

更改密碼

ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'yourpassword'; exit;

yourpassword 記得改成你自己的密碼

如果你的資料庫有設定外連,那可能就要避免直接用root,不然就是務必把防火牆的限定做好

調整conf檔
在 /etc/mysql/mysql.cnf 最尾段加入

[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

加入後後重啟 server,binlog_size務必要設定,log檔可能會被你的空間佔滿

在 ~/.my.cnf 加入密碼

[client]
password = yourpassword

MySQL基本的管理指令

建立資料庫

mysqladmin -u root create site

刪除資料庫

mysqladmin -u root drop site

匯出資料庫

mysqldump -u root site > site.sql

匯入資料庫

mysql -u root site < site.sql

學會這幾招基本上就差不多可以不用裝phpMyAdmin XD

啟用及設定伺服器防火牆

ufw enable
ufw allow from xxx.xxx.xxx.xxx (填上自己連入的IP)
ufw allow 80/tcp
ufw allow 'Nginx HTTP'
ufw allow 'Nginx HTTPS'




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