部署LNMP

部署LNMP环境

第一步:装包(7个包)。其中nginx和php-fpm无红帽yum源,其余用yum安装

nginx------作为代理或http服务器------------------监听TCP 80(源码安装)

Mariadb---数据库客户端软件提供mysql命令,命令成功的前提是mariadb-server已安装,并已启动mariadb-server服务,mysql命令会去连接mariadb-serve

mariadb-server----数据库服务器,作为服务器为其他客户端提供数据的使用,可实时查看和调整数据库--------端口3306

mariadb-devel-------数据库的依赖包

php----------------------解释器

php-mysql------------使php能够连接上mysql

php-fpm---------------能够启动php服务---------端口9000(下载rpm包安装)

安装Nginx  # yum –y install gcc gcc-c++  make pcre-devel openssl-devel zlib-devel  

            # useradd –s /sbin/nologin  nginx

    # tar  -zxvf  nginx-1.8.0.tar.gz

# cd  nginx-1.8.0

# ./configure 

  --prefix=/usr/local/nginx   --with-http_ssl_module

# make  &&  make  install

安装MariaDB   # yum -y install mariadb mariadb-server mariadb-devel

mariadb数据库客户端软件、mariadb-server数据库服务器、mariadb-devel依赖包

安装PHP    php是解释器  扩展包php-mysql 数据库mysql-server

           # yum -y install php     

安装PHP扩展,使得PHP可以连接MariaDB数据库   # yum -y install php-mysql  

  # tar  –xf  lnmp_soft-2017-03-28.tar.gz

# cd  lnmp_soft

# yum -y localinstall php-fpm

    另一种安装方法:# yum -ivh php-fpm

第二步:起nginx、mariadb、php-fpm服务,查看其服务状态

启动Nginx服务   # systemctl stop httpd        //如果该服务存在则关闭该服务

     # systemctl disable httpd      //关闭httpd的开机启动功能

          # /usr/local/nginx/sbin/nginx  -c /usr/local/nginx/conf/nginx.conf 

查看nginx服务状态           # netstat -pantul |grep  80

启动MySQL服务 

# systemctl start mariadb; systemctl enable mariadb; systemctl status mariadb

查看mariadb服务状态         # netstat -pantul |grep  3306

启动PHP服务   

# systemctl start php-fpm; systemctl enable php-fpm; systemctl status php-fpm

查看php-fpm服务状态          # netstat -pantul |grep  9000

Nginx+FastCGI

FastCGI工作原理

1.Web Server启动载入FastCGI进程管理器

2.FastCGI进程管理器初始化,启动多个解释器进程

3.当客户端请求到达Web server时,FastCGI进程管理器选择并连接到一个解释器

4.FastCGI子进程完成处理后返回结果,将标准输出和错误信息从同一连接返回Web Server

FastCGI是一种常驻(Long-Live)型的CGI。将CGI解释器进程保持在内存中,进行维护与调度;FastCGI技术目前支持语言有PHP、C/C++、Java、Perl、Python、Ruby等

FastCGI缺点:内在消耗大。因为是多进程,所以比CGI多线程消耗更多的服务器内存,PHP-CGI解释器每进程消耗7至25兆内存,将这个数字乘以50或100就是很大的内存数。

Nginx+PHP(FastCGI)服务器在3万并发连接下开10个Nginx进程消耗150M内存(10*15M),开64个PHP-CGI进程消耗1280M内存(20M*64)

往/usr/local/nginx/html写一个php页面

<?php

phpinfo();

?>

写一个PHP连接MySQL的代码

<?php

$link = mysql_connect ('localhost','root','');

if (! $link ) {

    die( 'Could not connect');}

echo  'Connected successfully' ;

mysql_close ( $link );

?>

使用已完成的脚本:# cd /root/lnmp_soft/php_scripts/

                  # cp mysql.php /usr/local/nginx/html/

nginx和PHP协同工作

修改配置文件/usr/local/nginx/conf/nginx.conf,实现nginx--->PHP动静分离

server{

listen 80

server_name www.XXXX.com

#//静态页面匹配处理,如果用户看到是静态页面,则直接找到该页面返回给用户,如果用户看到的是动态页面,则转发给9000端口,执行代码,把执行的结果返回给nginx,nginx给用户,localtion用来匹配用户的地址栏,支持正则。如果找不到,则继承根的属性,显示根/下页面。

location / {                                               //静态页面

            root   html;

            index  index.php  index.html   index.htm;

            allow  all;}

location /test {                                             //静态页面

            root   html;

            index  index.php  index.html   index.htm;

            deny all;}

#//动态页面匹配处理,如果用户访问的是php页面,则在html目录下找到该页面,转发给9000端口(php)

 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

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 //最多允许几个进程处于空闲状态

示例:构建LNMP平台

步骤一:创建并修改php-fpm配置文件

1)查看php-fpm配置文件

[root@Proxy etc]# vim /etc/php-fpm.d/www.conf

[www]

listen = 127.0.0.1:9000

listen.allowed_clients = 127.0.0.1

user = apache

group = apache

pm = dynamic

pm.max_children = 50      //f越大越好,但视工作环境及内存而定

pm.start_servers = 5

pm.min_spare_servers = 5

pm.max_spare_servers = 35

2)确认php-fpm服务已经启动

[root@Proxy ~]# systemctl restart php-fpm

[root@Proxy ~]# systemctl status php-fpm

步骤二:修改Nginx配置文件并启动服务

[root@Proxy ~]# vim /usr/local/nginx/conf/nginx.conf

location / {root   html;

            index  index.php  index.html   index.htm; }

 location  ~  \.php$  {root  html;

            fastcgi_pass   127.0.0.1:9000;     //php-fpm IP与端口

            fastcgi_index  index.php;

            include  fastcgi.conf; }       //加载Fast-CGI参数文件

[root@Proxy ~]# /usr/local/nginx/sbin/nginx -s reload

步骤三:创建PHP页面,测试LNMP架构能否解析PHP页面

# pkill -9 nginx

# /usr/local/nginx/sbin/nginx

# /etc/rc.d/init.d/php-fpm restart

1)创建PHP测试页面1:

[root@Proxy ~]# vim /usr/local/nginx/html/test1.php

<?php

$i="This is a test Page";

echo $i;

?>

2)创建PHP测试页面,连接MariaDB数据库:

 [root@Proxy ~]# vim /usr/local/nginx/html/test2.php

<?php

$links=mysql_connect("localhost","root","密码");        

//注意:root为mysql账户名称,密码需要修改为实际mysql密码,无密码则留空即可

if($links){ echo "link db ok!!!"; }

else{ echo "link db no!!!"; }

?>

3)创建PHP测试页面,连接并查询MariaDB数据库:

[root@Proxy ~]# vim /usr/local/nginx/html/test3.php

<?php

$mysqli = new mysqli('localhost','root','','mysql');  //主机名,用户名,密码,数据库

if (mysqli_connect_errno()){ die('Unable to connect!'). mysqli_connect_error(); } 

else{ echo “link db OK!!!”; }

$sql = "select * from user";

$result = $mysqli->query($sql);

while($row = $result->fetch_array()){

    printf("Host:%s",$row[0]);

    printf("</br>");

    printf("Name:%s",$row[1]);

    printf("</br>"); }

?>

4)客户端使用浏览器访问服务器PHP首页文档,检验是否成功:

[root@client ~]# firefox http://192.168.4.5/test1.php

[root@client ~]# firefox http://192.168.4.5/test2.php

[root@client ~]# firefox http://192.168.4.5/test3.php

常见问题:1.出现下载页面 【配置文件中没有php转发,没有动静分离】

  2.File not found. 【转发设置不正确】[SELinux]

  3.An error occurred.    

Connection refused(php服务没有启动)【转发给9000后,无响应,php未启动】 

  4.空白页面。 语法错误(查看/var/log/php-fpm/www-error.log) 

参考日志:/usr/local/nginx/logs/errlog   

          /var/log/php-fpm/www-error.log

         用tailf查看日志,回车至空白,再刷新网页,即可查看最新的报错信息

猜你喜欢

转载自blog.csdn.net/jsut_rick/article/details/78288129