关于虚拟机的下载和安装,可以参考我之前的博客↓
VMware下载,安装及创建虚拟机
VMware安装Centos7 究极逐步详细图文流程
还有就是nginx源码包的下载:
官网中最新版本是1.19.6 ,而稳定版最新是1.18.0,这里我们选择稳定版:
下载地址:nginx: download(官网)
下载链接:nginx-1.18.0
当然你也可以使用wget直接下载到Linux上:
wget http://nginx.org/download/nginx-1.18.0.tar.gz
第一个:安装 gcc 的环境
c语言 的代码,编译环境一般都是直接使用gcc来完成,比如redis也是一样,安装命令如下:
yum install gcc-c++
如果出现make编译失败的问题:
之前我们在安装redis时,使用make命令编译时就发生了错误,调查后发现原因是安装的redis版本比较高,而cent os 的gcc环境版本又比较低,最后升级了gcc的版本才编译成功,由于这里我已经升级过了,这里直接附上升级的命令,还比较长:
yum -y install centos-release-scl && yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils && scl enable devtoolset-9 bash
其中最后 scl enable devtoolset-9 bash 这句命令是切换gcc版本的,但这个切换是临时的,当你重启linux系统,再确认gcc版本,他会回到4.8.5版本(CentOS 7 默认版本),我们可以使用如下命令永久切换gcc版本:
echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile
其实也就是在profile文件中加了一句命令:source /opt/rh/devtoolset-9/enable
最后使用 gcc -v 命令来确认当前gcc的版本:
第二个:安装 PCRE 的环境
PCRE(Perl Compatible Regular Expressions)是一个 Perl 库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库。
注:pcre-devel 是使用 pcre 开发的一个二次开发库。nginx 也需要此库。
安装命令如下:
yum install -y pcre pcre-devel
第三个:安装 zlib 的环境
zlib 库提供了很多种压缩和解压缩的方式,nginx 使用 zlib 对 http 包的内容进行 gzip(压缩),所以需要在 linux 上安装 zlib 库。
zlib-devel也是同理。
安装命令如下:
yum install -y zlib zlib-devel
第四个:安装 OpenSSL 的环境
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。nginx 不仅支持 http 协议,还支持 https(即在 ssl 协议上传输 http),所以需要在 linux安装 openssl 库。
openssl-devel依旧同理可得。
安装命令如下:
yum install -y openssl openssl-devel
tar -zxvf nginx-1.18.0.tar.gz
不指定解压目录就默认解压到当前目录下:nginx-1.18.0
也可以在命令最后使用 -C 加上 路径 的方式指定解压的目录。
Makefile是一种配置文件, Makefile 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。
这里构建makeFile的最简洁的命令是:
./configure
但是这里我们不使用这种简单的,我们会在此命令后边加上一些参数值,当然,不带参数值用的就是默认值,如下:
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi \
--with-pcre
这里再附上指定对应参数值的作用:
参数值 | 作用域 |
---|---|
–prefix=/usr \ | 指向安装目录 |
–sbin-path=/usr/sbin/nginx \ | 指向(执行)程序文件(nginx) |
–conf-path=/etc/nginx/nginx.conf \ | 指向配置文件 |
–error-log-path=/var/log/nginx/error.log \ | 指向log |
–http-log-path=/var/log/nginx/access.log \ | 指向http-log |
–pid-path=/var/run/nginx/nginx.pid \ | 指向pid |
–lock-path=/var/lock/nginx.lock \ | 安装文件锁定,防止安装文件被别人利用,或自己误操作。 |
–user=nginx \ | 指向当前用户 |
–group=nginx \ | 指向当前用户组 |
–with-http_ssl_module \ | 启用ngx_http_ssl_module支持(使支持https请求,需已安装openssl) |
–with-http_flv_module \ | 启用ngx_http_flv_module支持(提供寻求内存使用基于时间的偏移量文件) |
–with-http_stub_status_module \ | 启用ngx_http_stub_status_module支持(获取nginx自上次启动以来的工作状态) |
–with-http_gzip_static_module \ | 启用ngx_http_gzip_static_module支持(在线实时压缩输出数据流) |
–http-client-body-temp-path=/var/tmp/nginx/client \ | 设定http客户端请求临时文件路径 |
–http-proxy-temp-path=/var/tmp/nginx/proxy \ | 设定http代理临时文件路径 |
–http-fastcgi-temp-path=/var/tmp/nginx/fcgi \ | 设定http fastcgi临时文件路径 |
–http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \ | 设定http uwsgi临时文件路径 |
–http-scgi-temp-path=/var/tmp/nginx/scgi \ | 设定http scgi临时文件路径 |
–with-pcre | 启用pcre库 |
OK,构建完成makeFile文件:
下来开始编译,使用命令:
make
make install
非常快啊,啪的一下,就完成了:
其在我们编译目录的同级目录下构建了一个名为nginx的文件夹:
我说停停,这里我们还需要再创建一个文件夹,因为上边再makeFile中指定临时文件目录为/var/temp/nginx/client,需要在 /var 下创建此目录(-p参数就是创建子目录):
mkdir /var/temp/nginx/client -p
到这里nginx的安装就已经完成了。接下来我们进行测试。
我们进入Nginx目录下的sbin目录:
里边也没啥,就一个可执行程序。。。跑起来吧
./nginx
ps aux|grep nginx
发现了nginx主程序master和工作程序worker分别在两个线程上:
我们从页面来看一下,因为其代理监听的是http所在的80端口,这里我们直接访问:
ip + 80 端口,其实不用输入端口号默认的也是80.
最后的最后,补上几个常用命令:
命令 | 作用 |
---|---|
./nginx | 启动Nginx |
./nginx -s reload | 重启Nginx(刷新Nginx配置文件) |
./nginx -s stop | 关闭Nginx |
./nginx -s quit | 关闭Nginx(推荐) |
当然,
kill -9 线程id
也是可以关闭的0.0