mkdir /var/lib/php/session
chown apache:apache /var/lib/php/session---修改用戶跟運行fpm進程的用戶保持一致&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&不明白
systemctl start php-fpm.service
ss -tnl---能夠看到監聽了9000端口php
反代服務器定義好了虛擬主機,而且定義好了傳遞的參數,在後端主機上就建立目錄
mkdir -pv /data/apps
vim /data/apps/index.php
<?php
phpinfo();
?>
---------------------------------------啓動mariadb服務
vim /etc/my.cnf.d/server.cnf---添加下列幾行
skip_name_resolve=ON---關閉地址解析
innodb_file_per_table=ON
systemctl start mariadb.service---啓動mariadb服務
ss -tnl---查看3306端口是否啓動
mysql---鏈接到mysql,而且要確保root用戶有密碼
mysql_secure_installation---設置密碼,會彈出交互式對話
mysql -uroot -pmagedu---登陸mysql
---------------------------------------部署一個應用
tar xf phpMyAdmin-4.0.10.20-all-languages.tar.gz -C /data/apps/
cd /data/apps/
ln -sv phpMyAdmin-4.0.10.20-all-languages pma---連接至pma
cd pma/
cp config.sample.inc.php config.inc.php
vim config.inc.php---修改下面這一行
scfg['blowfish_secret'] = 'akdljio8b7c6d';
scp phpMyAdmin-4.0.10.20-all-languages.tar.gz 192.168.10.254:/root/---複製到nginx反代服務器
cd pma/
外部主機訪問www.ilinux.io/pma/index.php能夠看到動態的頁面但看不到靜態的圖片html
反代服務器
爲了區分,上一節課的ilinux.conf更名爲iunix.conf
vim conf.d/iunix.conf
server {
listen 80;
server_name www.iunix.io;
proxy_cache pcache;
proxy_cache_key $request_uri;
proxy_cache_methods GET HEAD;
proxy_cache_valid 200 301 10m;
proxy_cache_valid 404 1m;
proxy_cache_use_stale http_502;前端
location / { proxy_pass http://192.168.10.11:80/; proxy_set_header X-Real-IP $remote_addr; add_header X-Via $server_addr; } location ~* \.(jpg|jpeg|png)$ { proxy_pass http://192.168.10.12:80; }
}
本身新建一個虛擬主機
vim conf.d/iunix.conf
server {
listen 80;
server_name www.ilinux.io;
index index.php index.html;mysql
location / { root /data/nginx/html; } location ~* \.php$ {---全部以.php結尾的內容都反代給後端主機 fastcgi_pass 192.168.10.11:9000;---由於是fastcgi協議,因此url上不加http fastcgi_index index.php; include fastcgi_params;---下邊一行只是修改了一個參數,還須要包含進來這個文件中的全部參數,而且要先寫這一行 fastcgi_param SCRIPT_FILENAME /data/apps/$fastcgi_script_name; }
}
nginx -t
nginx -s reload
nginx經過fastcgi協議反代還須要傳遞不少參數給後端服務器,在/etc/nginx/fastcgi_params中,通常不修改這個文件,而是在虛擬主機的配置文件中修改。
在這個文件中如何傳遞:
fastcgi_param SCRIPT_NAME /data/apps/$fastcgi_script_name;linux
反代編輯一個html主頁用於測試
vim /data/nginx/html/index.html
<h1>Nginx Server</h1>
此時客戶端訪問www.ilinux.io,反代服務器會響應,若是訪問www.ilinux.io/index.php,就會反代給後端主機nginx
tar xf phpMyAdmin-4.0.10.20-all-languages.tar.gz -C /data/nginx/html/
cd /data/nginx/html/
ln -sv phpMyAdmin-4.0.10.20-all-languages pma---連接至pma
cd pma/
外部主機訪問www.ilinux.io/pma/index.php就能夠看到動態的頁面以及靜態的圖片了
輸入用戶名密碼就能夠進入管理數據庫的頁面web
而後,拓撲架構改變了,變爲前端一個nginx反代,後端RS2:一臺nginx提供web,RS1:一臺php
RS2:
ifconfig eno16777736 192.168.10.12/24 up
從前端nginx反代複製/etc/yum.repos.d/epel.repo以及phpMyAdmin-4.0.10.20-all-languages.tar.gz
yum install -y nginx
mkdir -pv /data/nginx/html
tar xf phpMyAdmin-4.0.10.20-all-languages.tar.gz -C /data/nginx/html/
ln -sv phpMyAdmin-4.0.10.20-all-languages pma
vim /etc/nginx/nginx.conf---修改默認server的root路徑爲/data/nginx/html;
nginx -t
systemctl start nginx.servicesql
前端反代:
vim conf.d/ilinux.conf
server {
listen 80;
server_name www.ilinux.io;
index index.php index.html;數據庫
location / { root /data/nginx/html; proxy_pass http://192.168.10.12:80; } location ~* \.php$ { fastcgi_pass 192.168.10.11:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME /data/apps$fastcgi_script_name; }
}
nginx -t
nginx -s reload
而後客戶端主機刷新網頁(www.ilinux.io/pma/index.php),會發現動態網頁靜態圖片仍然是能夠訪問的
tail /var/log/nginx/access.log---能夠經過訪問日誌查看是否訪問的本主機的靜態圖片apache
fastcgi協議也是能夠開啓緩存的。
vim nginx.conf
在http上下文中,proxy_cahe_path下面添加一行
fastcgi_cache_path /data/nginx/fcgicache levels=2:1 keys_zone=fcache:10m max_size=2g;
vim conf.d/ilinux.conf
server {
listen 80;
server_name www.ilinux.io;
index index.php index.html;
location / { root /data/nginx/html; proxy_pass http://192.168.10.12:80; } location ~* \.php$ { fastcgi_pass 192.168.10.11:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME /data/apps$fastcgi_script_name; fastcgi_cache fcache; fastcgi_cache_key $request_uri; fastcgi_cache_valid 200 302 10m; fastcgi_cache_valid 301 1h; fastcgi_cache_valid any 1m; }
}
而後客戶端能夠curl三次,就會生成緩存,能夠查看下到底有沒有生成緩存。
ls /data/nginx/fcgicache/
視頻中的課件:
ngx_http_fastcgi_module模塊:
The ngx_http_fastcgi_module module allows passing requests to a FastCGI server.
一、fastcgi_pass address;
a***ess爲fastcgi server的地址;location,if in location;
http://www.ilinxu.io/admin/index.php-->/admin/index.php(uri),此uri對應的文件在哪一個路徑下呢?
後端主機真實路徑/data/application/admin/index.php,應該定義/data/appllication
二、fastcgi_index name;
fastcgi默認的主頁資源;
三、fastcgi_param parameter value [if_not_empty];
Sets a parameter that should be passed to the FastCGI server.The value can contain text,varlables,and their combination.
配置示例1:
前提:配置好fpm server和mariadb-server服務;
location ~ .php$ {
root /usr/shar/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
include fastcgi_params;
}
配置示例2:經過/pm_status和/ping來獲取fpm server狀態信息;
location ~ .php$ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
}
四、fastcgi_cache_path path [levels=levels] [use_temp_path=on|off]......
定義fastcgi的緩存:緩存位置爲磁盤上的文件系統,由path所指定路徑來定義;
levels=levels:緩存目錄的層級數量,以及每一級的目錄數量;levels=ONE:TWO:THREE
levels=1:2:2
keys_zone=name:size
k/v映射的內存空間的名稱及大小
inactive=time
非活動時長
max_size=size
磁盤上用於緩存數據的緩存空間上限
五、fastcgi_cache zone | off
調用指定的緩存空間來緩存數據;http,server,location
六、fastcgi_cache_key string;
定義用做緩存項的key的字符串;
七、fastcgi_cache_methods GET|HEAD|POST...;
爲哪些請求方法使用緩存;
八、fastcgi_cache_min_uses number;
緩存空間中的緩存項在inactive定義的非活動時間內至少要被訪問到此處所指定的次數方可被認做活動項;
九、fastcgi_cache_valid [code ...] time;
不一樣的響應碼各自的緩存時長;
示例:
十、fastcgi_keep_conn on | off---發請求時保持
fastcgi server默認是發完鏈接就關閉了(短鏈接模式),設置爲on,nginx會告訴fastcgi server不要關閉鏈接
博客做業:以上全部內容:練習:實現lnmp,lnamp提供多個虛擬主機;nginx和php使用同一主機和不一樣主機;(1)http,提供wordpress;(2)https,提供pma