1.nginx的介绍
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,Nginx是一款轻量级的Web 服务器/反向代理服 务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
1.1反向代理
反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。
1.2负载均衡
负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上面,将原先请求到单个服务器上面的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,这就是所说的负载均衡。
1.3动静分离
为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度,降低单个服务器的压力。
2.nginx的安装
2.1nginx的安装(这里主要使用源码编译安装)
安装前准备
安装make:
yum install gcc automake autoconf libtool make
安装g++
yum install gcc gcc-c++
安装nginx
下面正式安装nginx:
注:需要亚男壮pcre,zlib,pcre为了重写rewrite,zlib为了gzip压缩。
1.选择源码安装目录
笔者这里选择的是/home/
cd /home
2.安装pcre库
https://ftp.pcre.org/pub/pcre/ 下载最新的 PCRE 源码包,使用下面命令下载编译和安装 PCRE 包:
cd /home
wget https://ftp.pcre.org/pub/pcre/pcre-8.44.tar.gz
tar -zxvf pcre-8.44.tar.gz
cd pcre-8.44
./configure
make && make install
注:wget不存在需要yum安装
#搜索yum包
yum search wget
yum -y install (搜索出的包)
3.安装zlib包
http://zlib.net/zlib-1.2.11.tar.gz 下载最新的 zlib 源码包,使用下面命令下载编译和安装 zlib包:
cd /home
wget http://zlib.net/zlib-1.2.11.tar.gz
tar -zxvf zlib-1.2.11.tar.gzcd zlib-1.2.11
./configure
make && make install
4.安装ssl
cd /home
wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz
tar -zxvf openssl-1.1.1g.tar.gz
5.安装nginx
Nginx 一般有两个版本,分别是稳定版和开发版,您可以根据您的目的来选择这两个版本的其中一个,下面是把 Nginx 安装到 /usr/local/nginx 目录下的详细步骤:
cd /home
wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar -zxvf nginx-1.18.0.tar.gz
cd nginx-1.18.0
./configure --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_gzip_static_module --with-http_stub_status_module --with-file-aio --with-http_realip_module --with-http_ssl_module --with-pcre=/home/pcre-8.44 --with-zlib=/home/zlib-1.2.11 --with-openssl=/home/openssl-1.1.1g
make -j2
make install
--with-pcre=/usr/local/src/pcre-8.44 指的是pcre-8.44 的源码路径。
--with-zlib=/usr/local/src/zlib-1.2.11指的是zlib-1.2.11 的源码路径。
6.启动nginx
/usr/local/nginx/nginx
测试:
关闭虚拟机防火墙:systemctl stop firewalld(服务器需要开启80端口)
访问ip地址:
2.2安装php-fpm
nginx本身不能处理PHP,它只是个web服务器,当接收到请求后,如果是php请求,则发给php解释器处理,并把结果返回给客户端。
nginx一般是把请求发fastcgi管理进程处理,fascgi管理进程选择cgi子进程处理结果并返回被nginx
2.2.1什么是php-fpm
PHP-FPM是一个PHP FastCGI管理器,是只用于PHP的,可以在 http://php-fpm.org/download下载得到。
PHP-FPM其实是PHP源代码的一个补丁,旨在将FastCGI进程管理整合进PHP包中。必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用。
安装前准备
yum -y install gcc automake autoconf libtool make
yum -y install gcc gcc-c++ glibc
yum -y install libmcrypt-devel mhash-devel libxslt-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel sqlite-devel sqlite
wget https://github.com/kkos/oniguruma/archive/v6.9.4.tar.gz -O oniguruma-6.9.4.tar.gz
tar -xvf oniguruma-6.9.4.tar.gz
cd oniguruma-6.9.4/
./autogen.sh
./configure --prefix=/usr --libdir=/lib64
make && make install
安装php-fpm
php中文镜像地址:http://php.p2hp.com/downloads.php
cd /home
wget https://mirrors.sohu.com/php/php-7.4.16.tar.gz
tar -zxvf php-7.4.16.tar.gz
cd php-7.4.16
./configure --prefix=/usr/local/php --enable-fpm --with-mcrypt --enable-mbstring --disable-pdo --with-curl --disable-debug --disable-rpath --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --with-mhash --enable-zip --with-pcre-regex --with-mysql --with-mysqli --with-gd --with-jpeg-dir
make all install
安装完成之后,需要生成php-fpm配置文件
cd /usr/local/php
cp etc/php-fpm.conf.default etc/php-fpm.conf
cd /usr/local/php/etc/php-fpm.d
cp www.conf.default www.conf
配置nginx.conf,使nginx将php动态请求发送到php解释器处理
其中server段增加如下配置,否则会出现NO input file specified.错误
location ~ \.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_params;
}
创建php文件
在/usr/local/nginx/html下创建index.php文件,输入如下内容
echo phpinfo();
?>
启动php-fpm
/usr/local/php/sbin/php-fpm
浏览器访问:
3.nginx指令与server脚本
1.启动nginx
nginx安装完成后,切换到nginx安装目录中的sbin目录,通过执行该目录下nginx编译后的二进制文件即可启动程序。具体命令如下
cd /usr/local/nginx
./nginx
执行上面的操作后,成功启动nginx,程序是没有任何提示的。我们可以使用ps命令查看nginx的运行状态,具体命令如下:
说明:
前面2行分别是nginx主进程(master process)和工作进程(worker process),最后一行是grep nginx命令。当看到这两个nginx进程时,说明nginx已经启动。从第1列可以看出,nginx主进程以root用户运行,而工作进程以nobody用户运行,第二列显示了2个进程的ID(即PID),分别为:4698和4699。
2.停止nginx
当需要停止nginx服务时,有多种停止方式,可以根据需求才取不同的方式,具体如下:
1). 立即停止服务
nginx程序允许传递选项 -s 表示发送信号到主进程,如果后面跟上stop表示停止服务
./nginx -s stop
2). 从容停止服务
前面的stop是立即停止nginx服务,无论当前工作进程是否正在处理工作。而nginx提供的从容停止方式quit,是在完成当前工作任务后再停止。
./nginx -s quit
3). 通过kill 或 killall 命令杀死进程
linux中提供了kill和killall命令可以杀死进程,从而让指定的进程停止运行
方式一:
kill nginx主进程pid
方式二:
killall nginx
除了启动与停止nginx服务的操作,还有一些其他常用命令:
nginx -s reload #在nginx已经启动的情况下重新加载配置文件(平滑重启)
nginx -s repopen #重新打开日志文件
nginx -c /特定目录/nginx.conf #以特定目录下的配置文件启动nginx
nginx -t #检查当前配置文件是否正确
nginx -t -c /特定目录/nginx.conf #检测特定目录下的nginx配置文件是否正确
nginx -v #显示版本信息
nginx -V #显示版本信息和编译选项