设为首页 收藏本站
查看: 809|回复: 0

[经验分享] 部署LNMP 、 Nginx+FastCGI 、 Nginx高级技术

[复制链接]

尚未签到

发表于 2018-11-9 06:43:47 | 显示全部楼层 |阅读模式
  ##########################################################################################################
  LNMP:
  -L :LINUX操作系统
  -N :Nginx网站服务软件
  -M :Mysql Mariadb数据库
  -P :PHP Python Perl网站开发语言
  #################################################################################################
  准备三台虚拟机:
  Web1:
  eth1网卡:192.168.2.100
  Proxy:
  eth0网卡:192.168.4.5
  eth1网卡:192.168.2.5
  Client:
  eth0网卡:192.168.4.100
  防火墙设置为trusted
  selinux设置为permissive
  ##################################################################################################
  LNMP部署:
  #安装Nginx(上篇博客里面有安装方法)
  #yum -y install mariadb mariadb-server mariadb-devel         //安装Mariadb
  #yum -y install php php-mysql                        //php-mysql用来连接数据库
  #rpm -ivh php-fpm-5.4.16-36.el7_1.x86_64.rpm            //安装php-fpm
  #nginx                //启动nginx服务
  #systemctl start mariadb        //启动mariadb服务
  #systemctl enable mariadb    //随机自启
  #systemctl start php-fpm        //启动php-fpm服务
  #systemctl enable php-fpm    //随机自启
  #netstat -anptu | grep "80"    //验证nginx是否启动
  #netstat -anptu | grep "3306"    //验证mariadb是否启动
  #netstat -anptu | grep "9000"    //验证php-fpm是否启动
  ####################################################################################################
  静态页面:不需要服务器进行解释,直接传递给客户端
  动态页面:需要服务器进行解释,再传递给客户端。
  FastCGI简介:
  FastCGI是一种常驻(Long-live)型的CGI
  -将GCI解释器进程保持在内存中,进行维护和调度
  -FastCGI技术目前支持的与语言 PHP C/C++ JAVA perl python 等
  FastCGI工作原理:
  1.web server 启动时载入FastCGI进程管理器
  2.FastCGI进程管理器初始化,启动多个解释器进程
  3.当客户端请求到达为web server FastCGI进程管理器选择并连接到一个解释器。
  4,FastCGI子进程完成处理后返回结果,将标准输出和错误信息从同一连接返回web server
  FastCGI缺点:
  内存消耗大
  -因为多进程,所以比CGI多线程消耗更多的服务器内存,PHP—CGI解释器每进程消耗7-25M内存,将这个数字乘50或100就是很大的内存数。
  #####################################################################################################
  php-fpm需要修改的常见配置如下:
  #vim /var/
  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    //最多允许几个进程处于空闲状态
  #######################################################################################################
  实现页面的动静分离:
  #vim /usr/local/nginx/html/test.php    //书写简单的动态页面
  
  #nginx    //启动nginx服务
  客户端访问:
  #firefox http://192.168.4.5/test.php
  结果:会出现下载页面,因为这个时候服务器并没有解释test.php,所以这属于静态页面。
  #vim /usr/local/nginx/conf/nginx.conf
  location / {
  root   html;
  index  index.php  index.html   index.htm;
  }
  location  ~  \.php$  {                        //去掉配置文件中的注释,实现访问.php结尾的动态页面。
  root           html;
  fastcgi_pass   127.0.0.1:9000;
  fastcgi_index  index.php;
  #fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name; //将这一句话注释
  include        fastcgi.conf;    //这里将源配置文件改为fastcgi.conf
  }
  客户端访问:
  #firefox http://192.168.4.5/test.php
  结果:hello world 这个时候服务器已经用php解释了test.php,所以属于动态页面。
  #####################################################################################################
  测试连接maridb数据库:
  #cp /root/lnmp_soft/php_scripts/mysql.php /usr/local/nginx/html/    //安装php-fpm会有这个mysql.php的测试页面,这是我的文件存储路径,只需要将mysql.php复制到/usr/local/nginx/html/下来完成测试。
  注意:我们要将selinux设置为permissive,这个和selinx的标签值有关。
  客户端访问:
  #firefox http://192.168.4.5/mysql.php    //关于Host和User的页面
  ####################################################################################################
  地址重写:
  站内转换:
  #vim /usr/local/nginx/conf/nginx.conf
  location / {
  root   html;
  index  index.php  index.html   index.htm;
  rewrite /a\.html /b.html;        //访问a.html转换为b.html,因为nginx支持正则表达式,再正则中.表示任意单个字符,所以使用\将.屏蔽。
  }
  echo "AA" > /usr/local/nginx/html/a.html
  echo "BB" > /usr/local/nginx/html/b.html
  客户端访问:
  #firefox http://192.168.4.5/a.html
  结果:BB
  如果需要访问a转到b,并且在我的浏览器导航栏中也显示b.html   rewrite /a\.html /b.html redirect;加上redirect。
  ######################################################################################################
  站外转换:
  #vim /usr/local/nginx/conf/nginx.conf
  http {
  .. ..
  server {
  listen       80;
  server_name  localhost;
  rewrite ^/(.*) http://www.tmooc.cn/$1; //访问到 / 时,跳转到www.tmooc.cn
  // (.*)在正则中表示后面的所有内容,并且保留起来
  //按照正则当中的理解应该为\1,但是nginx为$1.
  location / {
  root   html;
  index  index.html index.htm;
  #rewrite /a\.html /b.html;
  }
  }
  }
  客户端访问:
  #firefox http://192.168.4.5/xxxx
  结果:http://www.tmooc.cn/xxxxx
  ########################################################################################
  不同设备访问,显示内容相同,格式不同:
  #vim /usr/local/nginx/conf/nginx.conf
  http {
  server {
  listen 80;
  server_name localhost;
  if ($http_user_agent ~* firefox) {
  rewrite ^/(.*) /firefox/$1;
  }
  //$http_user_agent 日至消息中的一段,其中包含浏览器信息,设备信息等,匹配到firefox后跳转到目录下网页中 ~模糊匹配,*代表不区分大小写。
  //日志位置/usrl/local/nginx/logs/access_log,访问日志。
  #rewrite ^/(.*)  http://www.tmooc.cn/$1;
  location / {
  root html;
  index index.html;
  #rewrite /a\.html /b\.html;
  }
  }
  }
  mkdir /usr/local/nginx/html/firefox                //创建目录
  echo "firefox" > /usr/local/nginx/html/firefox/test.html    //书写测试页面
  echo "curl" > /usr/local/nginx/html/test.html            //书写测试页面
  客户端测试:
  #firefox 192.168.4.5/test.html  //使用火狐浏览器
  结果:firefox
  #curl 192.168.4.5/test.html   //使用curl 浏览器
  结果:curl
  注意:在实际的应用中  两个访问的内容是相同的,格式不同。这里只是为了测试


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-632521-1-1.html 上篇帖子: nginx https 下篇帖子: Nginx 跨域设置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表