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