部署LNMP Nginx+FastCGI 、 Nginx高级技术

案例1:部署LNMP环境
案例2:构建LNMP平台
案例3:地址重写
1 案例1:部署LNMP环境
1.1 问题

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

在RHEL7系统中,源码安装Nginx,使用RPM包安装MariaDB、PHP、PHP-FPM软件。
操作过程中需要安装的软件列表如下:
nginx
mariadb、mariadb-server、mariadb-devel
php、php-fpm、php-mysql
1.3 步骤

实现此案例需要按照如下步骤进行。
步骤一:安装软件

1)使用yum安装基础依赖包
[[email protected] ~]# yum -y install gcc openssl-devel pcre-devel zlib-devel
2)源码安装Nginx(如果前面课程中已经安装Nginx,则忽略这一步)
[[email protected] ~]# useradd -s /sbin/nologin nginx
[[email protected] ~]# tar -xvf nginx-1.12.2.tar.gz
[[email protected] ~]# cd nginx-1.12.2
[[email protected] nginx-1.12.2]# ./configure \

--user=nginx --group=nginx \
--with-http_ssl_module
[[email protected] ~]# make && make install
.. ..
3)安装MariaDB
Mariadb在新版RHEL7光盘中包含有该软件,配置yum源后可以直接使用yum安装:
[[email protected] ~]# yum -y install mariadb mariadb-server mariadb-devel
4)php和php-fpm(该软件包在lnmp_soft中提供)
[[email protected] ~]# yum -y install php php-mysql
[[email protected] ~]# yum -y install php-fpm-5.4.16-42.el7.x86_64.rpm
步骤二:启动服务

1)启动Nginx服务(如果已经启动nginx,则可以忽略这一步)
这里需要注意的是,如果服务器上已经启动了其他监听80端口的服务软件(如httpd),则需要先关闭该服务,否则会出现冲突。
[[email protected] ~]# systemctl stop httpd //如果该服务存在则关闭该服务
[[email protected] ~]# /usr/local/nginx/sbin/nginx //启动Nginx服务
[[email protected] ~]# netstat -utnlp | grep :80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 32428/nginx
2)启动MySQL服务
[[email protected] ~]# systemctl start mariadb //启动服务器
[[email protected] ~]# systemctl status mariadb //查看服务状态
[[email protected] ~]# systemctl enable mariadb //设置开机启动
3)启动PHP-FPM服务
[[email protected] ~]# systemctl start php-fpm //启动服务
[[email protected] ~]# systemctl status php-fpm //查看服务状态
[[email protected] ~]# systemctl enable php-fpm //设置开机启动
4)设置防火墙与SELinux
[[email protected] ~]# firewall-cmd --set-default-zone=trusted
[[email protected] ~]# setenforce 0
2 案例2:构建LNMP平台
2.1 问题

沿用练习一,通过调整Nginx服务端配置,实现以下目标:
配置Fast-CGI支持PHP网页
创建PHP测试页面,测试使用PHP连接数据库的效果
2.2 方案

使用2台RHEL7虚拟机,其中一台作为LNMP服务器(192.168.4.5)、另外一台作为测试用的Linux客户机(192.168.4.100),如图-1所示。

图-1
Nginx结合FastCGI技术即可支持PHP页面架构,因此本案例,需要延续练习一的实验内容,通过修改Nginx及php-fpm配置文件实现对PHP页面的支持。
2.3 步骤

实现此案例需要按照如下步骤进行。
步骤一: php-fpm配置文件

1)查看php-fpm配置文件(实验中不需要修改该文件)
[[email protected] etc]# 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配置文件并启动服务

[[email protected] ~]# vim /usr/local/nginx/conf/nginx.conf
location / {
root html;
index index.php index.html index.htm;
#设置默认首页为index.php,当用户在浏览器地址栏中只写域名或IP,不说访问什么页面时,服务器会把默认首页index.php返回给用户
}
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;
}
[[email protected] ~]# /usr/local/nginx/sbin/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:
[[email protected] ~]# vim /usr/local/nginx/html/test1.php
<?php
$i="This is a test Page";
echo $i;
?>
2)创建PHP测试页面,连接并查询MariaDB数据库。
可以参考lnmp_soft/php_scripts/mysql.php:
[[email protected] ~]# vim /usr/local/nginx/html/test2.php
<?php
$mysqli = new mysqli(‘localhost‘,‘root‘,‘密码‘,‘mysql‘);
//注意:root为mysql账户名称,密码需要修改为实际mysql密码,无密码则留空即可
if (mysqli_connect_errno()){
die(‘Unable to connect!‘). mysqli_connect_error();
}
$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>");
}
?>
3)客户端使用浏览器访问服务器PHP首页文档,检验是否成功:
[[email protected] ~]# firefox http://192.168.4.5/test1.php
[[email protected] ~]# firefox http://192.168.4.5/test2.php
4)LNMP常见问题
Nginx的默认访问日志文件为/usr/local/nginx/logs/access.log
Nginx的默认错误日志文件为/usr/local/nginx/logs/error.log
PHP默认错误日志文件为/var/log/php-fpm/www-error.log
如果动态网站访问失败,可用参考错误日志,查找错误信息。
3 案例3:地址重写
3.1 问题

沿用练习二,通过调整Nginx服务端配置,实现以下目标:
所有访问a.html的请求,重定向到b.html;
所有访问192.168.4.5的请求重定向至www.tmooc.cn;
所有访问192.168.4.5/下面子页面,重定向至www.tmooc.cn/下相同的页面;
实现firefox与curl访问相同页面文件,返回不同的内容。
3.2 方案

关于Nginx服务器的地址重写,主要用到的配置参数是rewrite:
rewrite regex replacement flag
rewrite 旧地址 新地址 [选项]
3.3 步骤

实现此案例需要按照如下步骤进行。
步骤一:修改配置文件(访问a.html重定向到b.html)

1)修改Nginx服务配置:
[[email protected] ~]# vim /usr/local/nginx/conf/nginx.conf
.. ..
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
rewrite /a.html /b.html;
}
}
[[email protected] ~]# echo "BB" > /usr/local/nginx/html/b.html
2)重新加载配置文件
[[email protected] ~]# /usr/local/nginx/sbin/nginx -s reload
3)客户端测试
[[email protected] ~]# firefox http://192.168.4.5/a.html
步骤二:访问a.html重定向到b.html(跳转地址栏)

1)修改Nginx服务配置:
[[email protected] ~]# vim /usr/local/nginx/conf/nginx.conf
.. ..
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
rewrite /a.html /b.html redirect;
}
}
2)重新加载配置文件
[[email protected] ~]# /usr/local/nginx/sbin/nginx -s reload
#请先确保nginx是启动状态才可以执行命令成功,否则报错,报错信息如下:
#[error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
3)客户端测试(仔细观察浏览器地址栏的变化)
[[email protected] ~]# firefox http://192.168.4.5/a.html
步骤三:修改配置文件(访问192.168.4.5的请求重定向至www.tmooc.cn)

1) 修改Nginx服务配置
[[email protected] ~]# vim /usr/local/nginx/conf/nginx.conf
.. ..
server {
listen 80;
server_name localhost;
rewrite ^/ http://www.tmooc.cn/;
location / {
root html;
index index.html index.htm;

rewrite /a.html /b.html redirect;

}
}
2)重新加载配置文件
[[email protected] ~]# /usr/local/nginx/sbin/nginx -s reload
#请先确保nginx是启动状态才可以执行命令成功,否则报错,报错信息如下:
#[error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
3)客户端测试(真实机测试,真实机才可以连接tmooc)
[[email protected] ~]# firefox http://192.168.4.5
步骤四:修改配置文件(访问192.168.4.5/下面子页面,重定向至www.tmooc.cn/下相同的页面)

1) 修改Nginx服务配置
[[email protected] ~]# vim /usr/local/nginx/conf/nginx.conf
.. ..
server {
listen 80;
server_name localhost;
rewrite ^/(.*)$ http://www.tmooc.cn/$1;
location / {
root html;
index index.html index.htm;

rewrite /a.html /b.html redirect;

}
}
2)重新加载配置文件
[[email protected] ~]# /usr/local/nginx/sbin/nginx -s reload
#请先确保nginx是启动状态才可以执行命令成功,否则报错,报错信息如下:
#[error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
3)客户端测试(真实机测试,真实机才可以连接tmooc)
[[email protected] ~]# firefox http://192.168.4.5
[[email protected] ~]# firefox http://192.168.4.5/test
步骤五:修改配置文件(实现curl和火狐访问相同链接返回的页面不同)
1) 创建网页目录以及对应的页面文件:
[[email protected] ~]# echo "I am Normal page" > /usr/local/nginx/html/test.html
[[email protected] ~]# mkdir -p /usr/local/nginx/html/firefox/
[[email protected] ~]# echo "firefox page" > /usr/local/nginx/html/firefox/test.html
2) 修改Nginx服务配置
[[email protected] ~]# vim /usr/local/nginx/conf/nginx.conf
.. ..
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
#这里,~符号代表正则匹配,符号代表不区分大小写
if ($http_user_agent ~
firefox) { //识别客户端firefox浏览器
rewrite ^(.*)$ /firefox/$1;
}
}
3)重新加载配置文件
[[email protected] ~]# /usr/local/nginx/sbin/nginx -s reload
#请先确保nginx是启动状态才可以执行命令成功,否则报错,报错信息如下:
#[error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
4)客户端测试
[[email protected] ~]# firefox http://192.168.4.5/test.html
[[email protected] ~]# curl http://192.168.4.5/test.html
5)地址重写格式【总结】
rewrite 旧地址 新地址 [选项];
last 不再读其他rewrite
break 不再读其他语句,结束请求
redirect 临时重定向
permament 永久重定向

原文地址:http://blog.51cto.com/13841846/2134334

时间: 2024-10-09 21:31:26

部署LNMP Nginx+FastCGI 、 Nginx高级技术的相关文章

安装部署LNMP/大并发nginx优化/php性能加速 实战

安装部署LNMP及Nginx优化.PHP加速进行压力测试 部署LNMP环境: 主机 IP 主机名 Centos7.2 192.168.5.128 www.benet.com 部署步骤如下: 使用yum仓库安装Nginx依赖包 yum -y install  gcc gcc-c++ make libtool zlib zlib-devel pcre pcre-devel openssl openssl-devel 创建Nginx用户 组解压Nginx软件包 编译安装Nginx ./configur

部署LNMP 、 Nginx+FastCGI 、 Nginx高级技术

########################################################################################################## LNMP: -L :LINUX操作系统-N :Nginx网站服务软件-M :Mysql Mariadb数据库-P :PHP Python Perl网站开发语言 ###############################################################

LNMP部署、Nginx+FastCGI、Nginx高级技术

1 案例1:部署LNMP环境1.1 问题安装部署Nginx.MariaDB.PHP环境?安装部署Nginx.MariaDB.PHP.PHP-FPM:?启动Nginx.MariaDB.FPM服务:?并测试LNMP是否工作正常.1.2 方案在RHEL7系统中,源码安装Nginx,使用RPM包安装MariaDB.PHP.PHP-FPM软件.操作过程中需要安装的软件列表如下:?nginx [源码](web服务器,接收用户请求)?mariadb(客户端软件mysql).mariadb-server(服务)

【入门篇】Nginx + FastCGI 程序(C/C++) 搭建高性能web service的Demo及部署发布

http://blog.csdn.net/allenlinrui/article/details/19419721 1.介绍 Nginx - 高性能web server,这个不用多说了,大家都知道. FastCGI程序 - 常驻型CGI程序,它是语言无关的.可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能. Nginx要调用FastCGI程序,需要用到FastCGI进程管理程序(因为nginx不能直接执行外部的cgi程序,我们可使用lighttpd中的s

linux后台server开发环境的部署配置和验证(nginx+apache+php-fpm+FASTCGI(C/C++))

linux后台server开发环境部署配置 引言 背景 随着互联网业务的不断增多.开发环境变得越来越复杂,为了便于统一server端的开发部署环境,特制定本配置文档. 使用软件 CentOS 6.3(Linux version 2.6.32-279.el6.x86_64) gcc (GCC) 4.4.6 20120305 (Red Hat 4.4.6-4) 本次配置 Nginx 1.5.8 Apache 2.4.7 php 5.3.26 目的 构造WEB前端技术架构.web前端的部署结构技术全然

LNMP基于fastcgi实现nginx,php,mysql的分离

平时安装LNMP是把它们安装到同一台机器上,我想这个对大家来说丝毫没有挑战,下面我们实现把他们剥离到不同的机器上,让各个服务器直接分担原来的压力,也可以增加节点实现负载均衡,如:多增加一台php,让两台机器轮询的编译php,也可以在增加一台nginx,实现dns的轮询负载均衡. 规划: nginx:172.16.1.1 php(FASTCGI):172.16.1.2 mysql:172.16.1.3 环境: redhat5.8 32位,yum可以正常使用,开发包组"Development Too

linux后台服务器开发环境部署配置和验证(nginx+apache+php-fpm+FASTCGI(C/C++))

linux后台服务器开发环境部署配置 引言 背景 随着公司互联网业务的不断增多,开发环境变得越来越复杂,为了便于统一服务器端的开发部署环境,特制定本配置文档. 使用软件 CentOS 6.3(Linux version 2.6.32-279.el6.x86_64) gcc (GCC) 4.4.6 20120305 (Red Hat 4.4.6-4) 本次配置 Nginx 1.5.8 Apache 2.4.7 php 5.3.26 目的 构造WEB前端技术架构,web前端的部署结构技术完全完成.

Python应用攻略 ---- Mac环境下Flask+Nginx+FastCGI实现Python应用部署

对于一个iOS开发者来说,会写后台应用并非必要的技能,然而掌握一门后台语言却无疑可以锦上添花,不仅可以对前后台架构有更加全面的了解,同时在实际开发工作中也可以自己写一些后台应用. flask框架本身集成了一个简单的服务器,可以在本机调用,然而在这种情况下要调用Python应用接口就只能使用模拟器调试,若想要使用真机调试,我们还是需要正儿八经地部署服务器. 在这里,我们介绍一种Nginx搭配FastCGI实现Mac环境下的本地服务器部署. Nginx配置 a. 安装HomeBrew ruby -e

Nginx+FastCGI支持HTTPS部署过程详述

依赖的软件 nginx-1.13.5.tar.gz spawn-fcgi-1.6.4.tar.gz fcgi-2.4.0.tar.gz 编译安装 [[email protected] ~]# tar  xzvf nginx-1.13.5.tar.gz [[email protected] ~]# cd  nginx-1.13.5 [[email protected] nginx-1.13.5]# ./configure --prefix=/usr/local/nginx ./configure: