这篇文章介绍制作一个nginx绿色版本包的方法。在linux服务器解压nginx压缩包就能启动。如果需要卸载直接删除目录即可,非常方便。
制作前提
1.找一台root 用户的linux机器,一般自己搭建一个虚拟机,这里就不做过多的描述了,网上有很多教程虚拟机搭建linux系统。
开始制作
# 安装基础的依赖工具
yum -y install gcc-c++ make wget
# 下载nginx模块依赖的软件包和nginx源码包
wget https://www.openssl.org/source/openssl-1.0.2s.tar.gz wget https://ftp.pcre.org/pub/pcre/pcre-8.43.tar.gz wget https://zlib.net/zlib-1.2.11.tar.gz wget http://nginx.org/download/nginx-1.16.1.tar.gz
#解压
tar -zxvf openssl-1.0.2s.tar.gz tar -zxvf pcre-8.43.tar.gz tar -zxvf zlib-1.2.11.tar.gz tar -zxvf nginx-1.16.1.tar.gz
# 编译nginx
cd nginx-1.16.1 ./configure \ --with-openssl=../openssl-1.0.2s \ --with-pcre=../pcre-8.43 \ --with-zlib=../zlib-1.2.11 \ --with-pcre-jit --user=root \ --prefix=/root/nginx \ --with-http_ssl_module \ --with-http_v2_module
# 输出如下信息说明编译配置没问题
Configuration summary + using PCRE library: ../pcre-8.43 + using OpenSSL library: ../openssl-1.0.2s + using zlib library: ../zlib-1.2.11 nginx path prefix: "/root/nginx" nginx binary file: "/root/nginx/sbin/nginx" nginx modules path: "/root/nginx/modules" nginx configuration prefix: "/root/nginx/conf" nginx configuration file: "/root/nginx/conf/nginx.conf" nginx pid file: "/root/nginx/logs/nginx.pid" nginx error log file: "/root/nginx/logs/error.log" nginx http access log file: "/root/nginx/logs/access.log" nginx http client request body temporary files: "client_body_temp" nginx http proxy temporary files: "proxy_temp" nginx http fastcgi temporary files: "fastcgi_temp" nginx http uwsgi temporary files: "uwsgi_temp" nginx http scgi temporary files: "scgi_temp"
#编译,这里要稍等一会会。
make make install
#完成之后进入 root 打包nginx
cd /root
tar -zxcf nginx-green.tar.gz nginx
到这里绿色免安装版的nginx for linux就制作完成了。
启动nginx
root 用户下启动
在目标主机 root 目录下 下解压nginx
#解压
tar -zxvf nginx-green.tar.gz
# 进入 启动目录
cd /root/nginx/sbin/
执行:
./nginx -c /root/nginx/conf/nginx.conf
问题:在root用户下当然启动简单,但是非root 用户下呢
非root用户下启动 nginx
方案一:上面我们编译时指定的是/root/nginx 的目录,所以启动时会自动找/root/nginx 下的文件,会出现一些 错误。
所以这里,重新编译打包nginx 指定 非root用户nginx的home
例如: 用户为nginx 家目录为:/home/nginx
cd nginx-1.16.1 ./configure \ --with-openssl=../openssl-1.0.2s \ --with-pcre=../pcre-8.43 \ --with-zlib=../zlib-1.2.11 \ --with-pcre-jit --user=nginx \ --prefix=/home/nginx \ --with-http_ssl_module \ --with-http_v2_module
# 编译&& 安装
make && make install
打包解压 到 /home/nginx 目录下.
执行 启动命令
nginx -c /root/nginx/conf/nginx.conf
方案二:依然使用root 打包的nginx tar包,
解压指定 nginx 的home 目录 : /home/nginx/
tar -zxvf nginx-green.tar.gz -C /home/nginx/
启动时:进入 nginx/sbin/ 目录 启动 指定 -p
./nginx -p /home/nginx/nginx -c /home/nginx/conf/nginx.conf
总结:方案一、方案二 亲自验证过,方案一比较麻烦,需要重新编译指定prefix 目录,后面其他地方要使用nginx可以直接使用制作好的绿色版本nginx压缩包,使用方案二,解压启动即可
卸载直接删除 目录即可。
nginx 的配置方式这里就不讲解了,nginx已经是非常成熟的了,网上可以找到一大堆。
nginx 常用命令
./nginx #打开 nginx
nginx -s reload|reopen|stop|quit
#重新加载配置|重启|停止|退出 nginx
nginx -t #测试配置是否有语法错误
nginx [-?hvVtq] [-s signal] [-c filename] [-p prefix] [-g directives]
-?,-h : 打开帮助信息
-v : 显示版本信息并退出
-V : 显示版本和配置选项信息,然后退出
-t : 检测配置文件是否有语法错误,然后退出
-q : 在检测配置文件期间屏蔽非错误信息
-s signal : 给一个 nginx 主进程发送信号:stop(停止), quit(退出), reopen(重启), reload(重新加载配置文件)
-p prefix : 设置前缀路径(默认是:/usr/local/nginx/)
-c filename : 设置配置文件(默认是:/usr/local/nginx/conf/nginx.conf)
-g directives : 设置配置文件外的全局指令
-- 启动(不推荐):在nginx目录下有一个sbin目录,sbin目录下有一个nginx可执行程序。
./nginx
-- 启动(指定配置文件,推荐)
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
-- 关闭命令:相当于找到nginx进程kill。
./nginx -s stop
-- 退出命令:等程序执行完毕后关闭,建议使用此命令。
./nginx -s quit
-- 动态加载配置文件:可以不关闭nginx的情况下更新配置文件。
./nginx -s reload
-- 关闭 http 记录访问日志。
access_log off;
或
access_log /dev/null;
-- 关闭 server 操作日志。
error_log /dev/null;
-- access.log日志按天输出。
-- 在server中 server_name 下 配置如下:
if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})") {
set $year $1;
set $month $2;
set $day $3;
}
access_log logs/$year-$month-$day-access.log;