ngx_lua_waf.sh 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. #!/bin/bash
  2. # Author: yeho <lj2007331 AT gmail.com>
  3. # BLOG: https://blog.linuxeye.cn
  4. #
  5. # Notes: OneinStack for CentOS/RadHat 6+ Debian 6+ and Ubuntu 12+
  6. #
  7. # Project home page:
  8. # https://oneinstack.com
  9. # https://github.com/lj2007331/oneinstack
  10. Nginx_lua_waf() {
  11. pushd ${oneinstack_dir}/src > /dev/null
  12. [ ! -e "${nginx_install_dir}/sbin/nginx" ] && echo "${CWARNING}Nginx is not installed on your system! ${CEND}" && exit 1
  13. if [ -e "/usr/local/lib/libluajit-5.1.so.2.1.0" ]; then
  14. [ -e "/usr/local/lib/libluajit-5.1.so.2.0.5" ] && find /usr/local -name *luajit* | xargs rm -rf
  15. src_url=http://mirrors.linuxeye.com/oneinstack/src/LuaJIT-2.1.0-beta3.tar.gz && Download_src
  16. tar xzf LuaJIT-2.1.0-beta3.tar.gz
  17. pushd LuaJIT-2.1.0-beta3
  18. make && make install
  19. popd > /dev/null
  20. fi
  21. if [ -e "/usr/local/lib/lua/5.1/cjson.so" ]; then
  22. src_url=http://mirrors.linuxeye.com/oneinstack/src/lua-cjson-2.1.0.6.tar.gz && Download_src
  23. tar xzf lua-cjson-2.1.0.6.tar.gz
  24. pushd lua-cjson-2.1.0.6
  25. make && make install
  26. popd > /dev/null
  27. fi
  28. ${nginx_install_dir}/sbin/nginx -V &> $$
  29. nginx_configure_args_tmp=`cat $$ | grep 'configure arguments:' | awk -F: '{print $2}'`
  30. rm -rf $$
  31. nginx_configure_args=`echo ${nginx_configure_args_tmp} | sed "s@--with-openssl=../openssl-...... @--with-openssl=../openssl-${openssl_ver} @" | sed "s@--with-pcre=../pcre-.... @--with-pcre=../pcre-${pcre_ver} @"`
  32. if [ -z "`grep lua-nginx-module ${nginx_configure_args}`" ]; then
  33. src_url=http://nginx.org/download/nginx-${nginx_ver}.tar.gz && Download_src
  34. src_url=https://www.openssl.org/source/openssl-${openssl_ver}.tar.gz && Download_src
  35. src_url=http://mirrors.linuxeye.com/oneinstack/src/pcre-${pcre_ver}.tar.gz && Download_src
  36. src_url=http://mirrors.linuxeye.com/oneinstack/src/ngx_devel_kit.tar.gz && Download_src
  37. src_url=http://mirrors.linuxeye.com/oneinstack/src/lua-nginx-module.tar.gz && Download_src
  38. tar xzf nginx-${nginx_ver}.tar.gz
  39. tar xzf openssl-${openssl_ver}.tar.gz
  40. tar xzf pcre-${pcre_ver}.tar.gz
  41. tar xzf ngx_devel_kit.tar.gz
  42. tar xzf lua-nginx-module.tar.gz
  43. pushd nginx-${nginx_ver}
  44. make clean
  45. sed -i 's@CFLAGS="$CFLAGS -g"@#CFLAGS="$CFLAGS -g"@' auto/cc/gcc # close debug
  46. ./configure ${nginx_configure_args} --add-module=../lua-nginx-module --add-module=../ngx_devel_kit
  47. make -j ${THREAD}
  48. if [ -f "objs/nginx" ]; then
  49. /bin/mv ${nginx_install_dir}/sbin/nginx{,`date +%m%d`}
  50. /bin/cp objs/nginx ${nginx_install_dir}/sbin/nginx
  51. kill -USR2 `cat /var/run/nginx.pid`
  52. sleep 1
  53. kill -QUIT `cat /var/run/nginx.pid.oldbin`
  54. popd > /dev/null
  55. echo "${CSUCCESS}lua-nginx-module installed successfully! ${CEND}"
  56. rm -rf nginx-${nginx_ver}
  57. else
  58. echo "${CFAILURE}lua-nginx-module install failed! ${CEND}"
  59. fi
  60. fi
  61. popd > /dev/null
  62. }
  63. Tengine_lua_waf() {
  64. pushd ${oneinstack_dir}/src > /dev/null
  65. [ ! -e "${tengine_install_dir}/sbin/nginx" ] && echo "${CWARNING}Tengine is not installed on your system! ${CEND}" && exit 1
  66. if [ -e "/usr/local/lib/libluajit-5.1.so.2.1.0" ]; then
  67. [ -e "/usr/local/lib/libluajit-5.1.so.2.0.5" ] && find /usr/local -name *luajit* | xargs rm -rf
  68. src_url=http://mirrors.linuxeye.com/oneinstack/src/LuaJIT-2.1.0-beta3.tar.gz && Download_src
  69. tar xzf LuaJIT-2.1.0-beta3.tar.gz
  70. pushd LuaJIT-2.1.0-beta3
  71. make && make install
  72. popd > /dev/null
  73. fi
  74. if [ -e "/usr/local/lib/lua/5.1/cjson.so" ]; then
  75. src_url=http://mirrors.linuxeye.com/oneinstack/src/lua-cjson-2.1.0.6.tar.gz && Download_src
  76. tar xzf lua-cjson-2.1.0.6.tar.gz
  77. pushd lua-cjson-2.1.0.6
  78. make && make install
  79. popd > /dev/null
  80. fi
  81. ${tengine_install_dir}/sbin/nginx -V &> $$
  82. tengine_configure_args_tmp=`cat $$ | grep 'configure arguments:' | awk -F: '{print $2}'`
  83. rm -rf $$
  84. tengine_configure_args=`echo ${tengine_configure_args_tmp} | sed "s@--with-openssl=../openssl-...... @--with-openssl=../openssl-${openssl_ver} @" | sed "s@--with-pcre=../pcre-.... @--with-pcre=../pcre-${pcre_ver} @"`
  85. if [ -z "`grep lua ${tengine_configure_args}`" ]; then
  86. src_url=http://tengine.taobao.org/download/tengine-${tengine_ver}.tar.gz && Download_src
  87. src_url=https://www.openssl.org/source/openssl-${openssl_ver}.tar.gz && Download_src
  88. src_url=http://mirrors.linuxeye.com/oneinstack/src/pcre-${pcre_ver}.tar.gz && Download_src
  89. src_url=http://mirrors.linuxeye.com/oneinstack/src/ngx_devel_kit.tar.gz && Download_src
  90. tar xzf nginx-${nginx_ver}.tar.gz
  91. tar xzf openssl-${openssl_ver}.tar.gz
  92. tar xzf pcre-${pcre_ver}.tar.gz
  93. tar xzf ngx_devel_kit.tar.gz
  94. pushd tengine-${tengine_ver}
  95. make clean
  96. sed -i 's@CFLAGS="$CFLAGS -g"@#CFLAGS="$CFLAGS -g"@' auto/cc/gcc # close debug
  97. ./configure ${tengine_configure_args} --with-http_lua_module --add-module=../ngx_devel_kit
  98. make -j ${THREAD}
  99. if [ -f "objs/nginx" ]; then
  100. /bin/mv ${tengine_install_dir}/sbin/nginx{,`date +%m%d`}
  101. /bin/mv ${tengine_install_dir}/sbin/dso_tool{,`date +%m%d`}
  102. /bin/mv ${tengine_install_dir}/modules{,`date +%m%d`}
  103. /bin/cp objs/nginx ${tengine_install_dir}/sbin/nginx
  104. /bin/cp objs/dso_tool ${tengine_install_dir}/sbin/dso_tool
  105. chmod +x ${tengine_install_dir}/sbin/*
  106. make install
  107. kill -USR2 `cat /var/run/nginx.pid`
  108. sleep 1
  109. kill -QUIT `cat /var/run/nginx.pid.oldbin`
  110. popd > /dev/null
  111. echo "${CSUCCESS}lua_module installed successfully! ${CEND}"
  112. rm -rf tengine-${tengine_ver}
  113. else
  114. echo "${CFAILURE}lua_module install failed! ${CEND}"
  115. fi
  116. fi
  117. popd > /dev/null
  118. }
  119. enable_lua_waf() {
  120. pushd ${oneinstack_dir}/src > /dev/null
  121. . ../include/check_dir.sh
  122. src_url=http://mirrors.linuxeye.com/oneinstack/src/ngx_lua_waf.tar.gz && Download_src
  123. tar xzf ngx_lua_waf.tar.gz -C ${web_install_dir}/conf
  124. sed -i "s@/usr/local/nginx@${web_install_dir}@g" ${web_install_dir}/conf/waf.conf
  125. sed -i "s@/usr/local/nginx@${web_install_dir}@" ${web_install_dir}/conf/waf/config.lua
  126. sed -i "s@/data/wwwlogs@${wwwlogs_dir}@" ${web_install_dir}/conf/waf/config.lua
  127. [ -n "`grep 'include waf.conf;' ${web_install_dir}/conf/nginx.conf`" ] && sed -i "s@include vhost/*.conf;@include vhost/*.conf;\n include waf.conf;@" ${web_install_dir}/conf/nginx.conf
  128. ${web_install_dir}/sbin/nginx -t
  129. if [ $? -eq 0 ]; then
  130. service nginx reload
  131. echo "${CSUCCESS}ngx_lua_waf enabled successfully! ${CEND}"
  132. else
  133. echo "${CFAILURE}ngx_lua_waf enable failed! ${CEND}"
  134. fi
  135. popd > /dev/null
  136. }
  137. disable_lua_waf() {
  138. pushd ${oneinstack_dir}/src > /dev/null
  139. . ../include/check_dir.sh
  140. sed -i '/include waf.conf;/d' ${web_install_dir}/conf/nginx.conf
  141. ${web_install_dir}/sbin/nginx -t
  142. if [ $? -eq 0 ]; then
  143. rm -rf ${web_install_dir}/conf/{waf,waf.conf}
  144. service nginx reload
  145. echo "${CSUCCESS}ngx_lua_waf disabled successfully! ${CEND}"
  146. else
  147. echo "${CFAILURE}ngx_lua_waf disable failed! ${CEND}"
  148. fi
  149. popd > /dev/null
  150. }