1.1 nginx介绍
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,Nginx是一款轻量级的Web 服务器/反向代理服 务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
反向代理
反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。
负载均衡
负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上面,将原先请求到单个服务器上面的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,这就是所说的负载均衡。
动静分离
为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度,降低单个服务器的压力。
1.2 nginx安装
1.2.1 nginx安装
nginx可以使用各平台的默认包来安装,这里介绍使用源码编译安装,包括具体的编译参数信息。
安装前的准备
安装make:
yum install gcc automake autoconf libtool make
安装g++
yum install gcc gcc-c++
安装nginx
下面正式安装nginx:
注意:一般我们都需要先装pcre, zlib,前者为了重写rewrite,后者为了gzip压缩。
- 选的源码安装目录
可以是任何目录,这里选择的是/usr/src/
- 安装pcre库
https://ftp.pcre.org/pub/pcre/ 下载最新的 PCRE 源码包,使用下面命令下载编译和安装 PCRE 包:
cd /usr/src
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
- 安装zlib库
http://zlib.net/zlib-1.2.11.tar.gz 下载最新的 zlib 源码包,使用下面命令下载编译和安装 zlib包:
cd /usr/src
wget http://zlib.net/zlib-1.2.11.tar.gz
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure
make
make install
4、安装ssl
cd /usr/src
wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz
tar -zxvf openssl-1.1.1g.tar.gz
./config --prefix=/usr/local/openssl
make -j4
make install
- 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=/usr/src/pcre-8.44 --with-zlib=/usr/src/zlib-1.2.11 --with-openssl=/usr/src/openssl-1.1.1g
make -j2
mkae 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 的源码路径。
安装成功
复制nginx到bin目录
cp /usr/local/nginx/nginx /bin/nginx
- 启动
启动nginx:
nginx
7.添加80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent ##添加
firewall-cmd --reload ##重启防火墙
1.2.2 php-fpm安装
nginx本身不能处理PHP,它只是个web服务器,当接收到请求后,如果是php请求,则发给php解释器处理,并把结果返回给客户端。
nginx一般是把请求发fastcgi管理进程处理,fascgi管理进程选择cgi子进程处理结果并返回被nginx
这里介绍如何使nginx支持PHP
什么是php-fpm
PHP-FPM是一个PHP FastCGI管理器,是只用于PHP的,可以在 http://php-fpm.org/download下载得到.
PHP-FPM其实是PHP源代码的一个补丁,旨在将FastCGI进程管理整合进PHP包中。必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用。
新版PHP已经集成php-fpm了,不再是第三方的包了,推荐使用。PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置,比spawn-fcgi具有更多优点,所以被PHP官方收录了。在./configure的时候带 –enable-fpm参数即可开启PHP-FPM,其它参数都是配置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
1. wget https://github.com/kkos/oniguruma/archive/v6.9.4.tar.gz -O oniguruma-6.9.4.tar.gz
2. tar -xvf oniguruma-6.9.4.tar.gz
3. cd oniguruma-6.9.4/
4. ./autogen.sh
5. ./configure --prefix=/usr --libdir=/lib64
6. make && make install
安装php-fpm
php中文镜像地址:http://php.p2hp.com/downloads.php
cd /usr/src
wget https://mirrors.sohu.com/php/php-8.0.3.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文件,输入如下内容
<?php
echo phpinfo();
?>
启动php-fpm和nginx
/usr/local/php/sbin/php-fpm
nginx
1.3 nginx指令
启动nginx
nginx ##已经把/usr/local/nginx/sbin/nginx 复制到/bin 目录
停止nginx (3种方式)
nginx -s stop #1)立即停止服务
nginx -s quit #2)从容停止服务(在完成当前工作任务后再停止)
pkill -9 nginx #3)通过命令杀死进程
其他常用命令:
命令 | 说明 |
nginx -s reload | 在nginx已经启动的情况下重新加载配置文件(平滑重启) |
nginx -s repopen | 重新打开日志文件 |
nginx -c /特定目录/nginx.conf | 以特定目录下的配置文件启动nginx |
nginx -t | 检查当前配置文件是否正确 |
nginx -t -c /特定目录/nginx.conf | 检测特定目录下的nginx配置文件是否正确 |
nginx -v | 显示版本信息 |
nginx -V | 显示版本信息和编译选项 |