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

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

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

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

注意:亚马逊(AWS)服务器默认只能用 user-ec2 帐户进行登录,须要切换一下,使用 root 帐户登录。不然会由于权限不够,致使一些软件或功能没法安装。css

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

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

安装步骤:

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

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

2、首先要安装 PCRE

PCRE 做用是让 Nginx 支持 Rewrite 功能。node

注:须要按步骤一步一步操做,特别注意目录。linux

一、下载 PCRE 安装包nginx

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

须要安装 wget 下载工具:若已安装,直接跳过便可shell

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

二、解压安装包:

tar zxvf pcre-8.43.tar.gz

三、进入安装包目录

cd pcre-8.43

四、编译安装 

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

yum -y install gcc automake autoconf libtool make

而后继续操做,编译安装:

./configure make make install

五、查看 PCRE 版本

pcre-config --version

安装 Nginx

一、下载 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

二、解压安装包

tar zxvf nginx-1.16.0.tar.gz

三、进入安装包目录

cd nginx-1.16.0

四、编译安装

./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 ,别问我是怎么知道的。

五、查看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

相关文章
相关标签/搜索