美文网首页码农的世界Java 杂谈程序员
centos6.5服务器安装Nginx设置服务和开机自启

centos6.5服务器安装Nginx设置服务和开机自启

作者: Clone丶记忆 | 来源:发表于2017-08-05 14:48 被阅读277次

    1、安装Nginx及其依赖

    首先是老套路,使用ssh链接服务器,还记得以前的代码吗?

    ssh -t  用户名@服务器IP或者域名 -p 22
    <!--用户名一般是root,方便操作,我的登录代码如下-->
    ssh -t  root@acheng1314.cn -p 22
    

    在终端中输入上面命令按下回车,要求我们输入密码,这个密码是不可见的,所以一定要输入正确。

    链接到服务器后,我们切换到常用的安装路径,当然我服务器上面的安装路径是/usr/src,接着开始在终端操作:

    <!--切换到安装目录下-->
    cd /usr/src
    <!--创建Nginx文件夹用来存放Nginx相关的资源和依赖-->
    mkdir Nginx
    <!--下载资源和依赖-->
    yum -y install zlib zlib-devel openssl openssl--devel pcre pcre-devel 
    <!--上面的命令一般来说会是不需要安装什么,不过这都不重要,我们接着会重新安装指定的版本-->
    
    <!--下载pcre-->
    wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.40.tar.gz
    <!--解压-->
    tar -zxvf pcre-8.40.tar.gz
    <!--切换到pcre目录-->
    cd pcre-8.40
    <!--设置-->
    ./configure
    <!--编译-->
    make
    <!--安装-->
    make install
    
    <!--切换到Nginx主目录-->
    cd ..
    <!--下载及安装zlib-->
    wget http://zlib.net/zlib-1.2.11.tar.gz
    <!--解压-->
    tar -zxvf zlib-1.2.11.tar.gz
    <!--切换到zlib目录-->
    cd zlib-1.2.11
    <!--设置、编译、安装-->
    ./configure
    make
    make install
    
    
    <!--切换到Nginx主目录-->
    cd ..
    <!--下载及准备ssl-->
    wget http://www.openssl.org/source/openssl-fips-2.0.14.tar.gz
    <!--解压-->
    tar -zxvf openssl-fips-2.0.14.tar.gz
    <!--yum安装ssl-->
    yum -y install openssl openssl-devel
    
    <!--下载及安装nginx-->
    wget http://nginx.org/download/nginx-1.4.2.tar.gz
    tar -zxvf nginx-1.4.2.tar.gz
    cd nginx-1.4.2
    <!--设置Nginx安装目录/opt/nginx,且添加ssl支持-->
    ./configure --prefix=/opt/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre
    make
    make install
    

    到这里来讲,我们的nginx安装完成了,但是我们还需要做更多的事情,那就是配置服务器,添加ssl访问,设置服务和开机启动

    配置服务器

    互联网上关于服务器设置的很多,但是准确阐述的却不是那么多,而我刚好是在看了他们的东西后就呵呵了。正确的配置方法如下:

    <!--切换到nginx设置目录-->
    cd /opt/nginx/conf
    <!--vim编辑nginx配置文件-->
    vi nginx.conf
    

    我的nginx.conf如下:

    #user  nobody;
    worker_processes  1;
    
    #error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
    
    #pid        logs/nginx.pid;
    
    
    events {
        worker_connections  1024;
    }
    
    
    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"';
    
        #access_log  logs/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        #keepalive_timeout  0;
        keepalive_timeout  65;
    
        #gzip  on;
    # 注意这里是设置本机的相关的东西,建议不要更改
        server {
            listen       80;
            server_name  localhost;
    
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
    
            location / {
            root   html;
                    index  index.html index.htm;
            # proxy_pass http://localhost; 
            # proxy_set_header   Host    $host;
            # proxy_set_header   X-Real-IP   $remote_addr;
            # proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            }
    
            #error_page  404              /404.html;
    
            # redirect server error pages to the static page /50x.html
            #
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
    
            # proxy the PHP scripts to Apache listening on 127.0.0.1:80
            #
            #location ~ \.php$ {
            #    proxy_pass   http://127.0.0.1;
            #}
    
            # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
            #
            #location ~ \.php$ {
            #    root           html;
            #    fastcgi_pass   127.0.0.1:9000;
            #    fastcgi_index  index.php;
            #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            #    include        fastcgi_params;
            #}
    
            # deny access to .htaccess files, if Apache's document root
            # concurs with nginx's one
            #
            #location ~ /\.ht {
            #    deny  all;
            #}
        }
    
    
        # another virtual host using mix of IP-, name-, and port-based configuration
        #
        #server {
        #    listen       8000;
        #    listen       somename:8080;
        #    server_name  somename  alias  another.alias;
    
        #    location / {
        #        root   html;
        #        index  index.html index.htm;
        #    }
        #}
    
    # 这里是设置本机的https访问的,这里必须设置才能正确时https
        # HTTPS server
        #
        server {
            listen       443;
            server_name  localhost acheng1314.cn www.acheng1314.cn;
    
            ssl                  on;
            # 这里是你申请的签名,扔到conf下面的cert目录中
            ssl_certificate      cert/214217283570796.pem;
            ssl_certificate_key  cert/214217283570796.key;
    
            ssl_session_timeout  5m;
    
            ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
            ssl_ciphers  ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
            ssl_prefer_server_ciphers   on;
    
            location / {
            #    root   html;
            #    index  index.html index.htm;
        proxy_pass http://localhost;
        proxy_set_header   Host    $host;
        proxy_set_header   X-Real-IP   $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            }
    }
    # 这里是设置域名跳转的,转发这些域名到本机的8080端口,
    server {  
        listen       80;  
        server_name  *.acheng1314.cn acheng1314.cn;  
        location / {  
            proxy_pass http://localhost:8080/;  
            proxy_set_header   Host    $host;  
            proxy_set_header   X-Real-IP   $remote_addr;  
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;  
        }  
    }      
    
    }
    
    

    其实在写这个的时候必须注意的是,不管什么应用程序端口不能冲突!比如说我的nginx是绑定的80端口,如果tomcat再设定80端口,那么我的设置就算是绑定到localhost去也是会转发失败的!毕竟网络端口只能一个应用程序占用。

    <!--检查我们的设置是否正确,正确或者错误都有对应的提示-->
    /opt/nginx/sbin/nginx -t
    <!--配置正确,则启用nginx-->
    /opt/nginx/sbin/nginx
    <!--重新载入配置文件-->
    /opt/nginx/sbin/nginx -t
    
    <!--当然到了这里的时候肯定还不能通行,毕竟我们防火墙还把443端口拦截的,所以接着走起来。-->
    <!--添加443端口到防火墙-->
    /sbin/iptables -I INPUT -p tcp --dport 443 -j ACCEPT
    <!--保存防火墙配置-->
    /etc/rc.d/init.d/iptables save
    <!--是配置文件生效-->
    /etc/init.d/iptables status
    

    走到这一步,我们可以测试一下服务器了,按照正常的来讲,我现在的服务器已经是http和https都已经完全支持了。

    3、设置服务和自启

    其实说来,这里基本也没啥注意的,只要nginx路径设置正确即可。

    #!/bin/sh
    # Name:nginx4comex
    # nginx - this script starts and stops the nginx daemon
    #
    # description:  Nginx is an HTTP(S) server, HTTP(S) reverse \
    #               proxy and IMAP/POP3 proxy server
    # processname: nginx
    # config:      /opt/nginx/conf/nginx.conf
    # pidfile:     /comexHome/nginx/nginx.pid
    #
    # Created By http://comexchan.cnblogs.com/
    
    # 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_DAEMON_PATH="/opt/nginx/sbin/nginx"
    NGINX_CONF_FILE="/opt/nginx/conf/nginx.conf"
    NGINX_LOCK_FILE="/var/lock/subsys/nginx4comex"
    prog=$(basename $NGINX_DAEMON_PATH)
    
    start() {
        [ -x $NGINX_DAEMON_PATH ] || exit 5
        [ -f $NGINX_CONF_FILE ] || exit 6
        echo -n $"Starting $prog: "
        daemon $NGINX_DAEMON_PATH -c $NGINX_CONF_FILE
        retval=$?
        echo
        [ $retval -eq 0 ] && touch $NGINX_LOCK_FILE
        return $retval
    }
    
    stop() {
        echo -n $"Stopping $prog: "
        killproc $prog -QUIT
        retval=$?
        echo
        [ $retval -eq 0 ] && rm -f $NGINX_LOCK_FILE
        return $retval
    }
    
    restart() {
        configtest || return $?
        stop
        start
    }
    
    reload() {
        configtest || return $?
        echo -n $"Reloading $prog: "
        killproc $NGINX_DAEMON_PATH -HUP
        RETVAL=$?
        echo
    }
    
    force_reload() {
        restart
    }
    
    configtest() {
      $NGINX_DAEMON_PATH -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
    

    上面的代码就是用来创建服务的代码,将他们保存在nginx4comex文件中(这个文件我仍在了/opt/nginx目录下,一样使用vim编写)。注意下面的代码和你的配置对应即可。

    NGINX_DAEMON_PATH="/opt/nginx/sbin/nginx"
    NGINX_CONF_FILE="/opt/nginx/conf/nginx.conf"
    

    接着我们继续终端指令操作。

    <!--授权nginx4comex可执行-->
    chmod u+x nginx4comex
    <!--拷贝nginx4comex到/etc/init.d目录-->
    cp nginx4comex /etc/init.d
    <!--检查运行状态-->
    service nginx4comex status
    <!--添加到启动,先vim打开启动文件,然后添加启动代码-->
    vim /etc/rc.local
    <!--添加的启动代码如下-->
    /etc/init.d/nginx4comex start
    
    <!--至此我们的启动也添加完成,现在重启检查效果-->
    reboot
    

    最后来说我们已经设置了nginx代理tomcat,还设置了对应的服务器程序自启动。

    注意!nginx4comex是不能被chkconfig的,具体原因我也不清楚,但是原作者的文章中确实用了chkconfig的方法加入了启动,对linux有兴趣的可以去试一试。

    1、安装Nginx及其依赖

    首先是老套路,使用ssh链接服务器,还记得以前的代码吗?

    ssh -t  用户名@服务器IP或者域名 -p 22
    <!--用户名一般是root,方便操作,我的登录代码如下-->
    ssh -t  root@acheng1314.cn -p 22
    

    在终端中输入上面命令按下回车,要求我们输入密码,这个密码是不可见的,所以一定要输入正确。

    链接到服务器后,我们切换到常用的安装路径,当然我服务器上面的安装路径是/usr/src,接着开始在终端操作:

    <!--切换到安装目录下-->
    cd /usr/src
    <!--创建Nginx文件夹用来存放Nginx相关的资源和依赖-->
    mkdir Nginx
    <!--下载资源和依赖-->
    yum -y install zlib zlib-devel openssl openssl--devel pcre pcre-devel 
    <!--上面的命令一般来说会是不需要安装什么,不过这都不重要,我们接着会重新安装指定的版本-->
    
    <!--下载pcre-->
    wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.40.tar.gz
    <!--解压-->
    tar -zxvf pcre-8.40.tar.gz
    <!--切换到pcre目录-->
    cd pcre-8.40
    <!--设置-->
    ./configure
    <!--编译-->
    make
    <!--安装-->
    make install
    
    <!--切换到Nginx主目录-->
    cd ..
    <!--下载及安装zlib-->
    wget http://zlib.net/zlib-1.2.11.tar.gz
    <!--解压-->
    tar -zxvf zlib-1.2.11.tar.gz
    <!--切换到zlib目录-->
    cd zlib-1.2.11
    <!--设置、编译、安装-->
    ./configure
    make
    make install
    
    
    <!--切换到Nginx主目录-->
    cd ..
    <!--下载及准备ssl-->
    wget http://www.openssl.org/source/openssl-fips-2.0.14.tar.gz
    <!--解压-->
    tar -zxvf openssl-fips-2.0.14.tar.gz
    <!--yum安装ssl-->
    yum -y install openssl openssl-devel
    
    <!--下载及安装nginx-->
    wget http://nginx.org/download/nginx-1.4.2.tar.gz
    tar -zxvf nginx-1.4.2.tar.gz
    cd nginx-1.4.2
    <!--设置Nginx安装目录/opt/nginx,且添加ssl支持-->
    ./configure --prefix=/opt/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre
    make
    make install
    

    到这里来讲,我们的nginx安装完成了,但是我们还需要做更多的事情,那就是配置服务器,添加ssl访问,设置服务和开机启动

    配置服务器

    互联网上关于服务器设置的很多,但是准确阐述的却不是那么多,而我刚好是在看了他们的东西后就呵呵了。正确的配置方法如下:

    <!--切换到nginx设置目录-->
    cd /opt/nginx/conf
    <!--vim编辑nginx配置文件-->
    vi nginx.conf
    

    我的nginx.conf如下:

    #user  nobody;
    worker_processes  1;
    
    #error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
    
    #pid        logs/nginx.pid;
    
    
    events {
        worker_connections  1024;
    }
    
    
    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"';
    
        #access_log  logs/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        #keepalive_timeout  0;
        keepalive_timeout  65;
    
        #gzip  on;
    # 注意这里是设置本机的相关的东西,建议不要更改
        server {
            listen       80;
            server_name  localhost;
    
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
    
            location / {
            root   html;
                    index  index.html index.htm;
            # proxy_pass http://localhost; 
            # proxy_set_header   Host    $host;
            # proxy_set_header   X-Real-IP   $remote_addr;
            # proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            }
    
            #error_page  404              /404.html;
    
            # redirect server error pages to the static page /50x.html
            #
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
    
            # proxy the PHP scripts to Apache listening on 127.0.0.1:80
            #
            #location ~ \.php$ {
            #    proxy_pass   http://127.0.0.1;
            #}
    
            # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
            #
            #location ~ \.php$ {
            #    root           html;
            #    fastcgi_pass   127.0.0.1:9000;
            #    fastcgi_index  index.php;
            #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            #    include        fastcgi_params;
            #}
    
            # deny access to .htaccess files, if Apache's document root
            # concurs with nginx's one
            #
            #location ~ /\.ht {
            #    deny  all;
            #}
        }
    
    
        # another virtual host using mix of IP-, name-, and port-based configuration
        #
        #server {
        #    listen       8000;
        #    listen       somename:8080;
        #    server_name  somename  alias  another.alias;
    
        #    location / {
        #        root   html;
        #        index  index.html index.htm;
        #    }
        #}
    
    # 这里是设置本机的https访问的,这里必须设置才能正确时https
        # HTTPS server
        #
        server {
            listen       443;
            server_name  localhost acheng1314.cn www.acheng1314.cn;
    
            ssl                  on;
            # 这里是你申请的签名,扔到conf下面的cert目录中
            ssl_certificate      cert/214217283570796.pem;
            ssl_certificate_key  cert/214217283570796.key;
    
            ssl_session_timeout  5m;
    
            ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
            ssl_ciphers  ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
            ssl_prefer_server_ciphers   on;
    
            location / {
            #    root   html;
            #    index  index.html index.htm;
        proxy_pass http://localhost;
        proxy_set_header   Host    $host;
        proxy_set_header   X-Real-IP   $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            }
    }
    # 这里是设置域名跳转的,转发这些域名到本机的8080端口,
    server {  
        listen       80;  
        server_name  *.acheng1314.cn acheng1314.cn;  
        location / {  
            proxy_pass http://localhost:8080/;  
            proxy_set_header   Host    $host;  
            proxy_set_header   X-Real-IP   $remote_addr;  
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;  
        }  
    }      
    
    }
    
    

    其实在写这个的时候必须注意的是,不管什么应用程序端口不能冲突!比如说我的nginx是绑定的80端口,如果tomcat再设定80端口,那么我的设置就算是绑定到localhost去也是会转发失败的!毕竟网络端口只能一个应用程序占用。

    <!--检查我们的设置是否正确,正确或者错误都有对应的提示-->
    /opt/nginx/sbin/nginx -t
    <!--配置正确,则启用nginx-->
    /opt/nginx/sbin/nginx
    <!--重新载入配置文件-->
    /opt/nginx/sbin/nginx -t
    
    <!--当然到了这里的时候肯定还不能通行,毕竟我们防火墙还把443端口拦截的,所以接着走起来。-->
    <!--添加443端口到防火墙-->
    /sbin/iptables -I INPUT -p tcp --dport 443 -j ACCEPT
    <!--保存防火墙配置-->
    /etc/rc.d/init.d/iptables save
    <!--是配置文件生效-->
    /etc/init.d/iptables status
    

    走到这一步,我们可以测试一下服务器了,按照正常的来讲,我现在的服务器已经是http和https都已经完全支持了。

    3、设置服务和自启

    其实说来,这里基本也没啥注意的,只要nginx路径设置正确即可。

    #!/bin/sh
    # Name:nginx4comex
    # nginx - this script starts and stops the nginx daemon
    #
    # description:  Nginx is an HTTP(S) server, HTTP(S) reverse \
    #               proxy and IMAP/POP3 proxy server
    # processname: nginx
    # config:      /opt/nginx/conf/nginx.conf
    # pidfile:     /comexHome/nginx/nginx.pid
    #
    # Created By http://comexchan.cnblogs.com/
    
    # 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_DAEMON_PATH="/opt/nginx/sbin/nginx"
    NGINX_CONF_FILE="/opt/nginx/conf/nginx.conf"
    NGINX_LOCK_FILE="/var/lock/subsys/nginx4comex"
    prog=$(basename $NGINX_DAEMON_PATH)
    
    start() {
        [ -x $NGINX_DAEMON_PATH ] || exit 5
        [ -f $NGINX_CONF_FILE ] || exit 6
        echo -n $"Starting $prog: "
        daemon $NGINX_DAEMON_PATH -c $NGINX_CONF_FILE
        retval=$?
        echo
        [ $retval -eq 0 ] && touch $NGINX_LOCK_FILE
        return $retval
    }
    
    stop() {
        echo -n $"Stopping $prog: "
        killproc $prog -QUIT
        retval=$?
        echo
        [ $retval -eq 0 ] && rm -f $NGINX_LOCK_FILE
        return $retval
    }
    
    restart() {
        configtest || return $?
        stop
        start
    }
    
    reload() {
        configtest || return $?
        echo -n $"Reloading $prog: "
        killproc $NGINX_DAEMON_PATH -HUP
        RETVAL=$?
        echo
    }
    
    force_reload() {
        restart
    }
    
    configtest() {
      $NGINX_DAEMON_PATH -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
    

    上面的代码就是用来创建服务的代码,将他们保存在nginx4comex文件中(这个文件我仍在了/opt/nginx目录下,一样使用vim编写)。注意下面的代码和你的配置对应即可。

    NGINX_DAEMON_PATH="/opt/nginx/sbin/nginx"
    NGINX_CONF_FILE="/opt/nginx/conf/nginx.conf"
    

    接着我们继续终端指令操作。

    <!--授权nginx4comex可执行-->
    chmod u+x nginx4comex
    <!--拷贝nginx4comex到/etc/init.d目录-->
    cp nginx4comex /etc/init.d
    <!--检查运行状态-->
    service nginx4comex status
    <!--添加到启动,先vim打开启动文件,然后添加启动代码-->
    vim /etc/rc.local
    <!--添加的启动代码如下-->
    /etc/init.d/nginx4comex start
    
    <!--至此我们的启动也添加完成,现在重启检查效果-->
    reboot
    

    最后来说我们已经设置了nginx代理tomcat,还设置了对应的服务器程序自启动。

    注意!nginx4comex是不能被chkconfig的,具体原因我也不清楚,但是原作者的文章中确实用了chkconfig的方法加入了启动,对linux有兴趣的可以去试一试。

    1、安装Nginx及其依赖

    首先是老套路,使用ssh链接服务器,还记得以前的代码吗?

    ssh -t  用户名@服务器IP或者域名 -p 22
    <!--用户名一般是root,方便操作,我的登录代码如下-->
    ssh -t  root@acheng1314.cn -p 22
    

    在终端中输入上面命令按下回车,要求我们输入密码,这个密码是不可见的,所以一定要输入正确。

    链接到服务器后,我们切换到常用的安装路径,当然我服务器上面的安装路径是/usr/src,接着开始在终端操作:

    <!--切换到安装目录下-->
    cd /usr/src
    <!--创建Nginx文件夹用来存放Nginx相关的资源和依赖-->
    mkdir Nginx
    <!--下载资源和依赖-->
    yum -y install zlib zlib-devel openssl openssl--devel pcre pcre-devel 
    <!--上面的命令一般来说会是不需要安装什么,不过这都不重要,我们接着会重新安装指定的版本-->
    
    <!--下载pcre-->
    wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.40.tar.gz
    <!--解压-->
    tar -zxvf pcre-8.40.tar.gz
    <!--切换到pcre目录-->
    cd pcre-8.40
    <!--设置-->
    ./configure
    <!--编译-->
    make
    <!--安装-->
    make install
    
    <!--切换到Nginx主目录-->
    cd ..
    <!--下载及安装zlib-->
    wget http://zlib.net/zlib-1.2.11.tar.gz
    <!--解压-->
    tar -zxvf zlib-1.2.11.tar.gz
    <!--切换到zlib目录-->
    cd zlib-1.2.11
    <!--设置、编译、安装-->
    ./configure
    make
    make install
    
    
    <!--切换到Nginx主目录-->
    cd ..
    <!--下载及准备ssl-->
    wget http://www.openssl.org/source/openssl-fips-2.0.14.tar.gz
    <!--解压-->
    tar -zxvf openssl-fips-2.0.14.tar.gz
    <!--yum安装ssl-->
    yum -y install openssl openssl-devel
    
    <!--下载及安装nginx-->
    wget http://nginx.org/download/nginx-1.4.2.tar.gz
    tar -zxvf nginx-1.4.2.tar.gz
    cd nginx-1.4.2
    <!--设置Nginx安装目录/opt/nginx,且添加ssl支持-->
    ./configure --prefix=/opt/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre
    make
    make install
    

    到这里来讲,我们的nginx安装完成了,但是我们还需要做更多的事情,那就是配置服务器,添加ssl访问,设置服务和开机启动

    配置服务器

    互联网上关于服务器设置的很多,但是准确阐述的却不是那么多,而我刚好是在看了他们的东西后就呵呵了。正确的配置方法如下:

    <!--切换到nginx设置目录-->
    cd /opt/nginx/conf
    <!--vim编辑nginx配置文件-->
    vi nginx.conf
    

    我的nginx.conf如下:

    #user  nobody;
    worker_processes  1;
    
    #error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
    
    #pid        logs/nginx.pid;
    
    
    events {
        worker_connections  1024;
    }
    
    
    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"';
    
        #access_log  logs/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        #keepalive_timeout  0;
        keepalive_timeout  65;
    
        #gzip  on;
    # 注意这里是设置本机的相关的东西,建议不要更改
        server {
            listen       80;
            server_name  localhost;
    
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
    
            location / {
            root   html;
                    index  index.html index.htm;
            # proxy_pass http://localhost; 
            # proxy_set_header   Host    $host;
            # proxy_set_header   X-Real-IP   $remote_addr;
            # proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            }
    
            #error_page  404              /404.html;
    
            # redirect server error pages to the static page /50x.html
            #
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
    
            # proxy the PHP scripts to Apache listening on 127.0.0.1:80
            #
            #location ~ \.php$ {
            #    proxy_pass   http://127.0.0.1;
            #}
    
            # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
            #
            #location ~ \.php$ {
            #    root           html;
            #    fastcgi_pass   127.0.0.1:9000;
            #    fastcgi_index  index.php;
            #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            #    include        fastcgi_params;
            #}
    
            # deny access to .htaccess files, if Apache's document root
            # concurs with nginx's one
            #
            #location ~ /\.ht {
            #    deny  all;
            #}
        }
    
    
        # another virtual host using mix of IP-, name-, and port-based configuration
        #
        #server {
        #    listen       8000;
        #    listen       somename:8080;
        #    server_name  somename  alias  another.alias;
    
        #    location / {
        #        root   html;
        #        index  index.html index.htm;
        #    }
        #}
    
    # 这里是设置本机的https访问的,这里必须设置才能正确时https
        # HTTPS server
        #
        server {
            listen       443;
            server_name  localhost acheng1314.cn www.acheng1314.cn;
    
            ssl                  on;
            # 这里是你申请的签名,扔到conf下面的cert目录中
            ssl_certificate      cert/214217283570796.pem;
            ssl_certificate_key  cert/214217283570796.key;
    
            ssl_session_timeout  5m;
    
            ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
            ssl_ciphers  ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
            ssl_prefer_server_ciphers   on;
    
            location / {
            #    root   html;
            #    index  index.html index.htm;
        proxy_pass http://localhost;
        proxy_set_header   Host    $host;
        proxy_set_header   X-Real-IP   $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            }
    }
    # 这里是设置域名跳转的,转发这些域名到本机的8080端口,
    server {  
        listen       80;  
        server_name  *.acheng1314.cn acheng1314.cn;  
        location / {  
            proxy_pass http://localhost:8080/;  
            proxy_set_header   Host    $host;  
            proxy_set_header   X-Real-IP   $remote_addr;  
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;  
        }  
    }      
    
    }
    
    

    其实在写这个的时候必须注意的是,不管什么应用程序端口不能冲突!比如说我的nginx是绑定的80端口,如果tomcat再设定80端口,那么我的设置就算是绑定到localhost去也是会转发失败的!毕竟网络端口只能一个应用程序占用。

    <!--检查我们的设置是否正确,正确或者错误都有对应的提示-->
    /opt/nginx/sbin/nginx -t
    <!--配置正确,则启用nginx-->
    /opt/nginx/sbin/nginx
    <!--重新载入配置文件-->
    /opt/nginx/sbin/nginx -t
    
    <!--当然到了这里的时候肯定还不能通行,毕竟我们防火墙还把443端口拦截的,所以接着走起来。-->
    <!--添加443端口到防火墙-->
    /sbin/iptables -I INPUT -p tcp --dport 443 -j ACCEPT
    <!--保存防火墙配置-->
    /etc/rc.d/init.d/iptables save
    <!--是配置文件生效-->
    /etc/init.d/iptables status
    

    走到这一步,我们可以测试一下服务器了,按照正常的来讲,我现在的服务器已经是http和https都已经完全支持了。

    3、设置服务和自启

    其实说来,这里基本也没啥注意的,只要nginx路径设置正确即可。

    #!/bin/sh
    # Name:nginx4comex
    # nginx - this script starts and stops the nginx daemon
    #
    # description:  Nginx is an HTTP(S) server, HTTP(S) reverse \
    #               proxy and IMAP/POP3 proxy server
    # processname: nginx
    # config:      /opt/nginx/conf/nginx.conf
    # pidfile:     /comexHome/nginx/nginx.pid
    #
    # Created By http://comexchan.cnblogs.com/
    
    # 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_DAEMON_PATH="/opt/nginx/sbin/nginx"
    NGINX_CONF_FILE="/opt/nginx/conf/nginx.conf"
    NGINX_LOCK_FILE="/var/lock/subsys/nginx4comex"
    prog=$(basename $NGINX_DAEMON_PATH)
    
    start() {
        [ -x $NGINX_DAEMON_PATH ] || exit 5
        [ -f $NGINX_CONF_FILE ] || exit 6
        echo -n $"Starting $prog: "
        daemon $NGINX_DAEMON_PATH -c $NGINX_CONF_FILE
        retval=$?
        echo
        [ $retval -eq 0 ] && touch $NGINX_LOCK_FILE
        return $retval
    }
    
    stop() {
        echo -n $"Stopping $prog: "
        killproc $prog -QUIT
        retval=$?
        echo
        [ $retval -eq 0 ] && rm -f $NGINX_LOCK_FILE
        return $retval
    }
    
    restart() {
        configtest || return $?
        stop
        start
    }
    
    reload() {
        configtest || return $?
        echo -n $"Reloading $prog: "
        killproc $NGINX_DAEMON_PATH -HUP
        RETVAL=$?
        echo
    }
    
    force_reload() {
        restart
    }
    
    configtest() {
      $NGINX_DAEMON_PATH -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
    

    上面的代码就是用来创建服务的代码,将他们保存在nginx4comex文件中(这个文件我仍在了/opt/nginx目录下,一样使用vim编写)。注意下面的代码和你的配置对应即可。

    NGINX_DAEMON_PATH="/opt/nginx/sbin/nginx"
    NGINX_CONF_FILE="/opt/nginx/conf/nginx.conf"
    

    接着我们继续终端指令操作。

    <!--授权nginx4comex可执行-->
    chmod u+x nginx4comex
    <!--拷贝nginx4comex到/etc/init.d目录-->
    cp nginx4comex /etc/init.d
    <!--检查运行状态-->
    service nginx4comex status
    <!--添加到启动,先vim打开启动文件,然后添加启动代码-->
    vim /etc/rc.local
    <!--添加的启动代码如下-->
    /etc/init.d/nginx4comex start
    
    <!--至此我们的启动也添加完成,现在重启检查效果-->
    reboot
    

    最后来说我们已经设置了nginx代理tomcat,还设置了对应的服务器程序自启动。

    注意!nginx4comex是不能被chkconfig的,具体原因我也不清楚,但是原作者的文章中确实用了chkconfig的方法加入了启动,对linux有兴趣的可以去试一试。


    如果你认可我所做的事情,并且认为我做的事对你有一定的帮助,希望你也能打赏我一杯咖啡,谢谢。

    支付宝捐赠支付宝捐赠

    相关文章

      网友评论

        本文标题:centos6.5服务器安装Nginx设置服务和开机自启

        本文链接:https://www.haomeiwen.com/subject/rdailxtx.html