這是一次搬站紀錄 之前蹭 Github Student Pack 的 DigitalOcean VPS 試用金用完了,趁著 Oracle 的虛擬機刷好了把部落格搬過去,順便做一下紀錄,畢竟每次裝環境總是有翻車的不確定性…
事前準備
Oracle VPS 一台 : Arm64v8、作業系統採用新手友善的 Ubuntu 20.04 ( 懶人刷 Oracle VPS 教學 : https://github.com/lemoex/oci-help )
架站用的域名 ( Gandi、CloudFlare 都不錯用,個人現在用 CloudFlare,便宜 )
DNS 服務商 ( 個人用 CloudFlare,沒什麼原因,他最好用又不用錢 )
SSH 連線軟體 ( MobaXterm、TabbyAlpha 都好用 )
可以收信的電子郵件
作業環境
Windows 11 Professional
MobaXterm v21.5
ubuntu 20.04
實際操作
安裝順序
系統準備 > Apache > MariaDB > PHP > WordPress > Let’s Encrypt SSL
系統準備 sudo susudo apt-get update && sudo apt-get upgradesudo apt-get cleansudo apt-get autoremove
安裝與啟動 Apache2 sudo apt install apache2sudo systemctl start apache2.servicesudo systemctl enable apache2.servicesudo systemctl stop apache2.service
到這邊為止,Apache2 應該已經安裝完成,這時候可以連到 https://your-vps-public-ip 來檢查 Apache2 運作狀態,應該如下 :
Apache2 安裝成功後應該要出現的頁面
看的到這個頁面就代表你應該沒有翻車
安裝 MariaDB
Q: 為什麼用 MariaDB 而不是 MySQL A: MariaDB 更新比較頻繁,而且相容性也很強 ( 它是 MySQL 的 fork ),所以用它
sudo apt install mariadb-serversudo apt install mariadb-clientsudo systemctl start mariadb.servicesudo systemctl enable mariadb.servicesudo systemctl stop mariadb.service
如果安裝過程中沒有顯示權限設定的輸入畫面則進行以下操作 :
sudo mysql_secure_installationIf you've just installed MariaDB, and haven' t set the root password yet, you should just press enter here. Enter current password for root (enter for none): PRESS ENTER Switch to unix_socket authentication [Y/n] n Change the root password? [Y/n] n Remove anonymous users ? [Y/n] y Disallow root login remotely? [Y/n] y Remove test database and access to it? [Y/n] y Reload privilege tables now? [Y/n] y All done ! sudo mysql -u root -pEnter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 52 Server version: 10.3.34-MariaDB-0ubuntu0.20.04.1 Ubuntu 20.04 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help . Type '\c' to clear the current input statement. MariaDB [(none)]> EXIT; Bye
到這邊 MariaDB 就安裝好了
安裝 PHP $ sudo add-apt-repository ppa:ondrej/php $ sudo apt-get update sudo apt install php8.1 php8.1-common php8.1-mysql php8.1-gmp php8.1-curl php8.1-intl php8.1-mbstring php8.1-xmlrpc php8.1-gd php8.1-xml php8.1-cli php8.1-zip php8.1-fpmsudo nano /etc/php/8.1/apache2/php.inifile_uploads = On allow_url_fopen = On short_open_tag = On memory_limit = 256M upload_max_filesize = 100M max_execution_time = 360 date.timezone = Asia/Taipei sudo apt purge '^php8.0.*' sudo a2enmod php8.1systemctl restart apache2
建立 Wordpress 用的數據庫 sudo mysql -u root -pCREATE DATABASE wpdb; CREATE USER 'wpdbuser' @'localhost' IDENTIFIED BY 'new_password_here' ; GRANT ALL ON wpdb.* TO 'wpdbuser' @'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES; EXIT;
下載 Wordpress cd /tmpwget https://wordpress.org/latest.tar.gz tar -xvzf latest.tar.gz sudo mv wordpress /var/www/wordpresssudo chown -R www-data:www-data /var/www/wordpress/ sudo chmod -R 755 /var/www/wordpress/
設定 Apache2 與 Wordpress sudo nano /etc/apache2/sites-available/wordpress.conf
把以下內容貼入、更改後保存
//將 example.com、www.example.come 改成自己的域名 <VirtualHost *:80> ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/wordpress <Directory /var/www/wordpress/> Options FollowSymlinks AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> <Directory "/var/www/html/wordpress"> AllowOverride All </Directory>
重啟 Apache2 :
sudo a2ensite wordpress.confsudo systemctl restart apache2.service
設定 Oracle iptable
為什麼有這個不常見的步驟?
因為翻車之神 Hiraku 已經開釋了Oracle Cloud Ubuntu 不用預設 iptables 的方法 By Hiraku 想了解詳細的請移駕過去看,總之一切都是 Oracle 的鍋
sudo supasswd ufw allow 22 ufw allow 80 ufw allow 443 ufw enable apt-get remove iptables apt-get install ufw ufw status ufw enable reboot
設定 Let’s Encrypt SSL 加密
詳細作法請參考 How to Setup Let’s Encrypt on Ubuntu Linux with Apache
sudo apt-get install certbot python3-certbot-apache -ycertbot --apache -d example.com
完成後重新啟動 Apache2 :
sudo systemctl reload apache2
最後步驟 到這邊環境就已經安裝完了,之後去 https://example.com 把 Wordpress 內的設定跑完就可以了
參考資料
Oracle Cloud Ubuntu 不用預設 iptables 的方法 By Hiraku : https://hiraku.tw/2020/04/6171/
How to Setup Let’s Encrypt on Ubuntu Linux with Apache : https://websiteforstudents.com/how-to-setup-lets-encrypt-on-ubuntu-linux-with-apache/