标签:火狐 基础 编辑器 index.php squid nginx 动态 2.3 disable
1 案例1:部署LNMP环境PHP:网站(对于java来说性能差一些)
Java:网站,软件,软件(最难)
Python:网站,软件,游戏(对于java来说性能差一些)
步骤一:安装软件
1)使用yum安装基础依赖包
1.[root@svr5 ~]# yum -y install gcc openssl-devel pcre-devel l
2... ..
2)源码安装Nginx
1.[root@svr5 ~]# useradd –s /sbin/nologin nginx
2.[root@svr5 ~]# tar -zxvf nginx-1.8.0.tar.gz
3.[root@svr5 ~]# cd nginx-1.8.0
4.[root@svr5 nginx-1.8.0]# ./configure \
5.> --prefix=/usr/local/nginx \
6.> --user=nginx --group=nginx \
7.> --with-http_ssl_module
8.[root@svr5 ~]# make && make install
9... ..
3)安装MariaDB
Mariadb在新版RHEL7光盘中包含有该软件,配置yum源后可以直接使用yum安装:
1.[root@svr5 ~]# yum –y install mariadb mariadb-server mariadb-devel
4)php和php-fpm
1.[root@svr5 ~]# yum –y install php php-mysql
2.[root@svr5 ~]# tar –xf lnmp_soft-2017-03-28.tar.gz
3.[root@svr5 ~]# cd lnmp_soft
4.[root@svr5 ~]# yum –y php-fpm-5.4.16-36.el7_1.x86_64.rpm
?安装操作:
? yum -y install mariadb mariadb-server
? yum -y install mariadb-devel
? yum -y install php php-mysql 解释器
? cd lnmp_soft/
? rpm -ivh php-fpm-5.4.16-36.el7_1.x86_64.rpm
php是一个解释器,不是服务,只能靠rpm安装php-fpm来启动。
步骤二:启动服务
1)启动Nginx服务
这里需要注意的是,如果服务器上已经启动了其他监听80端口的服务软件(如httpd),则需要先关闭该服务,否则会出现冲突。
1.[root@svr5 ~]# systemctl stop httpd????????????????//如果该服务存在则关闭该服务
2.[root@svr5 ~]# systemctl disable httpd????????????????//关闭httpd的开机启动功能
3.[root@svr5 ~]# /usr/local/nginx/sbin/nginx ????????????//启动Nginx服务
4.[root@svr5 ~]# netstat -utnlp | grep :80
5.tcp????0????0 0.0.0.0:80????????0.0.0.0:*????????LISTEN????????32428/nginx
2)启动MySQL服务
1.[root@svr5 ~]# systemctl start mariadb
2.[root@svr5 ~]# systemctl status mariadb
3.[root@svr5 ~]# systemctl enable mariadb
3)启动PHP-FPM服务
1.[root@svr5 ~]# systemctl start php-fpm
2.[root@svr5 ~]# systemctl status php-fpm
3.[root@svr5 ~]# systemctl enable php-fpm
2 案例2:构建LNMP平台
2.2 方案
使用2台RHEL7虚拟机,其中一台作为LNMP服务器(192.168.4.5)、另外一台作为测试用的Linux客户机(192.168.4.100),如图-1所示。
图-1
Nginx结合FastCGI技术即可支持PHP页面架构,因此本案例,需要延续练习一的实验内容,通过修改Nginx及php-fpm配置文件实现对PHP页面的支持。
php-fpm需要修改的常见配置如下:
listen = 127.0.0.1:9000 //PHP端口号
pm.max_children = 32 //最大进程数量
pm.start_servers = 15 //最小进程数量
pm.min_spare_servers = 5 //最少需要几个空闲着的进程
pm.max_spare_servers = 32 //最多允许几个进程处于空闲状态
Nginx ---PHP(动静分离)
Nginx判断用户访问的是静态还是动态
如果是静态,则在root对应的目录中找到页面直接给用户
如果是动态,则nginx将请求转发给9000端口
location / {allow all} 默认值是允许所有
location /a {deny all}
location /b {allow 1.1.1.1}
location /c {deny 1.1.1.1}
http://192.168.4.5/ 没有任何匹配的时候,只能默认匹配根。默认值是允许所有
http://192.168.4.5/a 所有人都打不开
http://192.168.4.5/b 只允许1.1.1.1访问
http://192.168.4.5/c 仅不允许1.1.1.1访问
Location 匹配用户的地址栏(支持正则)
有多少Location相当于有多少if
Server {
Listen 80;
Server_name localhost;
Location / {
Root html;(静态)和上一节的集群调度器相反。
}
Location
修改nginx的配置文件
Location ~ .php$ { (动态交给9000端口)
Root html;
Fastcgi_pass 127.0.0.1:9000; (交给9000端口)
Fastcgi_index index.php;
#Fastcgi_param........name;
Include fastcgi.conf; (读到最后一行加载一下配置文件)
}
1.vim /etc/php-fpm.d/www.conf
2.[www]
3.listen = 127.0.0.1:9000
4.listen.allowed_clients = 127.0.0.1
5.user = apache
6.group = apache
7.pm = dynamic
8.pm.max_children = 50
9.pm.start_servers = 5
10.pm.min_spare_servers = 5
11.pm.max_spare_servers = 35
FastCGI 工作原理:
动态:客户端发送请求给nginx,nginx转发给PHP,PHP多个进程共同操作(并发量大,但是占用内存大),操作结果源路返回给nginx,nginx发送给客户端。
常见错误:
没有页面(权限):关闭selinux:setenforce 0;rwx;acl
error:查error日志:连接被拒绝(upstream后台失败):服务器没有启动
Php报错:语法错误,注意分号
端口80和9000要开启,关闭squid
Location 下载页面:注释没打开
Nginx报错:mariadb 要开启,路径在conf下面(绝对路径),配置文件deny注释掉
Php是多进程的服务,启动多个php,都交给9000端口
多个进程:同时开不同界面,连不同服务器
Php-CGI解释器运行很占内存
网上有数据库模板
2.3 步骤
步骤一:创建并修改php-fpm配置文件
1)查看php-fpm配置文件
1.[root@svr5 etc]# vim /etc/php-fpm.d/www.conf
2.[www]
3.listen = 127.0.0.1:9000
4.listen.allowed_clients = 127.0.0.1
5.user = apache
6.group = apache
7.pm = dynamic
8.pm.max_children = 50 最多启50个
9.pm.start_servers = 5 一开始启5个
10.pm.min_spare_servers = 5
11.pm.max_spare_servers = 35
2)确认php-fpm服务已经启动
1.[root@svr5 ~]# systemctl restart php-fpm
2.[root@svr5 ~]# systemctl status php-fpm
步骤二:修改Nginx配置文件并启动服务
1.[root@svr5 ~]# vim /usr/local/nginx/conf/nginx.conf (给php部分去掉#)
2.location / {
沿用练习一,通过调整Nginx服务端配置,实现以下目标:
1.所有访问a.html的请求,重定向到b.html;
2.所有访问192.168.4.5的请求重定向至www.tmooc.cn;(替换为www.it211.com.cn)
3.所有访问192.168.4.5/下面子页面,重定向至www.tmooc.cn/下相同的页面;
4.实现curl访问不同的页面。
步骤一:修改配置文件(访问a.html重定向到b.html)
1)修改Nginx服务配置:
cd /usr/local/nginx/html/
[root@proxy html]# ls
50x.html a.php index.html mysql.php
[root@proxy html]# vim /usr/local/nginx/conf/nginx.conf
[root@proxy html]# /usr/local/nginx/sbin/nginx -s reload
[root@proxy html]# echo "BBB" > b.html
1.[root@svr5 ~]# vim /usr/local/nginx/conf/nginx.conf
2... ..
3.server {
3... ..
4.server {
8.location / {
9.????root html;
10.index index.html index.htm;
11.}
12.}
2)重新加载配置文件
1.[root@svr5 ~]# /usr/local/nginx/sbin/nginx -s reload
3)客户端测试
1.[root@client ~]# firefox http://192.168.4.5
步骤4:不同浏览器访问相同页面,结果不同。(实现curl和火狐访问相同连接返回的页面不同)
/usr/local/nginx/html/[一套正常页面]
/usr/local/nginx/html/uc/[一套窄屏页面]
server{
listen 80;
server_name localhost;
root html;
if (如果你是uc){
rewrite /(.*) /uc/$1;
}
准备两套页面:
ie http://192.168.4.1/a AAA
uc http://192.168.4.1/a BBB
curl:没有图形的命令行版火狐
1) 修改Nginx服务配置
Location 前加if ($http_user_agent ~ curl){ (正则匹配看agent 有没有curl这个关键词)
rewrite ^/(.) /curl/$1;
}
1... ..
2.server {
3.[root@svr5 ~]# mkdir -p /usr/local/nginx/html/curl/
4.[root@svr5 ~]# echo "I am is curl page" > /usr/local/nginx/html/curl/test.html
2)重新加载配置文件
1.[root@svr5 ~]# /usr/local/nginx/sbin/nginx -s reload
Location 前加if ($http_user_agent ~ curl){ (正则匹配看agent 有没有curl这个关键词)
rewrite ^/(.) /curl/$1;
}
Grep “curl”
4)客户端测试 。相同地址下不同浏览器对应不同内容,结果不一样
1.[root@client ~]# firefox http://192.168.4.5/test.html
2.[root@client ~]# curl http://192.168.4.5/test.html
3.firefox http://192.168.4.5/curl/test.html
4.[root@client ~]# curl http://192.168.4.5/test.jsp
使用ie访问是宽屏页面
使用Uc访问是窄屏页面
/usr/local/nginx/html/ 正常页面test.html
/usr/local/nginx/html/uc 内容一样test.html
charset utf-8 可以在网页输出中文
user_agent 识别客户端的浏览器
UC--设置--浏览器设置--UA标识(电脑,手机)即user_agent,可手机伪装成电脑,宽屏
Curl -A(可以伪装成任何人) “AA” http://fdgfgsf
rewrite 旧地址 新地址 选项
last 不再读其他rewrite,只执行一个rewrite
break 不读其他语句,访问结束。不再执行其他冲突语句
redirect【地址变】临时重定向(蜘蛛会看,对此敏感。百度,360,google)
permanent【地址变】永久重定向(潜在提示以后直接访问跳转的页面即可)(蜘蛛会看,对此敏感)
蜘蛛(网络爬虫)喜欢路径短的文件。可以rewrite 短路径 长路经(跳转)
蜘蛛喜欢更新的原创内容
总结:
LNMP
nginx
mariadb mariadb-server mariadb-devel
php php-mysql php-fpm
nginx 80
systemctl start mariadb 3306
systemctl start php-fpm 9000
vim nginx.conf
location / { root html;}
location .php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
}写代码[连接数据库] PHP--(数据库)
地址重写[a-b;4.5--tmooc;4.5/a--tmooc/a识别浏览器]$http_user_agent
进入vi/vim编辑器,按CTRL+V进入可视化模式(VISUAL BLOCK)
vi/vim如何添加或删除多行注释
移动光标上移或者下移,选中多行的开头,如下图所示
vi/vim如何添加或删除多行注释
选择完毕后,按大写的的I键,此时下方会提示进入“insert”模式,输入你要插入的注释符,例如#,
vi/vim如何添加或删除多行注释
最后按ESC键,你就会发现多行代码已经被注释了
vi/vim如何添加或删除多行注释
删除多行注释的方法,同样 Ctrl+v 进入列选择模式,移到光标把注释符选中,按下d,注释就被删除了。
ps aux | grep nginx 查看nginx进程
有几个CPU核心就有几个进程数
LNMP部署、Nginx+FastCGI、Nginx高级技术
标签:火狐 基础 编辑器 index.php squid nginx 动态 2.3 disable
原文地址:http://blog.51cto.com/13590322/2067423