LAMP架构
LAMP架構(gòu)
1. LAMP介紹
1.1 動態(tài)資源和靜態(tài)資源
注意:靜態(tài)和動態(tài)的區(qū)別,不在于網(wǎng)頁是否能動態(tài)變化,而是客戶端的程序文件是否和服務(wù)器端的程序文件保持一致。
WEB相關(guān)語言
1.2 LAMP架構(gòu)具體組成
- L:linux
- A:apache (httpd)
- M:mysql, mariadb
- M:memcached
- P:php, perl, python
2. PHP
2.1 PHP簡介
PHP是通用服務(wù)器端腳本編程語言,主要用于web開發(fā)實現(xiàn)動態(tài)web頁面,也是最早實現(xiàn)將腳本嵌入HTML源碼文檔中的服務(wù)器端腳本語言之一。
php還提供了一個命令行接口,因此,其也可以在大多數(shù)系統(tǒng)上作為一個獨立的shell來使用
2.2 PHP的Opcode語言
PHP的語言引擎Zend執(zhí)行PHP腳本代碼一般會經(jīng)過如下4個步驟
- Scanning 詞法分析,將PHP代碼轉(zhuǎn)換為語言片段(Tokens)
- Parsing 語義分析,將Tokens轉(zhuǎn)換成簡單而有意義的表達(dá)式
- Compilation 將表達(dá)式編譯成Opcode
- Execution 順次執(zhí)行Opcode,每次一條,從而實現(xiàn)PHP腳本的功能
即:掃描–>分析–>編譯–>執(zhí)行
所以,Opcode是一種PHP腳本編譯后的中間語言,類似于Java的ByteCode,或者.NET的MSL。
2.3 PHP配置
php配置文件路徑::/etc/php.ini /etc/php.d/*.ini
修改配置文件后生效方法:
- Modules:重啟httpd服務(wù)
- FastCGI:重啟php-fpm服務(wù)
以#開頭,純粹的注釋信息,以 ; 開頭,用于注釋可啟用的directive
提示:較新的版本中,已經(jīng)完全使用 “ ; ” 進(jìn)行注釋
2.3.1 php常見配置
- max_execution_time= 30 最長執(zhí)行時間30s
- memory_limit=128M 生產(chǎn)不夠,可調(diào)大
- display_errors=off 調(diào)試使用,不要打開,否則可能暴露重要信息
- display_startup_errors=off 建議關(guān)閉
- post_max_size=8M 最大上傳數(shù)據(jù)大小,生產(chǎn)可能調(diào)大,比下面項大
- upload_max_filesize =2M 最大上傳文件,生產(chǎn)可能要調(diào)大
- max_file_uploads = 20 同時上傳最多文件數(shù)
- date.timezone =Asia/Shanghai 指定時區(qū)
- short_open_tag=on 開啟短標(biāo)簽
2.3.2 php語言格式
格式1:
<?phpecho "<h1>Hello world!</h1>" ?>格式2:
<h1><?php echo "Hello world!" ?> </h1>php測試代碼
<?phpecho date("Y/m/d H:i:s");phpinfo(); ?>3. LAMP實現(xiàn)方式
3.1 httpd和php調(diào)用方式
httpd調(diào)用php的方式,或者說動態(tài)資源的獲取方式有兩種:
- CGI
- FASTCGI
3.2 CGI
CGI:Common Gateway Interface 公共網(wǎng)關(guān)接口
web服務(wù)器會根據(jù)這次請求的內(nèi)容,然后會fork一個新進(jìn)程來處理請求, 這個進(jìn)程會把處理完的數(shù)據(jù)返回給web服務(wù)器,最后web服務(wù)器把內(nèi)容發(fā)送給用戶,剛才fork的進(jìn)程也隨之退出。 如果下次用戶還請求改動態(tài)腳本,那么web服務(wù)器又再次fork一個新進(jìn)程,周而復(fù)始的進(jìn)行。
請求流程
Client -- (http協(xié)議) --> httpd -- (cgi協(xié)議) --> application server (program file) -- (mysql協(xié)議) --> mysql3.3 FASTCGI
fastcgi的方式是,web服務(wù)器收到一個請求時,不會重新fork一個進(jìn)程(因為這個進(jìn)程在web服務(wù)器啟
動時就開啟了,而且不會退出),web服務(wù)器直接把內(nèi)容傳遞給這個進(jìn)程(進(jìn)程間通信,但fastcgi使用
了別的方式,tcp方式通信),這個進(jìn)程收到請求后進(jìn)行處理,把結(jié)果返回給web服務(wù)器,最后自己接
著等待下一個請求的到來,而不是退出。
請求流程
Client -- (http協(xié)議) --> httpd -- (fastcgi協(xié)議) --> fastcgi服務(wù)器 -- (mysql協(xié)議) --> mysql3.4 CGI和fastcgi 比較
總結(jié)
- 上一篇: Jboss的下载和安装
- 下一篇: java高级程序员面试题_Java高级面