在Linode上建立/遷移網站參考步驟

在Linode上建立/遷移網站參考步驟
Photo by Domenico Loia / Unsplash

借由AI的幫忙,相關的指令均可由AI幫忙產生,故我主要記錄需要完成的任務及目標。

安裝作業系統及簡易資安管控

1.安裝作業系統/選擇作業系統映像檔
2.調整SWAP大小為記憶體2倍(預設只有507900k,將其調整為2048M)
3.設定時區為系統管理者所在時區(Asia/Taipei)
4.安裝防火牆ufw,設定開機自動啟動,允入ssh、http、https,並記錄連線log
5.安裝fail2ban防止ssh暴力密碼破解攻擊
6.設定連線時間30分鐘逾時自動斷線
7.設定指令別名(alias)
8.安裝sudo
9.新增一個管理者帳號,並設定這個管理者帳號可以執行sudo
10.設定只有這個管理者帳號可以ssh遠端登入,並拒絕root帳號可以ssh登入
11.設定主機名稱
12.調整kernel參數(net.core.rmem_max、net.core.wmem_max、net.core.rmem_default、net.core.wmem_default)

安裝資料庫軟體及還原資料庫

1.安裝資料庫伺服器PostgreSQL
2.設定pg_hba.conf,讓local連線允許trust認證
3.新增資料庫使用者,並設定其密碼
4.建立資料庫同時指定該資料庫的擁有者為前面步驟新增的資料庫使用者
5.從資料庫備份檔還原資料庫內容到新建的資料庫

安裝應用伺服器及還原網頁程式

1.安裝OpenJDK JRE
2.安裝Tomcat 9:
2.1.使用wget從Apache Tomcat網站下載點取得apache-tomcat-<version>.tar.gz檔
2.2.將其解壓縮到/opt目錄下
2.3.建立符號連結/opt/tomcat9指向解壓縮後的/opt/apache-tomcat-<version>目錄
2.4.為便於日後升級Tomcat版本時不用搬移設定檔,另外建立以下4個目錄:
/var/tomcat9/conf、/var/tomcat9/logs、/var/tomcat9/temp、/var/tomcat9/work
2.5.建立/var/webapps目錄作為存放Java EE應用程式的目錄,可避免日後升版Tomcat時還要另外將網頁搬移到新的目錄
2.6.建立符號連結/var/tomcat9/webapps指向/var/webapps
2.7.將/opt/tomcat9/conf目錄下的內容複製到/var/tomcat9/conf
2.8.新增一個tomcat帳號,並將其設定為無法登入(/usr/sbin/nologin),並將其家目錄設定為/var/tomcat9
2.9.將/var/tomcat9目錄底下所有檔案或目錄的擁有者變更為tomcat
2.10.建立/var/run/tomcat目錄,並將擁有者變更為tomcat
2.11.建立tomcat9自動啟動服務檔/usr/lib/systemd/system/tomcat9.service,內容如下

[Unit]
Description=Apache Tomcat 9
After=network.target

[Service]
Type=forking

# Tomcat 安装路徑 /opt/tomcat9
Environment=CATALINA_HOME=/opt/tomcat9
Environment=CATALINA_BASE=/var/tomcat9
Environment=CATALINA_PID=/var/run/tomcat/tomcat.pid

# 啟動、停止命令
ExecStart=/opt/tomcat9/bin/catalina.sh start
ExecStop=/opt/tomcat9/bin/catalina.sh stop

# 執行權限 不要直接使用 root
User=tomcat
Group=tomcat

# 日誌輸出錯誤訊息
SuccessExitStatus=143
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

2.12.將備份的網頁還原到/var/webapps目錄下
2.13.將備份的server.xml中站台或webapps設定還原到/var/tomcat9/conf/server.xml
2.14.修正tomcat access log中的client source ip(避免抓到Reverse Proxy IP)

安裝nginx及安裝Let’s Encrypt SSL憑證

1.安裝nginx
2.在/etc/nginx/sites-available/目錄下建立站台設定檔
3.在/etc/nginx/sites-enabled/目錄下建立符號連結,指向/etc/nginx/sites-available/目錄下建立站台設定檔
4.安裝certbot python3-certbot-nginx
5.執行cerbot指令依據網站使用之域名分別建立對應之SSL憑證

安裝郵件服務及確認系統可發送郵件

1.安裝mailutils
2.設定/etc/exim4/update-exim4.conf.conf,設定smarthost為smtp.gmail.com::587
3.設定/etc/exim4/passwd.client,使用gmail作為發信帳號
4.測試發送郵件