Linux 编译安装 nginx
很久没有登我的博客园了,这两年一直埋头写代码,最近突然觉得,需要为自己技术积累的过程留下一个记录,等哪一天可以回来看看曾经菜鸟的自己。
废话不多说,这次编译安装nginx是在阿里云 Centos7 环境下进行的,安装的 nginx 版本为:1.19.1 ,每一步安装过程除了命令之外,我会尽可能将操作过程进行截图展示,保证信息展示的完整性。
1. 进行源码下载准备:
wget http://nginx.org/download/nginx-1.19.1.tar.gz
2. 对源码进行解压:
tar -zxf nginx-1.19.1.tar.gz cd nginx-1.19.1
3. 安装相关的编译环境
yum update yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
4. 编译安装
#添加用户和组 groupadd www useradd -g www www #配置 ./configure \ --user=www \ --group=www \ --prefix=/usr/local/nginx \ --with-http_ssl_module \ --with-http_stub_status_module \ --with-http_realip_module \ --with-threads #编译 make #安装 make install
5. 安装完成之后进行验证
/usr/local/nginx/sbin/nginx -V
如此,安装nginx完成。
下面进行相关的配置:
6. 创建软链接
ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
7. 设置开机自启动
vim /etc/init.d/nginx
#!/bin/sh # # nginx - this script starts and stops the nginx daemon # # chkconfig: - 85 15 # description: NGINX is an HTTP(S) server, HTTP(S) reverse \ # proxy and IMAP/POP3 proxy server # processname: nginx # config: /usr/local/nginx/conf/nginx.conf # config: /etc/sysconfig/nginx # pidfile: /usr/local/nginx/logs/nginx.pid # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ "$NETWORKING" = "no" ] && exit 0 nginx="/usr/local/nginx/sbin/nginx" prog=$(basename $nginx) NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf" [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx lockfile=/var/lock/subsys/nginx make_dirs() { # make required directories user=`$nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -` if [ -z "`grep $user /etc/passwd`" ]; then useradd -M -s /bin/nologin $user fi options=`$nginx -V 2>&1 | grep 'configure arguments:'` for opt in $options; do if [ `echo $opt | grep '.*-temp-path'` ]; then value=`echo $opt | cut -d "=" -f 2` if [ ! -d "$value" ]; then # echo "creating" $value mkdir -p $value && chown -R $user $value fi fi done } start() { [ -x $nginx ] || exit 5 [ -f $NGINX_CONF_FILE ] || exit 6 make_dirs echo -n $"Starting $prog: " daemon $nginx -c $NGINX_CONF_FILE retval=$? echo [ $retval -eq 0 ] && touch $lockfile return $retval } stop() { echo -n $"Stopping $prog: " killproc $prog -QUIT retval=$? echo [ $retval -eq 0 ] && rm -f $lockfile return $retval } restart() { configtest || return $? stop sleep 1 start } reload() { configtest || return $? echo -n $"Reloading $prog: " killproc $nginx -HUP RETVAL=$? echo } force_reload() { restart } configtest() { $nginx -t -c $NGINX_CONF_FILE } rh_status() { status $prog } rh_status_q() { rh_status >/dev/null 2>&1 } case "$1" in start) rh_status_q && exit 0 $1 ;; stop) rh_status_q || exit 0 $1 ;; restart|configtest) $1 ;; reload) rh_status_q || exit 7 $1 ;; force-reload) force_reload ;; status) rh_status ;; condrestart|try-restart) rh_status_q || exit 0 ;; *) echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}" exit 2 esac
赋予脚本可执行权限:
chmod a+x /etc/init.d/nginx
将 nginx 服务加入 chkconfig 管理列表
chkconfig --add /etc/init.d/nginx
chkconfig nginx on
# 启动
systemctl start nginx
8. 测试一下
curl localhost:80
输出:
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>Welcome to nginx!</title> 5 <style> 6 body { 7 width: 35em; 8 margin: 0 auto; 9 font-family: Tahoma, Verdana, Arial, sans-serif; 10 } 11 </style> 12 </head> 13 <body> 14 <h1>Welcome to nginx!</h1> 15 <p>If you see this page, the nginx web server is successfully installed and 16 working. Further configuration is required.</p> 17 18 <p>For online documentation and support please refer to 19 <a href="http://nginx.org/">nginx.org</a>.<br/> 20 Commercial support is available at 21 <a href="http://nginx.com/">nginx.com</a>.</p> 22 23 <p><em>Thank you for using nginx.</em></p> 24 </body> 25 </html>
9. 配置优化
下列配置在 nginx.conf 里与 http 节点同级
cd /usr/local/nginx/conf
vim nginx.conf
user www www; worker_processes auto; worker_rlimit_nofile 51200; events { use epoll; worker_connections 51200; multi_accept on; }
http 节点下加入下列配置,将会从指定目录加载配置文件
include /etc/nginx/*.conf;
10. 常用命令
# 启动 systemctl start nginx # 查看状态 systemctl status nginx # 停止 systemctl stop nginx # 重载配置 nginx -s reload # 测试配置是否正确 nginx -t