目錄
PHP介紹
1.PHP原始碼編譯
php下載
軟體編譯
2.php-fpm檔案的配置
3.nginx+php-fpm
4.在php中添加memcache模塊
軟體下載
構建nginx高速快取,添加memcache功能模塊
5.配置php加載模塊openresty
下載模塊
配置模塊檔案資訊
6.tomcat結合memcache實作session交叉存放
7.goaccess日志可視化
PHP介紹
PHP,全稱 Hypertext Preprocessor ,中文翻譯“超文本前處理器”,被廣泛應用的開源通用腳本語言,尤其適用于 Web 開發,
1、PHP開源免費,沒有任何收費的專案,你可以隨便修改他的內核然后用于自己的商業專案,
2.、PHP擁有豐富的開發組件
3、社區成熟,85%以上的問題能在社區找到相應的解決思路,
4、PHP學習成本低、見效快
5、開源庫豐富,基本所有型別均有開源產品
6、PHP7.0基本不輸任何一門語言——這是重點!!!
7、與資料庫mysql近乎完美的支持
1.PHP原始碼編譯
php下載
http://www.php.net/ ##官方下載地址
拿到軟體包并解壓,如果因為缺少插件解壓失敗,安裝bz2壓縮插件即可
tar jxf php-7.4.12.tar.bz2
軟體編譯
./configure 配置
make 編譯
make install 安裝
編譯三部曲
./configure --prefix=/usr/local/lnmp/php --with-config-file-path=/usr/local/lnmp/php/etc --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-curl --with-iconv --with-mhash --with-zlib --with-openssl --enable-mysqlnd --with-mysqli --with-pdo-mysql --disable-debug --enable-sockets --enable-soap --enable-inline-optimization --enable-xml --enable-ftp --enable-gd --enable-exif --enable-mbstring --enable-bcmath --with-fpm-systemd
編譯程序中會提示缺少相關包

根據提示安裝即可,因為rh-7.6源中缺少下面兩個包,所以從外部下載
![]()
yum install systemd-devel libxml2-devel sqlite-devel libcurl-devel libpng-devel oniguruma-devel -y
大概缺少這幾個,每個人都不盡相同
如果不確定配置是否成功,
可以輸入:
echo $?
進行查看,輸出為0則成功

配置成功,編譯安裝
make 編譯成功

make install 安裝完成

2.php-fpm檔案的配置
拷貝配置php-fpm.conf和www.conf兩個檔案
注釋:
php-fpm
php-fpm是一個實作了Fastcgi的程式,他的管理物件是php-cgi
php-cgi
php-cgi只是個CGI程式,他自己本身只能決議請求,回傳結果,不會行程管理
CGI
CGI是為了保證web server傳遞過來的資料是標準格式的,方便CGI程式的撰寫者
Fastcgi
Fastcgi是用來提高CGI程式性能的(標準的CGI對每個請求都會執行這些步驟,Fastcgi會先啟一個master,決議組態檔,初始化執行環境,然后再啟動多個worker,當請求過來時,master會傳遞給一個worker,然后立即可以接受下一個請求,這樣就避免了重復的勞動,效率自然是高)#fastcgi是一個協議,php-fpm實作了這個協議
cd /usr/local/lnmp/php/etc/
cp php-fpm.conf.default php-fpm.conf #拷貝檔案
vim php.fpm.conf #編輯組態檔
cd php-fpm.d/
cp www.conf.default www.conf




拷貝php.ini組態檔
cd /root/php-7.4.12/
cp php.ini-production /usr/local/lnmp/php/etc/php.ini #拷貝到指定路徑
cd /usr/local/lnmp/php/etc
vim php.ini #編輯檔案,更改時區為亞洲上海


配置php-fpm.service 添加service服務
cd /root/php-7.4.12/sapi/fpm
cp php-fpm.service /usr/lib/systemd/system #將php服務檔案放置到指定目錄下
cd /usr/lib/systemd/system
ls
vim php-fpm.service
\\\
#ProtectSystem=full #注釋這一行
\\\
systemctl daemon-reload #多載服務
systemctl start php-fpm.service #開啟


3.nginx+php-fpm
修改nginx的組態檔
vim /usr/local/nginx/conf/nginx.conf
取消php服務的這幾行注釋,并且注釋其中fastcgi_param這一行,最后的fastcgi檔案改為fastcgi.conf

撰寫一個php發布檔案,重啟nginx
cd /usr/local/nginx/html/
vim index.php
///
<?php
phpinfo()
?>
///
nginx -s reload

真機瀏覽器訪問server1可以看到php頁面
添加環境變數
vim .bash_profile ##在.bash_profile檔案添加檔案路徑
source .bash_profile ##使其生效
echo $PATH



4.在php中添加memcache模塊
軟體下載
下載、解壓 tar zxf memcache-4.0.5.2.tgz

切換環境到memcache-4.0.5.2目錄中,執行phpize

下載依賴性軟體,再次執行phpize
yum install autoconf automake.noarch -y
phpize ##擴展成功

對memcache進行原始碼編譯,configure–make–make install 三步曲
./configure --enable-debug
make
make install

編輯php.ini ,然后重啟服務,執行php -m可以看到memcache



構建nginx高速快取,添加memcache功能模塊
使用memc-nginx模塊構建高效透明的快取機制,
如果需要做到高速快取,nginx可以跳過php直接向memcache存盤,但是只能做靜態存盤 ,如果需要動態存盤,還是要呼叫php,通過php呼叫到資料后下一次nginx就可以直接從memcache那里取,效率大大提高,因此高速快取時兩種策略在同時進行,
安裝memcached,并開啟服務,查看埠

切換環境到memcache目錄下,拷貝檔案并編譯,最后重啟服務

在真機瀏覽器測驗,訪問172.25.35.1/example.php
用戶名、密碼為剛設定的root、root


當前的資訊處理率不能達到百分百,需要進行優化
真機中執行壓力測驗命令
ab -c20 -n 1000 http://172.25.35.1/example.php
重繪頁面,可以看到經真機的壓力測驗,資訊處理率達到百分百

5.配置php加載模塊openresty
基于openresty(構建高效透明的快取機制) 訪問,能將快取放在nginx中,速度更快
注意: nginx -s stop ## 先停止nginx
下載模塊
官方下載地址:https://openresty.org/cn/,下好后解壓編譯安裝
tar zxf openresty-1.19.3.1.tar.gz
cd openresty-1.19.3.1/
./configure --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio
make
make install

配置模塊檔案資訊
編輯openresty中nginx的組態檔,拷貝組態檔,重啟模塊




在真機中壓力測驗

速度變快且傳輸量大幅度提升
6.tomcat結合memcache實作session交叉存放
session:在計算機中,尤其是在網路應用中,稱為“會話控制”,Session物件存盤特定用戶會話所需的屬性及配置資訊,當用戶在應用程式的 Web 頁之間跳轉時,存盤在 Session物件中的變數將不會丟失,而是在整個用戶會話中一直存在下去,
為了對資料的保存更加牢靠,我們選擇交叉存放session的方法,即將訪問tomcat1上的資料存放在memcache2中,將訪問tomcat2上的資料存放在memcache1中,這樣存放,當某個tomcat服務斷了之后,訪問它的客戶session并不會消失,而是存放在了對立的memcache,如果存放session的memcache壞了,那么它的資料會立即切換到另一個memcached中…
tomcat下載地址:https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/src/master/
在server2和server3主機中操作:
下載apache-tomcat-7.0.37.tar.gz和 jdk-8u121-linux-x64.rpm安裝包
在server2中:///
tar zxf apache-tomcat-7.0.37.tar.gz #解壓
rpm -ivh jdk-8u121-linux-x64.rpm #安裝rpm包
mv apache-tomcat-7.0.37 /usr/local/ #移動目錄到指定路徑下
cd /usr/local/
ln -s apache-tomcat-7.0.37/ tomcat #方便起見建立tomcat軟連接
cd /usr/local/tomcat/webapps/ROOT/
lftp 172.25.254.250 #連接服務器下載檔案
cd /pub/docs/lamp
get test.jsp #下載一個.jsp檔案,用于后面測驗
cd /usr/local/tomcat/bin
ls #bin目錄中有啟動和停止tomcat的腳本
./startup.sh #啟動tomcat
\\\
在server3中可以不必下載,直接從server2中scp傳輸即可
相同的操作,最終啟動tomcat



通言的步驟在server3上操作一遍
在真機上訪問server1

配置server1主機中的nginx.conf組態檔
vim /usr/local/nginx/conf/nginx.conf
利用sticky模塊,將server2,server3的8080埠寫入




此時可以在瀏覽器中訪問172.25.7.1/test.jsp

在server2中,配置tomcat
交叉存盤,所以我們的兩臺tomcat(server2、server3)分別對應的是memcache (n2、n1)
cd /usr/local/tomcat/conf
vim context.xml
正常運行的情況下server2中的tomcat往n2中儲存,server3中的tomcat往n1中儲存,如下圖,在server2中的儲存策略 failoverNodes=“n1” 當交叉存盤失敗時server2與n1連接

cd /usr/local/tomcat/lib下
lftp 172.25.254.250
cd /pub/docs/lamp/jar
mget * #下載所有tomcat所匹配的jar包
exit
ls
rm -fr memcached-session-manager-tc6-1.6.3.jar #洗掉6版本的memcache
cd /usr/local/tomcat/bin
./startup.sh #啟動

重新啟動tomcat,再在瀏覽器中訪問(U盤損壞資料丟失,以下實驗結果用另一個ip)

瀏覽器顯示的是server3中的tomcat2,由于我們用的是sticky模塊,即當server3中的tomcat2宕掉時,server2中的tomcat1會接手
這里我們可以停掉serve3中的tomcat
/usr/local/tomcat/bin/shutdown.sh #關閉tomcat2

在server3中 配置tomcat,與server2一樣配置
在server2、server3中都下載telnet.x86_64 yum install telnet.x86_64 -y
在瀏覽器中輸入幾組名字密碼
用tenet指令在對應的tomcat上查看
此處訪問到的是server3的tomcat,默認儲存在了n1中,n1的memcache是server2中的設備,故應該在server2中才能查看到我們輸入的兩組資料

#這里我們分別在servre2 server3中輸入指令進行查看
telnet localhost 11211
get 76227198A7AD4E5BB850EE59580FCC5E-n1 #此處的id號是瀏覽器中顯示的


只有在server2中才可以查看到結果
將server2中的memcache停掉 systemctl stop memcache.service

瀏覽器中server3的設備自動變換為了n2,此時我們可以看到,當server3交叉存盤失敗的時候將會存盤在自己主機中的n2,memcache中
此時的資訊我們應該在server3中的memcache訪問
成功查到新輸入的資料
這就是nginx+tomcat+memcache實作session交叉存放的原理
7.goaccess日志可視化
下載地址: http://tar.goaccess.io/goaccess-1.4.tar.gz
lftp 172.25.254.250
cd pub/docs/lamp
get goaccess-1.4.tar.gz\
tar zxf goaccess-1.4.tar.gz #解壓
./configure --enable-utf8 --enable-geoip=legacy #安裝測驗
測驗缺少兩個插件,需要安裝
lftp 172.25.254.250
cd pub/docs/lamp
get GeoIP-devel-1.5.0-13.el7.x86_64.rpm
exit
rpm -ivh GeoIP-devel-1.5.0-13.el7.x86_64.rpm
yum install ncurses-devel.x86_64 ##安裝這兩個缺少的插件
重新configure
make
make install
cd /usr/local/nginx/logs
ls
goaccess access.log -o /usr/local/nginx/html/report.html --log-format=COMBINED --real-time-html ##監控access.log日志
真機中壓力測驗,增加請求量
ab -c10 -n 1000 http://172.25.7.1/index.html #增加1000訪問
重繪
瀏覽器訪問172.25.35.1/report.html 可以看到可視化日志

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/316456.html
標籤:其他
上一篇:如何在oneToMany關系中正確創建新子項以避免托管重繪和分離物體錯誤?【Spring PostgreSQL】
