前言:
2021新年第一篇
本篇是紀錄如何在Ubuntu 20.04 LTS 底下搭建LEMP + WordPress + SSL
原本伺服器都是用CentOS...用的好好的,幹嘛換Ubuntu?
原因是RedHat突然宣布把CentOS收掉...聽到這消息真晴天霹靂!!!
CentOS8 原本到2029 直接被砍...不會有CentOS9
較多人用的CentOS7直維持到2024...而我伺服器用的CentOS6
在2020.11到期了,當初做完升級有注意到到期的問題,原本以為升級7 或8就好了沒想到RedHat直接把CentOS放生...
目前用的SSL 是 Let's Encrypt 提供的,在CentOS 6停更後,居然SSL也接著
不能用了,所以這次就順勢把伺服器整個換成Ubuntu
做這決定真的讓我掙扎很久...一直是CentOS的愛用者...
以下就是操作流程,先說結論:Ubuntu要裝LEMP (LNMP) 很方便
20分鐘內就完成整個系統的建置...手速更快的應該不用10分鐘
(我一邊開著YT看JOJO冒險野郎一邊做 XD)
Step1
安裝Ubuntu 20.04 LTS 我的server在Linode 系統裝好後就直接SSH連線
#更新系統
sudo apt-get update
#安裝Nginx
sudo apt install nginx
#安裝 MariaDB
sudo apt-get install mariadb-server mariadb-client
#啟動 Nginx & MariaDB
sudo systemctl start nginx.service
sudo systemctl enable nginx.service
sudo systemctl start mariadb.service
sudo systemctl enable mariadb.service
#安裝 PHP7.4
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update
#安裝 PHP相關套件
sudo apt install php7.4-fpm php7.4-common php7.4-mysql php7.4-gmp php7.4-curl php7.4-intl php7.4-mbstring php7.4-xmlrpc php7.4-gd php7.4-xml php7.4-cli php7.4-zip
Step2
Nginx、MariaDB、PHP相關設定
資料庫設定
#資料庫初始設定 (設定資料庫root密碼)
sudo mysql_secure_installation
#新增資料庫跟使用者 (給WordPress用)
#下面的帳號密碼資料庫名稱請自行替換
sudo mysql -u root -p
CREATE DATABASE 資料庫名稱;
CREATE USER '使用者名稱'@'localhost' IDENTIFIED BY '密碼';
GRANT ALL ON 資料庫名稱.* TO '使用者'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;
sudo systemctl restart mariadb.service
PHP設定
#編輯php.ini內容 主要是把上傳檔案限制開大
sudo nano /etc/php/7.4/fpm/php.ini
#以下是php.ini要改的部分
short_open_tag = On
memory_limit = 256M
cgi.fix_pathinfo = 0
#上傳檔案大小限制,不要開太大...
upload_max_filesize = 20M
max_execution_time = 360
下載WordPress
#先下載wordpress
cd /tmp
wget https://tw.wordpress.org/latest-zh_TW.tar.gz
tar -xvzf latest-zh_TW.tar.gz
sudo chown -R www-data:www-data wordpress/
sudo chmod -R 755 wordpress/
sudo mv wordpress/ /var/www/html/
Nginx設定
#編輯 Nginx設定檔
sudo nano /etc/nginx/sites-available/wordpress
#以下是設定檔的內容(直接貼上..server_name要改成自己的網址)
server {
listen 80;
listen [::]:80;
root /var/www/html/wordpress;
index index.php index.html index.htm;
server_name example.com www.example.com;
client_max_body_size 100M;
autoindex off;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
#存檔離開後
sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default
sudo systemctl restart nginx.service
完成以上步驟,打開瀏覽器,輸入網址,應該就可以看到WordPress安裝畫面,這邊有個小坑...如果是用Chrome會看不到網頁...要用IP
因為Chrome預設只能開啟https的網址,SSL目前還沒裝...
用其他瀏覽器就可以看到畫面~如IE (Edge ...我還是習慣叫它IE) 或Firefox
接下來最後的步驟把SSL裝上
Step3
SSL 安裝&設定
sudo snap install core; sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
#讓certbot 自動修改Nginx設定
sudo certbot --nginx
備註1:
用的很久很久的Pietty 在這次升級後,也不能用了,因為加密的演算法過時,Ubuntu不支援...改用Putty
備註2:
裝完certbot後,可以不用設定排成自動更新...就等著看...
The Certbot packages on your system come with a cron job or systemd timer that will renew your certificates automatically before they expire. You will not need to run Certbot again
Reference:
- How to Install WordPress on Ubuntu 20.04
- certbot + Nginx on Ubuntu 20.04
- 使用putty以ssh連線至ptt