openresty是章亦春(agentzh)维护的项目,早期由淘宝网赞助,后来作者加入cloudflare公司后,也就由该公司支持了。这是一个扩展nginx的项目,在nginx的基础上添加很多作者开发的模块。该项目目前有很多公司在使用。
openresty项目主页 http://openresty.org/cn/ , GITHUB 。
我们要安装一个openresty作为webserver同时把它配置成与nginx使用方式相同。
编译安装 这一部分比较简单,按照主页上的说明走就可以了。
cd tars // 进入一个源码下载目录,比如一个临时目录 wget https://openresty.org/download/ngx_openresty-1.9.3.1.tar.gz tar xzvf ngx_openresty-1.9.3.1.tar.gz cd ngx_openresty-1.9.3.1 // configure,这里可能需要再安装一些包 // perl 5.6.1+, libreadline, libpcre, libssl ./configure --prefix=/data/nginx make make install
这样一个openresty/nginx安装在目录: /data/nginx 配置文件: /data/nginx/nginx/conf/nginx.conf 可运行文件: /data/nginx/nginx/sbin/nginx
配置 起始openresty就是一台nginx服务器,它的配置文件和nginx的配置文件是一样的配置的。在这里不细说,只是openresty安装完后并不能使用service/systemctl控制nginx的开启与关闭。
centos6 可以使用nginx的service文件。 从这里下载 一个nginx的initscript(把内容拷贝出来新建文件)。把脚本保存为nginx。
#!/bin/sh . /etc/rc.d/init.d/functions . /etc/sysconfig/network [ "$NETWORKING " = "no" ] && exit 0 nginx="/usr/sbin/nginx" prog=$(basename $nginx ) NGINX_CONF_FILE="/etc/nginx/nginx.conf" [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx lockfile=/var/lock/subsys/nginx make_dirs () { user=`$nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -` if [ -z "`grep $user /etc/passwd`" ]; then useradd -M -s /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 [ ! -d "$value " ]; then mkdir -p $value && chown -R $user $value fi fi done } 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 -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
记得修改nginx运行程序目录和配置文件目录两项,可恶意吧start部分的make_dirs注释掉。。。如果不注释掉可能在service nginx start
时输出一堆无用的信息。注释掉可以正常工作。
对于centos 6的系统,把这个文件拷贝到init.d目录
sudo cp nginx /etc/init.d/nginx
###对于centos 7 centos7不能使用上面的启动脚本,需要使用systemctl使用的脚本,也就是Fedora的脚本(如下,在上面的链接也能找到),编辑后(注意删掉注释),复制到目录 /usr/lib/systemd/system/nginx.service
[Unit] Description=The nginx HTTP and reverse proxy server After=syslog.target network.target remote-fs.target nss-lookup.target [Service] Type=forking PIDFile=/data/openresty/nginx/logs/nginx.pid // 修改到自己的目录下 ExecStartPre=/data/openresty/nginx/sbin/nginx -t // 修改可执行文件目录 ExecStart=/data/openresty/nginx/sbin/nginx // 修改可执行文件的目录 ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target
一点注意 我是在Windows下写好这个启动脚本再scp到服务器上的,然后在服务器 chmod +x
;运行./nginx start
可能会报错 No such file or directory 。google之后得知这是Windows文件编码格式的问题。使用vim重新保存一下:
vim nginx # ff ~ fileformat :set ff=Unix :wq
参考: http://www.cnblogs.com/pipelone/archive/2009/04/17/1437879.html
也参考: http://matsumpter.com/blog/2014/openresty-centos-7-systemd-script/
后续 关于nginx的配置