Linux编译安装Nginx

Nginx是一款是由俄罗斯程序设计师Igor Sysoev开发的高性能Web服务器,在面对高并发连接且处理静态资源较多的场景下,推荐使用Nginx替代Apache。

实验环境

操作系统:CentOS 7.7

Pcre:8.43

Zlib:1.2.11

OpenSSL:1.0.2u

Nginx:1.16.1

安装篇

第一步 安装依赖包

  1. [root@wanghualang ~]# yum -y install gcc gcc-c++ autoconf automake  

第二步 下载、解压源码包

  1. [root@wanghualang ~]# cd /usr/local/src/  
  2. [root@wanghualang src]# wget --no-check-certificate http://zlib.net/zlib-1.2.11.tar.gz  
  3. [root@wanghualang src]# wget --no-check-certificate https://ftp.pcre.org/pub/pcre/pcre-8.43.tar.gz  
  4. [root@wanghualang src]# wget --no-check-certificate https://www.openssl.org/source/openssl-1.0.2u.tar.gz  
  5. [root@wanghualang src]# wget --no-check-certificate http://nginx.org/download/nginx-1.16.1.tar.gz  
  6. [root@wanghualang src]# tar xzf zlib-1.2.11.tar.gz  
  7. [root@wanghualang src]# tar xzf pcre-8.43.tar.gz  
  8. [root@wanghualang src]# tar xzf openssl-1.0.2u.tar.gz  
  9. [root@wanghualang src]# tar xzf nginx-1.16.1.tar.gz  

第三步 新建用户组、用户

  1. [root@wanghualang ~]# groupadd nginx  
  2. [root@wanghualang ~]# useradd nginx -M -g nginx -s /sbin/nologin  

第四步 编译安装Nginx

  1. [root@wanghualang ~]# cd /usr/local/src/nginx-1.16.1          
  2. [root@wanghualang nginx-1.16.1]# ./configure \
  3. --user=nginx \
  4. --group=nginx \
  5. --prefix=/usr/local/nginx \
  6. --with-pcre=/usr/local/src/pcre-8.43 \
  7. --with-openssl=/usr/local/src/openssl-1.0.2u \
  8. --with-zlib=/usr/local/src/zlib-1.2.11 \
  9. --with-http_gzip_static_module \
  10. --with-http_dav_module \
  11. --with-http_stub_status_module \
  12. --with-http_addition_module \
  13. --with-http_sub_module \
  14. --with-http_flv_module \
  15. --with-http_mp4_module \
  16. --with-http_ssl_module  \
  17. --with-http_v2_module
  18. [root@wanghualang nginx-1.16.1]# make
  19. [root@wanghualang nginx-1.16.1]# make install

第五步 配置启动服务脚本、开机启动

  1. [root@wanghualang ~]# vim /etc/init.d/nginx    
  2.     
  3. #!/bin/bash      
  4. #chkconfig: 2345 55 25      
  5.       
  6. PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin      
  7. NAME=nginx      
  8. NGINX_BIN=/usr/local/nginx/sbin/$NAME      
  9. CONFIGFILE=/usr/local/nginx/conf/$NAME.conf      
  10. PIDFILE=/usr/local/nginx/logs/$NAME.pid    
  11.     
  12. if [ -s /bin/ss ]; then      
  13.     StatBin=/bin/ss      
  14. else      
  15.     StatBin=/bin/netstat      
  16. fi      
  17.       
  18.       
  19. case "$1" in      
  20.     start)      
  21.         echo -n "Starting $NAME... "      
  22.       
  23.         if $StatBin -tnpl | grep -q nginx;then      
  24.             echo "$NAME (pid `pidof $NAME`) already running."      
  25.             exit 1      
  26.         fi      
  27.       
  28.         $NGINX_BIN -c $CONFIGFILE      
  29.       
  30.         if [ "$?" != 0 ] ; then      
  31.             echo " failed"      
  32.             exit 1      
  33.         else      
  34.             echo " done"      
  35.         fi      
  36.         ;;      
  37.       
  38.     stop)      
  39.         echo -n "Stoping $NAME... "      
  40.       
  41.         if ! $StatBin -tnpl | grep -q nginx; then      
  42.             echo "$NAME is not running."      
  43.             exit 1      
  44.         fi      
  45.       
  46.         $NGINX_BIN -s stop      
  47.       
  48.         if [ "$?" != 0 ] ; then      
  49.             echo " failed. Use force-quit"      
  50.             exit 1      
  51.         else      
  52.             echo " done"      
  53.         fi      
  54.         ;;      
  55.       
  56.     status)      
  57.         if $StatBin -tnpl | grep -q nginx; then      
  58.             PID=`pidof nginx`      
  59.             echo "$NAME (pid $PID) is running..."      
  60.         else      
  61.             echo "$NAME is stopped."      
  62.             exit 0      
  63.         fi      
  64.         ;;      
  65.       
  66.     force-quit|kill)      
  67.         echo -n "Terminating $NAME... "      
  68.       
  69.         if ! $StatBin -tnpl | grep -q nginx; then      
  70.             echo "$NAME is is stopped."      
  71.             exit 1      
  72.         fi      
  73.       
  74.         kill `pidof $NAME`      
  75.       
  76.         if [ "$?" != 0 ] ; then      
  77.             echo " failed"      
  78.             exit 1      
  79.         else      
  80.             echo " done"      
  81.         fi      
  82.         ;;      
  83.       
  84.     restart)      
  85.         $0 stop      
  86.         sleep 1      
  87.         $0 start      
  88.         ;;      
  89.       
  90.     reload)      
  91.         echo -n "Reload service $NAME... "      
  92.       
  93.         if $StatBin -tnpl | grep -q nginx; then      
  94.             $NGINX_BIN -s reload      
  95.             echo " done"      
  96.         else      
  97.             echo "$NAME is not running, can't reload."      
  98.             exit 1      
  99.         fi      
  100.         ;;      
  101.       
  102.     configtest)      
  103.         echo -n "Test $NAME configure files... "      
  104.       
  105.         $NGINX_BIN -t      
  106.         ;;      
  107.       
  108.     *)      
  109.         echo "Usage: $0 {start|stop|restart|reload|status|configtest|force-quit|kill}"      
  110.         exit 1      
  111.         ;;      
  112.       
  113. esac      

  1. [root@wanghualang ~]# chmod +x /etc/init.d/nginx    
  2. [root@wanghualang ~]# chkconfig --add nginx    
  3. [root@wanghualang ~]# chkconfig nginx on  

第六步 测试启动

  1. [root@wanghualang ~]# service nginx start  
  2. [root@wanghualang ~]# curl -s -I http://127.0.0.1 | grep HTTP  
匿名

发表评论

匿名网友 填写信息

评论:0   其中:访客  2   博主  1
    • avatar 菜鸟

      装完没有nginx.conf文件样

        • avatar 王花郎

          回复 菜鸟 每一步都操作到位的话,主配置文件就在:/usr/local/nginx/conf/nginx.conf

            • avatar 菜鸟

              回复 王花郎 可以教教把NGINX和PHP关联起来吗。我配置了一些NGINX,不太起作用。