由于存在着无数多个3维宇宙,这些宇宙并不能通过长、宽、高或者时间进行相连,只能通过另外一条维度进行连接,因此平行宇宙本身至少就是一个4+1维时空(5维空间) -----维基百科
每一个细节都在自己手中的LNMP环境搭建–N
每一个细节都在自己手中的LNMP环境搭建–N

每一个细节都在自己手中的LNMP环境搭建–N

每一个细节都在自己手中的LNMP环境搭建-N

本文主要讲手动编译安装Nginx。

a. 这里编译安装的Nginx依赖以下库及模块
Nginx: http://nginx.org/en/download.html
Nginx替换模块: https://github.com/yaoweibin/ngx_http_substitutions_filter_module
Nginx依赖PCRE2: https://www.linuxfromscratch.org/blfs/view/svn/general/pcre2.html
Nginx依赖zlib: http://www.zlib.net/
http://www.zlib.net/zlib-[最新版本].tar.gz
Nginx依赖OpenSSL: https://www.openssl.org/source/
Nginx流媒体服务模块: https://github.com/arut/nginx-rtmp-module

Nginx流媒体服务模块: https://github.com/arut/nginx-rtmp-module

# 下载
wget http://nginx.org/download/nginx-[最新版本].tar.gz
wget  https://github.com/PCRE2Project/pcre2/releases/download/pcre2-[最新版本]/pcre2-[最新版本].tar.bz2
wget http://www.zlib.net/zlib-[最新版本].tar.gz
wget https://www.openssl.org/source/openssl-[最新版本].tar.gz
# ngx_http_substitutions_filter_module 到给定的官方地址手动下载,手动上传到服务器
# nginx-rtmp-module 到给定的官方地址手动下载,手动上传到服务器

# 解压
tar -zxvf nginx-[最新版本].tar.gz 
unzip nginx-rtmp-module-master.zip 
unzip ngx_http_substitutions_filter_module-master.zip 
tar -zxvf openssl-[最新版本].tar.gz
tar -jxvf pcre2-[最新版本].tar.bz2
tar -zxvf zlib-[最新版本].tar.gz
# 重命名
mv ngx_http_substitutions_filter_module-master ngx_http_substitutions_filter_module
mv nginx-rtmp-module-master nginx-rtmp-module

b. 为了安全,更改源码,隐藏软件名称和版本号

vim src/core/nginx.h
13 #define NGINX_VERSION      "vxxx"  #修改版本号  
14 #define NGINX_VER          "xxx/" NGINX_VERSION  #修改服务器名称

vim src/http/ngx_http_header_filter_module.c
49 static char ngx_http_server_string[] = "Server: xxx" CRLF;    修改标粗斜体带下划线部分

修改HTTP头的信息中的server字段,防止回显版本号
vim src/http/ngx_http_special_response.c
http错误码的返回,有时候我们页面程序出现错误,Nginx会代我们返回相应的错误代码,回显的时候,会带上nginx和版本号,我们把他隐藏起来.
22 "<hr><center>" NGINX_VER "</center>" CRLF  老版本这里需要修改为xxx,现在这里不需要修改,因为它调用了NGINX_VER变量
29 "<hr><center>nginx</center>" CRLF    #将nginx修改为xxx

c. 准备编译脚本

./configure \
--prefix=/home/server/nginxxxx \
--sbin-path=/home/server/nginxxxx/sbin/nginx \
--conf-path=/home/server/nginxxxx/nginx.conf \
--error-log-path=/home/server/nginxxxx/logs/error.log \
--http-log-path=/home/server/nginxxxx/logs/access.log \
--pid-path=/home/server/nginxxxx/nginx.pid \
--lock-path=/home/server/nginxxxx/nginx.lock \
--http-client-body-temp-path=/home/server/nginxxxx/cache/client_temp \
--http-proxy-temp-path=/home/server/nginxxxx/cache/proxy_temp \
--http-fastcgi-temp-path=/home/server/nginxxxx/cache/fastcgi_temp \
--http-uwsgi-temp-path=/home/server/nginxxxx/cache/uwsgi_temp \
--http-scgi-temp-path=/home/server/nginxxxx/cache/scgi_temp \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-openssl=/home/software/openssl-xxx \
--with-http_realip_module \
--with-zlib=/home/software/zlib-xxx \
--with-http_addition_module \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_stub_status_module \
--with-http_auth_request_module \
--with-file-aio \
--with-stream \
--with-pcre=/home/software/pcre2-xxx \
--with-http_stub_status_module \
--with-http_sub_module \
--add-module=/home/software/ngx_http_substitutions_filter_module \
--add-module=/home/software/nginx-rtmp-module

d. 编译、安装

# 首先更新系统
yum -y update
yum install -y gcc gcc-c++
# 再执行上面的预编译命令
# 预编译完成后,执行编译、安装命令
make && make install

e. 编译、安装完成后,进行如下操作
在Nginx安装根目录下创建 cache 目录,因为在编译脚本指定了缓存目录

mkdir cache

f. 创建用户和组

groupadd -r nginx && useradd -r -g nginx -s /sbin/nologin nginx
# 或者
groupadd nginx && useradd nginx -s /sbin/nologin -M -g nginx

g. 设置开机启动
pid文件是进程文件里面存放的是程序运行的进程ID也就是进程号
nginx生成pid文件需要修改配置文件,${nginx_install_home_path}/nginx.conf
修改内容如下:
默认配置文件有这一条,如果没有请在nginx.conf中找到这一条然后将前面注释删除就可以了

pid        logs/nginx.pid;

/usr/lib/systemd/system路径下添加nginx.service文件

cd /usr/lib/systemd/system
touch nginx.service

向文件 nginx.service 写入如下内容:

[Unit]
Description=nginx
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
User=root
Type=forking
PIDFile=/home/server/nginxxxx/logs/nginx.pid
ExecStart=/home/server/nginxxxx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
ExecStartPre=/bin/sleep 10
[Install]
WantedBy=multi-user.target

注意:此文件需要754的权限

chmod 754 nginx.service

开启开机启动

systemctl enable nginx
# 或者
systemctl enable --now nginx

文中xxx部分,请根据实际情况,替换为自己的信息

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注