Nginx搭建LNMP、WEB

企业级LNMP WEB架构实战

1、CGI和FastCGI概念剖析
公共网关接口”(Common Gateway Interface,CGI),是HTTP服务器与本机或者其它机器上的程序进行通信的一种工具,其程序须运行在网络服务器上。CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量,如php、perl、tcl等。
传统CGI接口方式的主要缺点是性能很差,因为每次HTTP服务器遇到动态程序时都需要重新启动脚本解析器来执行解析,然后将结果返回给HTTP服务器。这在处理高并发访问时几乎是不可用的。另外传统的CGI接口方式安全性也很差,现在已经很少使用。
Fast-CGI是从CGI发展改进而来的,FastCGI接口方式采用C/S结构,可以将HTTP服务器和脚本解析服务器分开,同时在脚本解析服务器上启动一个或者多个脚本解析守护进程。当HTTP服务器每次遇到动态程序时,可以将其直接交付给Fast-CGI进程来执行,然后将得到的结果返回给浏览器。这种方式可以让HTTP服务器专一地处理静态请求或者将动态脚本服务器的结果返回给客户端,这在很大程度上提高了整个应用系统的性能。
FastCGI是语言无关的、可伸缩架构的CGI开放扩展,将CGI解释器进程保持在内存中,以此获得较高的性能。FastCGI是一个协议,php-fpm实现了这个协议,php-fpm的FastCGI协议需要有进程池,php-fpm实现的FastCGI进程叫php-cgi,所以php-fpm其实是他自身的FastCGI或php-cgi进程管理器。
2、LNMP架构工作原理
LNMP WEB架构中,Nginx为一款高性能Web服务器,本身是不能处理PHP的,当接收到客户端浏览器发送HTTP Request请求时,Nginx服务器响应并处理web请求,静态资源CSS、图片、视频、TXT等静态文件请求,Nginx服务器可以直接处理并回应。
PHP动态页面请求Nginx不能直接处理,Nginx服务器会将PHP网页脚本通过接口传输协议(网关协议)传输给PHP-FPM(进程管理程序)。
PHP-FPM调用PHP解析器(PHP-CGI)进程,PHP解析器解析PHP脚本信息。最后PHP解释器将解析后的脚本返回到PHP-FPM,PHP-FPM再通过Fast-CGI的形式将脚本信息传送给Nginx。如图14-5所示:
在这里插入图片描述
图14-5 Nginx+FastCGI通信原理图
CGI、FAST-CGI、PHP-CGI、PHP-FPM概念总结:
 CGI:Common gateway interface 通用网关接口;
 FastCGI:Fast common gateway interface 快速通用网关接口;
 PHP-FPM:PHP-Fast CGI Process Manager CGI,是FastCGII协议的实现并且带进程管理器;
 PHP-CGI是解析PHP代码的程序,属于PHP程序解释器,只负责解析请求,不负责进程管理;
 PHP-FPM是PHP-CGI进程管理器,可以有效控制内存和进程、可以平滑重载PHP配置。
3、企业级LNMP源码编译步骤
(1) Nginx安装配置
wget -c http://nginx.org/download/nginx-1.16.0.tar.gz
tar -xzf nginx-1.16.0.tar.gz
cd nginx-1.16.0
useradd www ;./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make
make install
(2) MYSQL安装配置
yum install -y gcc-c++ ncurses-devel cmake make perl gcc autoconf
yum install -y automake zlib libxml2 libxml2-devel libgcrypt libtool bison
wget -c http://mirrors.163.com/mysql/Downloads/MySQL-5.6/mysql-5.6.45.tar.gz
tar -xzf mysql-5.6.45.tar.gz
cd mysql-5.6.45
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql56/
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock
-DMYSQL_DATADIR=/data/mysql
-DSYSCONFDIR=/etc
-DMYSQL_USER=mysql
-DMYSQL_TCP_PORT=3306
-DWITH_XTRADB_STORAGE_ENGINE=1
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_PARTITION_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_MYISAM_STORAGE_ENGINE=1
-DWITH_READLINE=1
-DENABLED_LOCAL_INFILE=1
-DWITH_EXTRA_CHARSETS=1
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
-DEXTRA_CHARSETS=all
-DWITH_BIG_TABLES=1
-DWITH_DEBUG=0
make
make install
#Config MYSQL Set System Service
cd /usr/local/mysql56/
\cp support-files/my-default.cnf /etc/my.cnf
\cp support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --level 35 mysqld on
service mysqld stop
mv /data/mysql/ /data/mysql.bak/
mkdir -p /data/mysql/
useradd mysql
/usr/local/mysql56/scripts/mysql_install_db --user=mysql --datadir=/data/mysql/ --basedir=/usr/local/mysql56/
ln -s /usr/local/mysql56/bin/* /usr/bin/
service mysqld restart
(3) PHP安装配置
yum install libxml2 libxml2-devel gzip bzip2 -y
wget -c http://mirrors.sohu.com/php/php-5.6.28.tar.bz2
tar jxf php-5.6.28.tar.bz2
cd php-5.6.28
./configure --prefix=/usr/local/php5 --with-config-file-path=/usr/local/php5/etc --with-mysql=/usr/local/mysql56/
–enable-fpm
make
make install

#Config LNMP WEB and Start Server.
cp php.ini-development /usr/local/php5/etc/php.ini
cp /usr/local/php5/etc/php-fpm.conf.default /usr/local/php5/etc/php-fpm.conf
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod o+x /etc/init.d/php-fpm
/etc/init.d/php-fpm start
(4) Nginx配置文件配置
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME d o c u m e n t r o o t document_root documentrootfastcgi_script_name;
include fastcgi_params;
}
}
}
(5) 测试LNMP架构测试,创建index.php测试页面,如图14-6所示:
在这里插入图片描述
图14-6 LNMP企业实战测试页面

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,那我就来帮您写一份关于 NginxLNMP 的实训报告。报告的主要内容包括实训目的、实验环境、实验过程、实验结果和实验总结等。请您参考以下报告模板: ## 实训目的 本次实训的目的是了解 NginxLNMP 的基本概念和使用方法,掌握 Nginx 的配置和部署方法,以及学会使用 LNMP 搭建 Web 服务器。 ## 实验环境 本次实验使用的环境如下: - 操作系统:Ubuntu 18.04 LTS - Nginx 版本:1.14.0 - PHP 版本:7.2.24 - MySQL 版本:5.7.28 ## 实验过程 ### 安装 Nginx 1. 打开终端,执行以下命令安装 Nginx: ``` sudo apt-get update sudo apt-get install nginx ``` 2. 安装完成后,启动 Nginx 服务: ``` sudo systemctl start nginx ``` 3. 使用浏览器访问服务器的 IP 地址,如果能看到 Nginx 的欢迎页面,则说明 Nginx 安装成功。 ### 配置 Nginx 1. 打开 Nginx 的配置文件 `/etc/nginx/nginx.conf`,并备份原文件: ``` sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak ``` 2. 修改配置文件,将 `worker_processes` 设置为 CPU 核数的两倍,将 `worker_connections` 设置为 1024。 3. 在 `http` 块中添加以下内容,用于反向代理到后端应用服务器: ``` upstream backend { server 127.0.0.1:8000; } server { listen 80; server_name example.com; location / { proxy_pass http://backend; } } ``` 4. 重新启动 Nginx 服务: ``` sudo systemctl restart nginx ``` ### 安装 LNMP 1. 安装 LNMP: ``` sudo apt-get install php7.2-fpm mysql-server ``` 2. 启动 PHP-FPM 服务: ``` sudo systemctl start php7.2-fpm ``` 3. 配置 PHP-FPM,打开 `/etc/php/7.2/fpm/pool.d/www.conf` 文件,修改以下内容: ``` listen = /run/php/php7.2-fpm.sock ``` 4. 重新启动 PHP-FPM 服务: ``` sudo systemctl restart php7.2-fpm ``` ### 部署应用程序 1. 创建一个 PHP 应用程序,例如 `index.php`,并将其放置在 `/var/www/html` 目录下。 2. 打开浏览器,访问服务器的 IP 地址,如果能看到 PHP 应用程序的页面,则说明 LNMP 部署成功。 ## 实验结果 本次实验成功安装和配置了 Nginx,以及使用 LNMP 部署了一个 PHP 应用程序。通过反向代理,Nginx 可以将请求转发到后端应用服务器,提高应用程序的性能和可靠性。 ## 实验总结 本次实验让我深入了解了 NginxLNMP 的基本概念和使用方法。Nginx 是一个高性能的 Web 服务器,可以通过反向代理和负载均衡提高应用程序的性能和可靠性。LNMP 则是一套经典的 Web 服务器架构,使用 PHP、MySQL 和 Nginx搭建 Web 服务器。通过实验,我深刻理解了 Web 服务器的基本原理和实现方法,对我的职业发展将有很大的帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值