• 亚马逊AWS服务器CentOS/Linux系统Shell安装Nginx及配置自启动


    领了一个亚马逊的1年免费服务器,今天尝试安装 Nginx 服务器,使用原生的 Shell 方法。

    亚马逊AWS服务器CentOS/Linux系统Shell安装Nginx及配置自启动 经验总结 第1张

    为了方便以后查看,就把过程记录一下。

    注意:亚马逊(AWS)服务器默认只能用 user-ec2 账户进行登陆,需要切换一下,使用 root 账户登陆。否则会因为权限不够,导致一些软件或功能无法安装。

    参考我之前的文章:使用Xshell登录亚马逊AWS EC2服务器&配置root+密码方式登录

    系统平台:Amazon Linux 2 AMI (HVM)

    安装步骤:

    一、安装编译工具及库文件

    yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

    二、首先要安装 PCRE

    PCRE 作用是让 Nginx 支持 Rewrite 功能。

    注:需要按步骤一步一步操作,特别注意目录。

    1、下载 PCRE 安装包

    插:这里可能会提示 -bash: wget: command not found 

    需要安装 wget 下载工具:若已安装,直接跳过即可

    yum -y install wget

    安装完成即可继续操作。

    下载 PCRE 安装包,下载地址:https://pilotfiber.dl.sourceforge.net/project/pcre/pcre/8.43/pcre-8.43.tar.gz

    cd /usr/local/src/
    wget https://pilotfiber.dl.sourceforge.net/project/pcre/pcre/8.43/pcre-8.43.tar.gz

    2、解压安装包:

    tar zxvf pcre-8.43.tar.gz

    3、进入安装包目录

    cd pcre-8.43

    4、编译安装 

    这里可能会提示 -bash: make: command not found ,参考上面 wget 的安装,如果已经安装直接跳过。

    yum -y install gcc automake autoconf libtool make

    然后继续操作,编译安装:

    ./configure
    make
    make install

    5、查看 PCRE 版本

    pcre-config --version

    安装 Nginx

    1、下载 Nginx,下载地址:http://nginx.org/download/nginx-1.16.0.tar.gz

    cd /usr/local/src/
    wget http://nginx.org/download/nginx-1.16.0.tar.gz

    2、解压安装包

    tar zxvf nginx-1.16.0.tar.gz

    3、进入安装包目录

    cd nginx-1.16.0

    4、编译安装

    ./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.43
    make
    make install

    注意,此处用 pcre2 make 会报错,建议老实用 pcre ,别问我是怎么知道的。

    5、查看nginx版本

    /usr/local/webserver/nginx/sbin/nginx -v

    至此,nginx安装完成。

    亚马逊AWS服务器CentOS/Linux系统Shell安装Nginx及配置自启动 经验总结 第2张

    Nginx 配置

    创建 Nginx 运行使用的用户 www:

    /usr/sbin/groupadd www 
    /usr/sbin/useradd -g www www

    配置 nginx.conf ,将 /usr/local/webserver/nginx/conf/nginx.conf 替换为以下内容:

    cat /usr/local/webserver/nginx/conf/nginx.conf
    user www www;
    worker_processes 2; #设置值和CPU核心数一致
    error_log /usr/local/webserver/nginx/logs/nginx_error.log crit; #日志位置和日志级别
    pid /usr/local/webserver/nginx/nginx.pid;
    #Specifies the value for maximum file descriptors that can be opened by this process.
    worker_rlimit_nofile 65535;
    events
    {
      use epoll;
      worker_connections 65535;
    }
    http
    {
      include mime.types;
      default_type application/octet-stream;
      log_format main  '$remote_addr - $remote_user [$time_local] "$request" '
                   '$status $body_bytes_sent "$http_referer" '
                   '"$http_user_agent" $http_x_forwarded_for';
      
    #charset gb2312;
      server_names_hash_bucket_size 128;
      client_header_buffer_size 32k;
      large_client_header_buffers 4 32k;
      client_max_body_size 8m;
      sendfile on;
      tcp_nopush on;
      keepalive_timeout 60;
      tcp_nodelay on;
      fastcgi_connect_timeout 300;
      fastcgi_send_timeout 300;
      fastcgi_read_timeout 300;
      fastcgi_buffer_size 64k;
      fastcgi_buffers 4 64k;
      fastcgi_busy_buffers_size 128k;
      fastcgi_temp_file_write_size 128k;
      gzip on; 
      gzip_min_length 1k;
      gzip_buffers 4 16k;
      gzip_http_version 1.0;
      gzip_comp_level 2;
      gzip_types text/plain application/x-javascript text/css application/xml;
      gzip_vary on;
     #limit_zone crawler $binary_remote_addr 10m;
     #下面是server虚拟主机的配置
     server
      {
        listen 80;#监听端口
        server_name localhost;#域名
        index index.html index.htm index.php;
        root /usr/local/webserver/nginx/html;#站点目录
          location ~ .*.(php|php5)?$
        {
          #fastcgi_pass unix:/tmp/php-cgi.sock;
          fastcgi_pass 127.0.0.1:9000;
          fastcgi_index index.php;
          include fastcgi.conf;
        }
        location ~ .*.(gif|jpg|jpeg|png|bmp|swf|ico)$
        {
          expires 30d;
      # access_log off;
        }
        location ~ .*.(js|css)?$
        {
          expires 15d;
       # access_log off;
        }
        access_log off;
      }
    }

    检查配置文件 nginx.conf 的正确性命令:

    /usr/local/webserver/nginx/sbin/nginx -t

    亚马逊AWS服务器CentOS/Linux系统Shell安装Nginx及配置自启动 经验总结 第3张

    启动 Nginx:

    /usr/local/webserver/nginx/sbin/nginx #启动Nginx
    ps -ef|grep nginx #查看Nginx进程

    访问站点:

    从浏览器访问我们配置的站点ip:

    亚马逊AWS服务器CentOS/Linux系统Shell安装Nginx及配置自启动 经验总结 第4张

    Nginx 其他命令:

    /usr/local/webserver/nginx/sbin/nginx -s reload            # 重新载入配置文件
    /usr/local/webserver/nginx/sbin/nginx -s reopen            # 重启 Nginx
    /usr/local/webserver/nginx/sbin/nginx -s stop              # 停止 Nginx

    设置 Nginx 开机自启:

    方法一:该脚本来自 Nginx 官方,脚本地址:http://wiki.nginx.org/RedHatNginxInitScript :

    首先,在 linux 系统的 /etc/init.d/ 目录下创建 nginx 文件,使用如下命令:

    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:      /etc/nginx/nginx.conf
    # config:      /etc/sysconfig/nginx
    # pidfile:     /var/run/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/webserver/nginx/sbin/ngin"
    prog=$(basename $nginx)
    
    NGINX_CONF_FILE="/usr/local/webserver/nginx/conf/nginx.conf"
    
    [ -/etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
    
    lockfile=/var/lock/subsys/nginx
    
    make_dirs() {
       # make required directories
       user=`$nginx -V 2>&1 | grep "configure arguments:.*--user=" | sed 's/[^*]*--user=([^ ]*).*/1/g' -`
       if [ -"$user" ]; then
          if [ -"`grep $user /etc/passwd`" ]; then
             useradd --/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 [ ! -"$value" ]; then
                      # echo "creating" $value
                      mkdir -p $value && chown -R $user $value
                  fi
              fi
           done
        fi
    }
    
    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 --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

    按键盘的 ESC 键进入命令模式,输入 :wq 保存并退出 vim 。

    不过要注意,如果你是自定义编译安装的 nginx ,需要根据您的安装路径修改上方代码中的这两项配置:(以上代码已修改为我们上方的路径)

    nginx="/usr/local/webserver/nginx/sbin/nginx" #修改成Nginx执行程序的路径。
    NGINX_CONF_FILE="/usr/local/webserver/nginx/conf/nginx.conf" #修改成配置文件的路径。

    保存脚本文件后设置文件的执行权限:

    chmod a+/etc/init.d/nginx

    然后,就可以通过该脚本对nginx服务进行管理了:

    /etc/init.d/nginx start
    /etc/init.d/nginx stop

    使用 chkconfig 进行管理:

    上面的方法完成了用脚本管理 Nginx 服务的功能,但是还是不太方便,比如要设置 Nginx 开机启动等。这时可以使用 chkconfig 来设置。

    先将 Nginx 服务加入 chkconfig 管理列表:

    chkconfig --add /etc/init.d/nginx

    然后,就可以使用 service 对 Nginx 进行启动,重启等操作了。

    service nginx start
    service nginx stop

    设置终端模式开机启动:

    chkconfig nginx on

    参考自:http://blog.csdn.net/boyish_/article/details/51768784

    方法二:

    在脚本中添加如下命令:

    #!/bin/bash
    # nginx Startup script for the Nginx HTTP Server
    # it is v.0.0.2 version.
    # chkconfig: - 85 15# description: Nginx is a high-performance web and proxy server.
    #              It has a lot of features, but it's not for everyone.# processname: nginx
    # pidfile: /var/run/nginx.pid
    # config: /usr/local/nginx/conf/nginx.conf
    
    nginxd=/usr/local/webserver/nginx/sbin/nginx
    nginx_config=/usr/local/webserver/nginx/conf/nginx.conf
    nginx_pid=/var/run/nginx.pid
    RETVAL=0prog="nginx"# Source function library.
    . /etc/rc.d/init.d/functions
    # Source networking configuration.
    . /etc/sysconfig/network
    # Check that networking is up.
    [ ${NETWORKING} = "no" ] && exit 0[ -x $nginxd ] || exit 0# Start nginx daemons functions.
    
    start() {if [ -e $nginx_pid ];then
    
       echo "nginx already running...."
    
       exit 1fi
    
       echo -n $"Starting $prog: "
    
       daemon $nginxd -c ${nginx_config}
    
       RETVAL=$?
    
       echo
    
       [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx   return $RETVAL
    
    }
    
    # Stop nginx daemons functions.
    
    stop() {
    
            echo -n $"Stopping $prog: "
    
            killproc $nginxd
    
            RETVAL=$?
    
            echo
    
            [ $RETVAL = 0 ] && rm -/var/lock/subsys/nginx /var/run/nginx.pid
    
    }
    
    # reload nginx service functions.
    
    reload() {
    
        echo -n $"Reloading $prog: "
    
        #kill -HUP `cat ${nginx_pid}`
    
        killproc $nginxd -HUP
    
        RETVAL=$?
    
        echo
    
    }
    
    # See how we were called.case "$1" instart)
    
            start
    
            ;;
    
    stop)
    
            stop
    
            ;;
    
    reload)
    
            reload
    
            ;;
    
    restart)
    
            stop
    
            start
    
            ;;
    
    status)
    
            status $prog
    
            RETVAL=$?
    
            ;;*)
    
            echo $"Usage: $prog {start|stop|restart|reload|status|help}"
    
            exit 1esac
    
    exit $RETVAL
    注意配置里的路径,需要将路径改为自己的相应路径。

    接着,设置文件的访问权限:

    chmod a+/etc/init.d/nginx; #(a+x参数表示 ==> all user can execute  所有用户可执行)

    最后将 Ngix加入到 rc.local 文件中,这样开机的时候 Nginx 就默认启动了

    vi /etc/rc.local

    添加

    /etc/init.d/nginx start

    保存并退出。

    下次重启就会生效,实现 Nginx 的自启动。

    https://www.w3h5.com/post/335.html

  • 相关阅读:
    mysql中表名是order的CRUD的错误
    BAT-增加JAVA环境变量(WIN764位)
    D7 D2007 XE10.1 都支持的字符分隔函数
    问题-百度云同步盘登陆时提示155010错误
    BAT-批量改文件后缀名
    delphi判断线程是否正在运行
    JAVA-JSP动作元素之param
    JAVA-JSP动作元素之forward
    JAVA-JSP动作元素之include
    JAVA-JSP之taglib指令
  • 原文地址:https://www.cnblogs.com/lxwphp/p/11235119.html
Copyright © 2020-2023  润新知