Toggle main menu visibility
下載輕鬆架
套件下載
使用手冊
發問討論
網站地圖
:::
登入
登入
帳號
密碼
登入
:::
所有書籍
「OB2D主機架設」目錄
MarkDown
7-1-1 修改 php.ini
1. 下載及安裝
2. 讓 ROOT 可以從 pietty 登入
3. 優化 vi
4. 讓ll可以使用
5. 修改防火牆
6. 修改 source.list並進行套件更新
7. Apache的設定及優化
7-1 Prefork 模式
7-1-1 修改 php.ini
7-2 Worker 模式
7-3 Event 模式
7-4 修改Apache 設定
7-5 啟動使用者家目錄及PHP功能
7-6 啟用HTTP2
7-7 加入SSL
7-8 跨域或設定可被崁入網站
7-9 修改phpmyadmin 連線範圍
8. 安裝Nginx(非必須)
8-1 安裝PHP-FPM
8-2 啟用使用者目錄
8-3 安裝 MariaDB
8-4 網站伺服器效能優化
9. 修改mysql密碼
9-1 優化MySQL
9-2 讓資料庫可以讓別的主機連線
10. 修改網卡及ip等資訊
11. 設定IPv6
12. 關閉 mail relay
13. 自動時間校正
14. 加入monit監控
15. 預設使用者目錄內容
16. 大量建立帳號
17. 修正 /etc/rc.local 無效問題
18. 異地備份
19. 安裝docker
20. 安裝Jitsi meet
22. 漂亮終端機
23. 常用指令
7-3 Event 模式
OB2D主機架設 ======== worker使用了多進程和多線程的混合模式。它也預先產生幾個子進程(數量比較少),然後每個子進程創建一些線程,同時包括一個監聽線程。每個請求過來,會被分配到1個線程來服務。 線程比起進程會更輕量,因為線程通常會共享父進程的內存空間,因此,內存的佔用會減少一些。在高並發的場景下,因為比起prefork有更多的可用線程,表現會更優秀一些。 - 優點:佔據更少的內存,高並發下表現更優秀。 - 缺點:必須考慮線程安全的問題,因為多個子線程是共享父進程的內存地址的。如果使用keep-alive的長連接方式,某個線程會一直被佔據,也許中間幾乎沒有請求,需要一直等待到超時才會被釋放。如果過多的線程,被這樣佔據,也會導致在高並發場景下的無服務線程可用。(該問題在prefork模式下,同樣會發生) 註:keep-alive的長連接方式,是為了讓下一次的socket通信復用之前創建的連接,從而,減少連接的創建和銷毀的系統開銷。保持連接,會讓某個進程或者線程一直處於等待狀態,即使沒有數據過來。 1. 更新套件庫 ```bash apt-get update ``` 2. 升級套件 ```bash apt-get upgrade ``` 3. 安裝php-fpm ```bash #for Debian 10 Buster apt-get install -y php7.3-fpm #for Debian 9 Stretch apt-get install -y php7.0-fpm #for Debian 8 Jessie apt-get install -y php5.6-fpm ``` 4. 關閉mpm\_prefork 相關模組(php版本請自行調整)並開啟 mpm\_worker 相關模組 並啟用 php-fpm 設定,最後重啟apache使之生效 ```bash a2dismod php7.0 mpm_prefork a2enmod mpm_worker actions a2enconf php7.0-fpm systemctl restart apache2 ``` 5. 設定 php.ini,可參考 [https://campus-xoops.tn.edu.tw/modules/tad\_book3/page.php?tbdsn=220](https://campus-xoops.tn.edu.tw/modules/tad_book3/page.php?tbdsn=220) ```bash #for Debian 10 Buster vi /etc/php/7.3/fpm/php.ini #for Debian 9 Stretch vi /etc/php/7.0/fpm/php.ini #for Debian 8 Jessie vi /etc/php/5.6/fpm/php.ini ``` 6. 重啟 php-fpm 後 php.ini 才會生效,先找出 php-fpm: master process 的程序編號 ```bash ps aux|grep php-fpm ``` 7. 然後根據程序編號執行以下指令即可重啟 php-fpm ```bash kill -USR2 程序編號 ``` 8. 編輯 mpm\_worker 設定檔 ```bash vi /etc/apache2/mods-available/mpm_worker.conf ``` 9. 建議內容如下: ```bash
StartServers 3 MinSpareThreads 75 MaxSpareThreads 250 ThreadsPerChild 25 MaxRequestWorkers 400 MaxConnectionsPerChild 0
``` - StartServers:一開始建立的子進程數,每個子進程中包含固定的ThreadsPerChild線程數 - MinSpareServers:最小數量的服務器進程,保存備用(最大預設值是75,達此數就不再主動建立新的進程,如果站點負載較大,可加大此值) - MaxSpareServers:最大數量的服務器進程,保存備用(最大預設值是250,空閒進程數大於此值時,Apache會自動kill掉一些多餘進程。故不要設得過大,如果站點負載較大,可加大此值) - ThreadsPerChild: 每個子進程的線程數(預設值是64, 如果負載較大,64也是不夠的。這時要顯式使用 ThreadLimit 指令,它的最大預設值是 20000) - MaxRequestWorkers: 如果現有子進程中的線程總數不能滿足負載,控制進程將派生新的子進程 - MaxConnectionsPerChild:設置的是每個子進程可處理的請求數(0意味著子進程永不銷毀,但不建議,舊名MaxRequestsPerChild ) 10. Worker模式下所能同時處理的請求總數=子進程總數xThreadsPerChild ,請求總數應該 >= MaxRequestWorkers。 11. 如果負載很大,現有的子進程數不能滿足時,控制進程會派生新的子進程。 12. 默認最大的子進程總數是16,加大時 也需要顯式聲明ServerLimit(最大值是20000) 13. 需要注意的是,如果顯式聲明了ServerLimit,那麼它乘以 ThreadsPerChild的值必須大於等於MaxRequestWorkers,而且MaxRequestWorkers必須是ThreadsPerChild的整數倍,否則 Apache將會自動調節到一個相應值。 14. 最後重新啟動Apache ```bash systemctl restart apache2 ``` 15. 修改 /uploads/.htaccess ```bash vi /var/www/html/uploads/.htaccess ``` 16. 刪掉 php\_flag engine off,並在最後加入: ```bash
SetHandler none SetHandler default-handler Options -ExecCGI RemoveHandler .php
``` 17. 日後若要改回mpm\_prefork模式的話,則反過來做即可 ```bash a2dismod mpm_worker actions a2enmod php7.0 mpm_prefork systemctl restart apache2 ``` 18. 記得刪掉php-fpm程序 ```bash ps aux|grep php-fpm|awk '{print $2}'|xargs kill -9 ``` 參考自:
:::
書籍目錄
展開
|
闔起
快速登入
所有討論區
Tad Search 資料查詢
懶人框架討論區
實戰PHP7+MySQL
XOOPS輕鬆架快速上手
校園網站輕鬆架一般討論區
Booking Helper 預約助手
es_stud_sign 班級報名
es charge 學生收費管理
E-Stud import 學生名冊管理
es_after_school 課後照顧報名
es_exam 學生作業繳交
ES_panel 校務行政面板
es_timetable 課表
ES_youtube 本校影音
info_whats 網路設備記錄
jill booking 場地預約
jill_notice 臨時公告
jill query 簡易查詢
jill receipt 領據填報
kw club 社團報名
kw device 設備借用管理系統
ntpc_oprnid 新北市 OpenID 登入
TinyD嵌入內容模組
ugm contact us 聯絡我們
ugm page 自訂頁面
ugm table 萬用表格
Yaoh Servicelearning 服務學習管理系統
dummy 自訂模組
soone_submit 投稿模組
Tad Adm 站長工具箱
Tad Assignment 作業上傳展示模組
Tad Blocks 進階區塊管理
Tad Book3 線上書籍
Tad Cal 行事曆
Tad Cbox 即時留言簿
Tad Discuss 討論區模組
Tad Embed 崁入模組
Tad Evaluation 評鑑檔案管理
Tad Form 萬用表單模組
Tad FAQ 常見問答
Tad Google 相簿
Tad Gallery 電子相簿
Tad Guide 安裝精靈
Tad Honor 榮譽榜
Tad idioms 背背成語
Tad Link 好站連結
Tad Login 快速登入
Tad Lunch3 午餐資訊
Tad Lunch2 營養午餐公告
Tad Meeting 會議系統
Tad Merage 線上合併套印
Tad News 本站消息
Tad Player 影音播放
Tad RSS 友站新聞
Tad Repair 維修通報
Tad SiteMap網站地圖
Tad Timeline 重要紀事
Tad Themes 佈景管理
Tad Tools 工具包
Tad TV 直播電視
Tad Uploader 檔案上傳模組
Tad Users 大量會員管理
Tad Web 多人網頁模組
MyTabs 我的頁籤
Random Quote 隨機小語
LogCounterX 網站流量統計
Yaoh light 多區塊多層次跑馬燈模組
校園網站輕鬆架功能建議區
佈景討論區
即時留言簿
search
進階搜尋
計數器
今天:
昨天:
總計: