搭建LNMP

准备LNMP前期环境

安装部署Nginx、MariaDB、PHP环境
安装部署Nginx、MariaDB、PHP、PHP-FPM;
启动Nginx、MariaDB、FPM服务;
并测试LNMP是否工作正常。

方案
LNMP(Linux、Nginx、MySQL、PHP)
在RHEL7系统中,源码安装Nginx,使用RPM包安装MariaDB、PHP、PHP-FPM软件。

需要安装的软件:
nginx
mariadb、mariadb-server、mariadb-devel
php、php-fpm、php-mysql

备注:mariadb(数据库客户端软件)、mariadb-server(数据库服务器软件)、mariadb-devel(其他客户端软件的依赖包)、
php(解释器)、php-fpm(进程管理器服务)、php-mysql(PHP的数据库扩展包)。

步骤
步骤一:安装软件

在服务端proxy上操作:

1)使用yum安装基础依赖包
# yum -y install gcc openssl-devel pcre-devel zlib-devel #安装依赖包。红帽制作的光盘里,文件名以-devel结尾的包都是依赖包。

2)源码安装Nginx(如果前面课程中已经安装Nginx,则忽略这一步)
# useradd -s /sbin/nologin nginx #创建登陆的同名用户
# cd /root/lnmp_soft/
# tar -xf nginx-1.12.2.tar.gz
# cd nginx-1.12.2/
#./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module #指定目录,用户,组,模块
# make && make install #编译并安装
# ln -s /usr/local/nginx/sbin/nginx /sbin/ #创建快捷方式到linux默认放置解释器目录/sbin下,启动服务就不用打路径的全名了。

3)安装MariaDB
Mariadb在新版RHEL7光盘中包含有该软件,配置yum源后可以直接使用yum安装:

# yum -y install mariadb mariadb-server mariadb-devel

4)安装php和php-fpm(该软件包在lnmp_soft中提供)
#yum -y install php php-mysql.x86_64
#cd /root/lnmp_soft/ #因为php-fpm该软件包在lnmp_soft中提供,所以要cd到该目录下,才能安装
#ls
#yum -y install php-fpm-5.4.16-42.el7.x86_64.rpm
----------------------------------------------------------------------------
步骤二:启动服务

1)启动Nginx服务(如果已经启动nginx,则可以忽略这一步)
这里需要注意的是,如果服务器上已经启动了其他监听80端口的服务软件(如httpd),则需要先关闭该服务,否则会出现冲突。

# systemctl stop httpd #如果该服务存在则关闭该服务
# nginx #启动Nginx服务
# ss -tunlp | grep :80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 32428/nginx

2)启动MySQL服务 (只要启动就行,不一定每个命令都要打)
# systemctl start mariadb #启动服务器
# systemctl status mariadb #查看服务状态
# systemctl enable mariadb #设置开机启动

3)启动PHP-FPM服务 (只要启动就行,不一定每个命令都要打)
# systemctl start php-fpm #启动服务
# systemctl status php-fpm #查看服务状态
# systemctl enable php-fpm #设置开机启动

4)设置防火墙与SELinux(克隆的虚拟机默认防火墙是关闭的,所以不用改)
# firewall-cmd --set-default-zone=trusted
# setenforce 0

#########################################################################################
搭建LNMP平台

调整Nginx服务端配置,实现:
配置Fast-CGI支持PHP网页
创建PHP测试页面,测试使用PHP连接数据库的效果

方案
使用2台RHEL7虚拟机,其中一台作为LNMP服务器(192.168.4.5)、另外一台作为测试用的Linux客户机(192.168.4.10)。
Nginx结合FastCGI技术即可支持PHP页面架构。
通过修改Nginx及php-fpm配置文件实现对PHP页面的支持。
注意,FastCGI的内存消耗问题,一个PHP-FPM解释器将消耗约25M的内存。
----------------------------------------------------------
前期工作:

启动3个服务:
# nginx #如果已经开启了,就不用再开启了
# systemctl start mariadb
# systemctl start php-fpm

查看3个服务是否已启动:
# ss -tunlp | grep :80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 5352/nginx: master

# ss -tunlp | grep :3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 6548/mysqld

# ss -tunlp | grep :9000
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 6604/php-fpm: maste

提示:
nginx 80(端口号)
mysql 3306(端口号)
php-fpm 9000(端口号)
-------------------------------------------------------
# grep -v "^$" /etc/php-fpm.d/www.conf | grep -v "^;" #这个文件的注释是以;开头
--------------------------------------------------------
步骤一: php-fpm配置文件
1)查看php-fpm配置文件(实验中不需要修改该文件)

# vim /etc/php-fpm.d/www.conf
[www]
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配置文件并启动服务

# vim /usr/local/nginx/conf/nginx.conf
server {
listen 80; #端口
server_name www.a.com; #域名
#auth_basic "Input Password:"; #认证提示符
#auth_basic_user_file "/usr/local/nginx/pass"; #认证密码文件
#把之前设置的用户认证的那2句话注释掉,或者直接删掉,要不登陆总是要求输入用户名和密码。
location / {
root html;
index index.php index.html index.htm;
}
#设置默认首页为index.php,当用户在浏览器地址栏中只写域名或IP,不说访问什么页面时,服务器会把默认首页index.php返回给用户

打开以下几行的注释
64,70s/^#//
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000; #将请求转发给本机9000端口,PHP解释器
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #这句是错的,注释掉或者删掉
include fastcgi.conf; #修改此处的文件名
}

重新加载
# nginx -s reload
#请先确保nginx是启动状态,否则运行该命令会报错,报错信息如下:
#[error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
-------------------------------------------------------------------------
步骤三:创建PHP页面,测试LNMP架构能否解析PHP页面

1)创建PHP测试页面1,可以参考lnmp_soft/php_scripts/test.php:

# vim /usr/local/nginx/html/test.php
<?php
$i=33;
echo $i;
?>

# php test.php #用php解释器来解释这个php文件。
33[root@proxy html]#
-------------------------------------------------------------------------
2)创建PHP测试页面,连接并查询MariaDB数据库。
可以参考lnmp_soft/php_scripts/mysql.php,这是老师提前写好了连接数据库的脚本,上班会有专门负责写代码的部门。

复制PHP测试页面到nginx默认的目录下,连接并查询MariaDB数据库。
cp /root/lnmp_soft/php_scripts/mysql.php /usr/local/nginx/html/
------------------------------------------------------------------------------
3)客户端client访问服务器php首页文档,验证是否成功。
# firefox www.a.com/mysql.php

服务端先进入数据库,给用户权限后,回到客户端浏览器刚访问的页面,刷新一下,可实时看到新增加的用户名和主机名!
MariaDB [mysql]> grant all on *.* to tom@'localhost' identified by '123';
MariaDB [mysql]> grant all on *.* to jerry@'2.2.2.2' identified by '123';

 

posted @ 2019-04-29 00:07  安于夏  阅读(162)  评论(0编辑  收藏  举报