diff --git a/plugins/openresty/conf/nginx.conf b/plugins/openresty/conf/nginx.conf
new file mode 100644
index 000000000..eb045f406
--- /dev/null
+++ b/plugins/openresty/conf/nginx.conf
@@ -0,0 +1,90 @@
+user {$OS_USER} {$OS_USER_GROUP};
+worker_processes auto;
+error_log {$SERVER_PATH}/server/openresty/nginx/logs/nginx_error.log crit;
+pid {$SERVER_PATH}/server/openresty/nginx/logs/nginx.pid;
+
+worker_rlimit_nofile 51200;
+
+events
+{
+ #use epoll;
+ worker_connections 51200;
+ multi_accept on;
+}
+
+http
+{
+ include mime.types;
+ #include luawaf.conf;
+
+ #include proxy.conf;
+
+ default_type application/octet-stream;
+
+ server_names_hash_bucket_size 512;
+ client_header_buffer_size 32k;
+ large_client_header_buffers 4 32k;
+ client_max_body_size 50m;
+
+ 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 256k;
+ fastcgi_intercept_errors on;
+
+ gzip on;
+ gzip_min_length 1k;
+ gzip_buffers 4 16k;
+ gzip_http_version 1.1;
+ gzip_comp_level 2;
+ gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml;
+ gzip_vary on;
+ gzip_proxied expired no-cache no-store private auth;
+ gzip_disable "MSIE [1-6]\.";
+
+ limit_conn_zone $binary_remote_addr zone=perip:10m;
+ limit_conn_zone $server_name zone=perserver:10m;
+
+ server_tokens off;
+ access_log off;
+
+ server
+ {
+ listen 888;
+ server_name www.bt.cn;
+ index index.html index.htm index.php;
+ root /www/server/phpmyadmin;
+
+ #error_page 404 /404.html;
+ #include enable-php.conf;
+
+ location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
+ {
+ expires 30d;
+ }
+
+ location ~ .*\.(js|css)?$
+ {
+ expires 12h;
+ }
+
+ location ~ /\.
+ {
+ deny all;
+ }
+
+ access_log /www/wwwlogs/access.log;
+ }
+ include /www/server/panel/vhost/nginx/*.conf;
+}
+
diff --git a/plugins/openresty/index.html b/plugins/openresty/index.html
index dbbb0a3f4..750256c99 100755
--- a/plugins/openresty/index.html
+++ b/plugins/openresty/index.html
@@ -2,6 +2,7 @@
diff --git a/plugins/openresty/index.py b/plugins/openresty/index.py
index ab32a5ef9..27a2411b8 100755
--- a/plugins/openresty/index.py
+++ b/plugins/openresty/index.py
@@ -9,6 +9,80 @@ sys.path.append(os.getcwd() + "/class/core")
import public
+app_debug = False
+if public.getOs() == 'darwin':
+ app_debug = True
+
+
+def getPluginName():
+ return 'openresty'
+
+
+def getPluginDir():
+ return public.getPluginDir() + '/' + getPluginName()
+
+
+def getServerDir():
+ return public.getServerDir() + '/' + getPluginName()
+
+
+def getInitDFile():
+ if app_debug:
+ return '/tmp/' + getPluginName()
+ return '/etc/init.d/' + getPluginName()
+
+
+def getConf():
+ path = getPluginDir() + "/conf/nginx.conf"
+ return path
+
+
+def getInitDTpl():
+ path = getPluginDir() + "/init.d/nginx.tpl"
+ return path
+
+
+def confReplace():
+ service_path = os.path.dirname(os.getcwd())
+ content = public.readFile(getConf())
+ content = content.replace('{$SERVER_PATH}', service_path)
+
+ # macosx do
+ if public.getOs() == 'darwin':
+ user = public.execShell(
+ "who | sed -n '2, 1p' |awk '{print $1}'")[0].strip()
+ user_group = 'staff'
+ content = content.replace('{$OS_USER}', user)
+ content = content.replace('{$OS_USER_GROUP}', user_group)
+ else:
+ content = content.replace('{$OS_USER}', 'www')
+ content = content.replace('{$OS_USER_GROUP}', 'www')
+
+ public.writeFile(getServerDir() + '/nginx/conf/nginx.conf', content)
+
+
+def initDreplace():
+
+ file_tpl = getInitDTpl()
+ service_path = os.path.dirname(os.getcwd())
+
+ initD_path = getServerDir() + '/init.d'
+ if not os.path.exists(initD_path):
+ os.mkdir(initD_path)
+ file_bin = initD_path + '/' + getPluginName()
+
+ # initd replace
+ content = public.readFile(file_tpl)
+ content = content.replace('{$SERVER_PATH}', service_path)
+ public.writeFile(file_bin, content)
+ public.execShell('chmod +x ' + file_bin)
+
+ # config replace
+ confReplace()
+
+ return file_bin
+
+
def status():
data = public.execShell(
"ps -ef|grep openresty |grep -v grep | grep -v python | awk '{print $2}'")
@@ -18,36 +92,71 @@ def status():
def start():
- path = os.path.dirname(os.getcwd())
- cmd = path + "/openresty/bin/openresty -c "
- cmd = cmd + path + "/openresty/nginx/conf/nginx.conf"
- data = public.execShell(cmd)
- if data[0] == '':
+ file = initDreplace()
+ data = public.execShell(file + ' start')
+ print data
+ if data[1] == '':
return 'ok'
return 'fail'
def stop():
- path = os.path.dirname(os.getcwd())
- cmd = path + "/openresty/bin/openresty -s stop"
- data = public.execShell(cmd)
- if data[0] == '':
+ file = initDreplace()
+ data = public.execShell(file + ' stop')
+ if data[1] == '':
+ return 'ok'
+ return 'fail'
+
+
+def restart():
+ file = initDreplace()
+ data = public.execShell(file + ' restart')
+ if data[1] == '':
return 'ok'
return 'fail'
def reload():
- path = os.path.dirname(os.getcwd())
- cmd = path + "/openresty/bin/openresty -s reload"
- data = public.execShell(cmd)
- if data[0] == '':
+ file = initDreplace()
+ data = public.execShell(file + ' reload')
+ if data[1] == '':
+ return 'ok'
+ return 'fail'
+
+
+def initdStatus():
+ if not app_debug:
+ os_name = public.getOs()
+ if os_name == 'darwin':
+ return "Apple Computer does not support"
+ initd_bin = getInitDFile()
+ if os.path.exists(initd_bin):
return 'ok'
return 'fail'
-def openrestyConf():
- path = os.path.dirname(os.getcwd())
- return path + "/openresty/nginx/conf/nginx.conf"
+def initdInstall():
+ import shutil
+ if not app_debug:
+ os_name = public.getOs()
+ if os_name == 'darwin':
+ return "Apple Computer does not support"
+
+ source_bin = initDreplace()
+ initd_bin = getInitDFile()
+ shutil.copyfile(source_bin, initd_bin)
+ public.execShell('chmod +x ' + initd_bin)
+ return 'ok'
+
+
+def initdUinstall():
+ if not app_debug:
+ os_name = public.getOs()
+ if os_name == 'darwin':
+ return "Apple Computer does not support"
+ initd_bin = getInitDFile()
+ os.remove(initd_bin)
+ return 'ok'
if __name__ == "__main__":
@@ -60,7 +169,13 @@ if __name__ == "__main__":
print stop()
elif func == 'reload':
print reload()
+ elif func == 'initd_status':
+ print initdStatus()
+ elif func == 'initd_install':
+ print initdInstall()
+ elif func == 'initd_uninstall':
+ print initdUinstall()
elif func == 'conf':
- print openrestyConf()
+ print getConf()
else:
print 'error'
diff --git a/plugins/openresty/init.d/index.html b/plugins/openresty/init.d/index.html
deleted file mode 100755
index 30d74d258..000000000
--- a/plugins/openresty/init.d/index.html
+++ /dev/null
@@ -1 +0,0 @@
-test
\ No newline at end of file
diff --git a/plugins/openresty/init.d/nginx.tpl b/plugins/openresty/init.d/nginx.tpl
new file mode 100644
index 000000000..f025e8670
--- /dev/null
+++ b/plugins/openresty/init.d/nginx.tpl
@@ -0,0 +1,118 @@
+#! /bin/sh
+# chkconfig: 2345 55 25
+# Description: Startup script for nginx webserver on Debian. Place in /etc/init.d and
+# run 'update-rc.d -f nginx defaults', or use the appropriate command on your
+# distro. For CentOS/Redhat run: 'chkconfig --add nginx'
+
+### BEGIN INIT INFO
+# Provides: nginx
+# Required-Start: $all
+# Required-Stop: $all
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: starts the nginx web server
+# Description: starts nginx using start-stop-daemon
+### END INIT INFO
+
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+NAME=nginx
+NGINX_BIN={$SERVER_PATH}/openresty/bin/openresty
+CONFIGFILE={$SERVER_PATH}/openresty/nginx/conf/$NAME.conf
+PIDFILE={$SERVER_PATH}/openresty/nginx/logs/$NAME.pid
+
+case "$1" in
+ start)
+ echo -n "Starting $NAME... "
+ if [ -f $PIDFILE ];then
+ mPID=`cat $PIDFILE`
+ isStart=`ps ax | awk '{ print $1 }' | grep -e "^${mPID}$"`
+ if [ "$isStart" != '' ];then
+ echo "$NAME (pid `pidof $NAME`) already running."
+ exit 1
+ fi
+ fi
+
+ $NGINX_BIN -c $CONFIGFILE
+
+ if [ "$?" != 0 ] ; then
+ echo " failed"
+ exit 1
+ else
+ echo " done"
+ fi
+ ;;
+
+ stop)
+ echo -n "Stoping $NAME... "
+ if [ -f $PIDFILE ];then
+ mPID=`cat $PIDFILE`
+ isStart=`ps ax | awk '{ print $1 }' | grep -e "^${mPID}$"`
+ if [ "$isStart" = '' ];then
+ echo "$NAME is not running."
+ exit 1
+ fi
+ else
+ echo "$NAME is not running."
+ exit 1
+ fi
+ $NGINX_BIN -s stop
+
+ if [ "$?" != 0 ] ; then
+ echo " failed. Use force-quit"
+ exit 1
+ else
+ echo " done"
+ fi
+ ;;
+
+ status)
+ if [ -f $PIDFILE ];then
+ mPID=`cat $PIDFILE`
+ isStart=`ps ax | awk '{ print $1 }' | grep -e "^${mPID}$"`
+ if [ "$isStart" != '' ];then
+ echo "$NAME (pid `pidof $NAME`) already running."
+ exit 1
+ else
+ echo "$NAME is stopped"
+ exit 0
+ fi
+ else
+ echo "$NAME is stopped"
+ exit 0
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+
+ reload)
+ echo -n "Reload service $NAME... "
+ if [ -f $PIDFILE ];then
+ mPID=`cat $PIDFILE`
+ isStart=`ps ax | awk '{ print $1 }' | grep -e "^${mPID}$"`
+ if [ "$isStart" != '' ];then
+ $NGINX_BIN -s reload
+ echo " done"
+ else
+ echo "$NAME is not running, can't reload."
+ exit 1
+ fi
+ else
+ echo "$NAME is not running, can't reload."
+ exit 1
+ fi
+ ;;
+
+ configtest)
+ echo -n "Test $NAME configure files... "
+ $NGINX_BIN -t
+ ;;
+
+ *)
+ echo "Usage: $0 {start|stop|restart|reload|status|configtest}"
+ exit 1
+ ;;
+esac