亚马逊自动化安装Nginx及配置
下载编译安装都很简单,几个常见的依赖包都要先安装上去,所以为了不用反复的看configure后的结果再安装缺少的依赖包,直接用这个脚本安装即可。将这个脚本保存成任意文本格式,sh 执行即可成功在亚马逊的云主机上安装好Nginx
#!bin/bash sudo yum install update sudo yum install gcc pcre pcre-devel zlib-devel zlib openssl -y wget http://nginx.org/download/nginx-1.2.8.tar.gz tar -xzvf nginx-1.2.8.tar.gz cd nginx-1.2.8 sudo ./configure sudo make &make install
Nginx启动
sudo /usr/local/nginx/sbin/nginx
Nginx控制
sudo /usr/local/nginx/sbin/nginx -s stop 立即停止守护进程(用TEAM信号) sudo /usr/local/nginx/sbin/nginx -s quit 温和的停止守护进程(用QUIT信号) sudo /usr/local/nginx/sbin/nginx -s reopen 重新打开日志文件 sudo /usr/local/nginx/sbin/nginx -s reload 重新载入配置文件
如果更改了配置文件,而配置文件无效,你可能无法终止Nginx守护进程,这个时候可以采用这个方法终止
sudo killall nginx 终止进程,紧急情况使用
测试配置文件
sudo /usr/local/nginx/sbin/nginx -t [-c 配置文件路径]
为什么要测试配置文件呢?因为一个配置的错误,很可能会导致失去对Nginx的控制权,就像上面所说的,甚至都无法停止正在运行的服务,只能以强制的方式结束进程,这样是不好的,所以可以先使用该命令测试一下配置文件是否正确,再决定是否使用该配置文件。
设置好配置文件之后,不必重启Nginx,只要reload即可(看上面的reload命令),这一点跟Apache是一样的(许多人说更改了配置文件要重启Apache,其实不必,只要reload一下配置文件即可生效,非常迅速,而且不会导致服务中断)。
Nginx安装完成后默认不会注册为系统服务,所以需要手工添加系统服务脚本,为大家提供一个我写好的并测试通过了的Nginx的服务脚本,直接复制,并放到/etc/init.d/下更名为nginx并更改权限chmod +x /etc/init.d/nginx即可.
启动nginx
service nginx start
或者
/etc/init.d/nginx start
其他命令直接看脚本就可以,很简单。
#! /bin/sh #用来将Nginx注册为系统服务的脚本 #Author CplusHua #http://hua.219.me #chkconfig: - 85 15 set -e PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DESC="Nginx Daemon" NAME=nginx DAEMON=/usr/local/nginx/sbin/$NAME SCRIPTNAME=/etc/init.d/$NAME #守护进程不存在就退出 test -x $DAEMON ||exit 0 d_start(){ $DAEMON ||echo -n "aready running" } d_stop(){ $DAEMON -s quit || echo -n "not running" } d_reload(){ $DAEMON -s reload || echo -n "could not reload" } case "$1" in start) echo -n "Starting $DESC: $NAME" d_start echo "." ;; stop) echo -n "Stopping $DESC: $NAME" d_stop echo "." ;; reload) echo -n "Reloading $DESC: configurationg....." d_reload echo "reloaded." ;; restart) echo -n "Restarting $DESC: $NAME" d_stop sleep 3 d_start echo "." ;; *) echo "Usage: $SCRIPTNAME {start|stop|restart|reload}" >&2 exit 3 ;; esac exit 0
注意: #chkconfig: - 85 15 这一行-和85之间必须要有空格,否则可能无法使用chkconfig来配置开机启动
【快速切换Nginx作为网站前端代理服务器】
Nginx比起Apache的高性能高并发特性已经被广泛的应用于生产环境中,如果网站原来使用的是Apache,那如何快速的将Nginx作为前端代理服务器来提供服务呢?
使用一个非常简单的配置文件配置即可。这里摒弃复杂的切换,和生产环境中要考虑的其他诸多因素,单纯简单讲解实现方法。
找到Nginx配置文件,一般位于/usr/local/nginx/conf中,名字为nginx.conf,为了测试,先不改动Apache的任何配置,将Nginx服务在81端口。
找到server配置,修改为以下配置,其中的website.com是网站的域名
server { listen 81; server_name website.com; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://website.com; #root html; #index index.html index.htm; }
为了安全,我们可以先测试一下配置文件是否有语法错误
执行下面的命令测试语法是否正确
sudo /usr/local/nginx/sbin/nginx -t
如果正确将会显示类似下面的内容
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
为什么一定要测试配置文件是否正确呢?
1.Nginx配置文件的每一行后面都有一个分号,许多初次使用者会忘记添加分号,此时可能会出现一些莫名其妙的错误,比如提示缺少括号 }
2.Nginx运行时配置文件错误的载入可能会导致进程不受控制,即使使用stop命令都无法停止进程,所以一定要先测试配置文件是否正确
(ps:如果真的不受控制了,那只好强制杀死进程了,可以使用这条命令杀死进程 sudo killall nginx )
配置文件测试正确之后,reload配置文件即可使配置生效
sudo /etc/init.d/nginx reload
配置文件已经成功载入
打开浏览器,输入上面配置的网站的域名(原来网站的域名)+端口号81,例如配置文件中给出的website.com,可以使用http://website.com:81来访问,这样之后就将Nginx设置为前端代理服务器了。
如果是Chrome浏览器,可以打开控制台,找到Network,查看加载的第一个文件的Response Header是否已经是Nginx
这里是我的截图,可以看到Server行已经变成Nginx