先找一台LINUX的環境,而這次因為專案的關係,我使用的是”Debian GNU/Linux 10 (buster)”
MS SQL安裝流程:
1. 先匯入公開存放GPG金鑰
$sudo wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add –
2. 註冊MS-SQL Server 存放庫
$sudo add-apt-repository “$(wget -qO- ”
3. 安裝SQL Server
$sudo apt-get update
$sudo apt-get install -y mssql-server
4. 執行msqql-conf setup,進行設定SA密碼,選擇版本。
$sudo /opt/mssql/bin/mssql-conf setup
5. 確認服務正在執行
$sudo systemctl status mssql-server.service –no-pager
6. 記得開啟防火牆
$sudo ufw allow 1433
PostgreSQL安裝流程:
1. 套件更新
$sudo apt-get update
2. 安裝套件
$sudo apt-get install wget ca-certificates
3. 安裝PostgreSQL 的GPG-Key
$wget –quiet -O – https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add –
4. 新增Repository
$sudo sh -c ‘echo “deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main” >> /etc/apt/sources.list.d/pgdg.list’
5. 再一次套件更新
$sudo apt-get update
6. 安裝Postgesql
$sudo apt-get install -y postgresql postgresql-contrib
7. 設定連線,監聽埠號
$sudo vim /etc/postgresql/13/main/postgresql.conf
將監聽的IP位置改成「*」就可以讓外部的使用者可以讀取資料庫了
修改設定檔儲存後重啟服務。
$sudo systemctl restart postgresql
8. 設定連入Postgresql的名單
$sudo vim /etc/postgresql/13/main/pg_hba.conf
9. 使用postgresql登入資料庫,並修改密碼
$sudo su – postgres
$ ALTER USER postgres with password ‘使用者的密碼’
使用管理套件Pgadmin4來管理PostgreSQL
1. 安裝套件
$sudo apt-get install curl ca-certificates gnupg
2. 新增憑證
#curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -(只能使用root執行)
3. 新增Repository
$sudo vim /etc/apt/sources.list.d/pgdg.list
$deb http://apt.postgresql.org/pub/repos/apt/ buster-pgdg main
4. 套件更新 & 安裝
sudo apt-get install pgadmin4 pgadmin4-apache2
設定使用者名稱與密碼
5. 輸入帳號與密碼登入Pgadmin4的 web管理頁面
6. 點選主機→右鍵→新增主機
輸入相關的主機資訊後,就可以新增主機並連線了!
※如果無法新增主機,確認pg_hba.conf、postgresql.conf、防火牆規則預設5432 port,有沒有設定並重啟服務。
Apache2工作的三種MPM(多進程處理模式):Prefork、Worker、Event
Apache的版本,2.0預設Prefork、2.2預設Worker、2.4預設Event。
查看目前使用哪個模式:
$sudo apachectl –V
查看版本模式等資訊
三種MPM模式:
1. Prefork模式
預先創立多個子Process,然後等待請求。減少頻繁創建和銷毀Thread的開銷。而每個Process在某個確定的時間只單獨處理一個連接。效率高,但記憶體用量大。
2. Worker模式
Worker模式也同樣預先建立多個子Process,然後每個子Process創建一些Therad,同時包刮一個監聽執行緒。每個請求都會被分配到一個執行緒來服務。
3. Evemt模式
和worker模式很像,解決了keep-alive長連接的時候佔用Thread資源被浪費的問題,會有專門的Thread來管理這些keep-alive類型的Thread。收到真實的請求後,就會傳遞給服務器的Thread,執行完畢後允許將他釋放,增強高併發場景下的請求處理能力。亦即每個Thread響應多個請求。
各項參數解釋:
StarServers:伺服器啟動時建立的子程序數量,在Worker模式下預設3
ServerLimit:系統配置的最大程序數量,預設不顯示。預設值為20
MaxClients:同時會被處理的請求數量,設定值最好是ServerLimit*ThreadPerChild
ThreadsPerchild:代表每個子行程建立的執行緒數量,預設為64
MiniSpareThreads:最少閒置執行緒數量,worker的預設值為75如果閒置數量不足,Apache會自動心曾執行緒至大於等於此設定
MaxSpareThreads:最大閒置執行緒數量,使用worker的預設值為240
※Event內寫做MaxRequestWorkers
MaxRequestPerChild:每個子行程在生命週期內處理請求的次數上限,超過上限的子行程會被結束,設為0表示沒有處理請求次數上限。
根據主機資源的不同要依照不同的主機給予相對應的設定,例如主機的記憶體只有1G Ram可以作為使用,則筆者會試著將設定值調整如下。
$Sudo vim /etcp/apache2/mods-available/mpm_event.conf
Event MPM config:
Startserver 3
MiniPSare Thread 75
MaxSpare Thread 250
ThreadPerChild 25
MaxRequestWorkers 400
MaxConnectionsPerChild 0
設定完成後記得將服務Restart
其他相關的配置還需要在依照主機與需求不同而給予相關設定及測試。
現在大家廣為使用的WebServer是Apache、IIS、Nginx。未來有機會筆者也會接觸Nginx來感受各WebServer的差異性與優缺點,最後還是要依照使用者的需求,去打造最佳化的環境。