Guest User

Untitled

a guest
Oct 8th, 2018
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 28.74 KB | None | 0 0
  1. #!/bin/bash
  2. #################################################
  3. # phpmyadmin installer for Centmin Mod centminmod.com
  4. # written by George Liu (eva2000) vbtechsupport.com
  5. #################################################
  6. # If you have a fairly static IP address that doesn't change often
  7. # set STATICIP='y'. Otherwise leave as STATICIP='n'
  8. STATICIP='n'
  9. #################################################
  10. VER='0.1.3'
  11. DT=$(date +"%d%m%y-%H%M%S")
  12.  
  13. UPDATEDIR='/root/tools'
  14. BASEDIR='/usr/local/nginx/html'
  15. DIRNAME=$(echo "${RANDOM}_mysqladmin${RANDOM}")
  16.  
  17. SALT=$(openssl rand 8 -base64)
  18. USERPREFIX='admin'
  19. USER=$(echo "${USERPREFIX}${SALT}" | sed -e 's|\/||g' -e 's|\+||g')
  20. PASS=$(openssl rand 20 -base64)
  21. PASS=$(echo "$PASS" | sed -e 's|\/||g' -e 's|\+||g')
  22. BLOWFISH=$(openssl rand 30 -base64)
  23. # BLOWFISH=$(pwgen -syn1 46)
  24. CURRENTIP=$(echo $SSH_CLIENT | awk '{print $1}')
  25. USERNAME='phpmyadmin'
  26.  
  27. SSLHNAME=$(uname -n)
  28.  
  29. VERSIONMINOR='04' # last 2 digits in Centmin Mod version i.e. 1.2.3-eva2000.04
  30. VERSIONALLOW="1.2.3-eva2000.${VERSIONMINOR}"
  31.  
  32. #################################################
  33. # set locale temporarily to english
  34. # due to some non-english locale issues
  35. export LC_ALL=en_US.UTF-8
  36. export LANG=en_US.UTF-8
  37. export LANGUAGE=en_US.UTF-8
  38. export LC_CTYPE=en_US.UTF-8
  39.  
  40. shopt -s expand_aliases
  41. for g in "" e f; do
  42. alias ${g}grep="LC_ALL=C ${g}grep" # speed-up grep, egrep, fgrep
  43. done
  44.  
  45. # Memory calculations for dynamic memory limit determination
  46. TOTALMEM=$(cat /proc/meminfo | grep MemTotal | awk '{print $2}')
  47. TOTALMEMMB=`echo "scale=0;$TOTALMEM/1024" | bc`
  48.  
  49. CHECKFREEMEM=$(cat /proc/meminfo | grep MemFree)
  50. if [[ "$CHECKFREEMEM" ]]; then
  51. FREEMEM=$(cat /proc/meminfo | grep MemFree | awk '{print $2}')
  52. FREEMEMMB=`echo "scale=0;$FREEMEM/1024" | bc`
  53. else
  54. FREEMEMMB='0'
  55. fi
  56.  
  57. CHECKBUFFER=$(cat /proc/meminfo | grep Buffers)
  58. if [[ "$CHECKBUFFER" ]]; then
  59. BUFFERSMEM=$(cat /proc/meminfo | grep Buffers | awk '{print $2}')
  60. BUFFERSMB=`echo "scale=0;$BUFFERSMEM/1024" | bc`
  61. else
  62. BUFFERSMB='0'
  63. fi
  64.  
  65. CHECKCACHED=$(cat /proc/meminfo | grep ^Cached)
  66. if [[ "$CHECKCACHED" ]]; then
  67. CACHEDMEM=$(cat /proc/meminfo | grep ^Cached | awk '{print $2}')
  68. CACHEDMB=`echo "scale=0;$CACHEDMEM/1024" | bc`
  69. else
  70. CACHEDMB='0'
  71. fi
  72.  
  73. REALFREEMB=$(echo $FREEMEMMB+$BUFFERSMB+$CACHEDMB | bc)
  74. REALUSEDMEM=$(echo $TOTALMEMMB-$REALFREEMB | bc)
  75.  
  76. # set php-fpm memory_limit to 4/9 th of available free memory
  77. MEMLIMIT=$(echo $REALFREEMB / 2.25 | bc)
  78.  
  79. # echo "Total Mem: $TOTALMEMMB MB"
  80. # echo "Real Free Mem: $REALFREEMB MB"
  81. # echo "Mem Limit: $MEMLIMIT MB"
  82. #################################################
  83. CENTMINLOGDIR='/root/centminlogs'
  84. FPMPOOLDIR='/usr/local/nginx/conf/phpfpmd'
  85.  
  86. if [[ "$(nginx -V 2>&1 | grep -Eo 'with-http_v2_module')" = 'with-http_v2_module' ]]; then
  87. HTTPTWO=y
  88. LISTENOPT='ssl http2'
  89. COMP_HEADER='#spdy_headers_comp 5'
  90. else
  91. HTTPTWO=n
  92. LISTENOPT='ssl spdy'
  93. COMP_HEADER='spdy_headers_comp 5'
  94. fi
  95.  
  96. if [ ! -d "$CENTMINLOGDIR" ]; then
  97. mkdir -p $CENTMINLOGDIR
  98. fi
  99.  
  100. if [ ! -d "$FPMPOOLDIR" ]; then
  101. mkdir -p $FPMPOOLDIR
  102. fi
  103.  
  104. if [ ! -f /usr/bin/pwgen ]; then
  105. yum -y -q install pwgen
  106. fi
  107.  
  108. # Setup Colours
  109. black='\E[30;40m'
  110. red='\E[31;40m'
  111. green='\E[32;40m'
  112. yellow='\E[33;40m'
  113. blue='\E[34;40m'
  114. magenta='\E[35;40m'
  115. cyan='\E[36;40m'
  116. white='\E[37;40m'
  117.  
  118. boldblack='\E[1;30;40m'
  119. boldred='\E[1;31;40m'
  120. boldgreen='\E[1;32;40m'
  121. boldyellow='\E[1;33;40m'
  122. boldblue='\E[1;34;40m'
  123. boldmagenta='\E[1;35;40m'
  124. boldcyan='\E[1;36;40m'
  125. boldwhite='\E[1;37;40m'
  126.  
  127. Reset="tput sgr0" # Reset text attributes to normal
  128. #+ without clearing screen.
  129.  
  130. cecho () # Coloured-echo.
  131. # Argument $1 = message
  132. # Argument $2 = color
  133. {
  134. message=$1
  135. color=$2
  136. echo -e "$color$message" ; $Reset
  137. return
  138. }
  139. #################################################
  140. # VERCHECK=$(cat /etc/centminmod-release)
  141. # MINORVER=$(cat /etc/centminmod-release | awk -F "." '{print $3}')
  142. # COMPARE=`expr $MINORVER \< $VERSIONMINOR`
  143.  
  144. # if [[ "$VERCHECK" != "$VERSIONALLOW" && "$COMPARE" = '1' ]]; then
  145. # cecho "------------------------------------------------------------------------------" $boldgreen
  146. # cecho " $0 script requires centmin.sh from Centmin Mod" $boldyellow
  147. # cecho " version: $VERSIONALLOW + recompile PHP (menu option #5)" $boldyellow
  148. # echo ""
  149. # cecho " The following steps are required:" $boldyellow
  150. # echo ""
  151. # cecho " 1. Download and extract centmin-${VERSIONALLOW}.zip" $boldgreen
  152. # cecho " As per instructions at http://centminmod.com/download.html" $boldgreen
  153. # cecho " 2. Run the updated centmin.sh script version" $boldgreen
  154. # echo ""
  155. # cecho " ./centmin.sh" $boldwhite
  156. # echo ""
  157. # cecho " 3. Run menu option #5 to recompile PHP entering either the" $boldgreen
  158. # cecho " same PHP version or newer PHP 5.3.x or 5.4.x version" $boldgreen
  159. # cecho " 4. Download latest version phpmyadmin.sh Addon script from" $boldgreen
  160. # cecho " http://centminmod.com/centminmodparts/addons/phpmyadmin.sh" $boldgreen
  161. # cecho " Give script appropriate permissions via command:" $boldgreen
  162. # echo ""
  163. # cecho " chmod 0700 /full/path/to/where/you/downloaded/phpmyadmin.sh" $boldwhite
  164. # echo ""
  165. # cecho " 5. Add port 9418 to CSF Firewall /etc/csf/csf.conf append 9418 to existing" $boldgreen
  166. # cecho " TCP_IN / TCP_OUT list of ports. Then restart CSF Firewall via command:" $boldgreen
  167. # echo ""
  168. # cecho " csf -r" $boldwhite
  169. # echo ""
  170. # cecho " 6. Run phpmyadmin.sh script via commands:" $boldgreen
  171. # echo ""
  172. # cecho " cd /full/path/to/where/you/downloaded/" $boldwhite
  173. # cecho " ./phpmyadmin.sh install" $boldwhite
  174. # #echo ""
  175. # #cecho " Aborting script..." $boldyellow
  176. # cecho "------------------------------------------------------------------------------" $boldgreen
  177. # exit
  178. # fi
  179.  
  180. #################################################
  181. checkphpmyadmin() {
  182. if [[ "$(grep -rw server_name /usr/local/nginx/conf/conf.d/ | grep -w "$SSLHNAME" | wc -l)" -gt '1' ]]; then
  183. cecho "---------------------------------------------------------------" $boldyellow
  184. cecho "Warning: detected possible duplicate server_name entry" $boldgreen
  185. cecho "main hostname vhost server_name value has to be unique" $boldgreen
  186. cecho "and separate from any other nginx vhost site you addded" $boldgreen
  187. cecho "Check your server_name in /usr/local/nginx/conf/conf.d/virtual.conf" $boldgreen
  188. cecho "read Step 1 of Getting Started Guide for main hostname" $boldgreen
  189. cecho "proper setup https://centminmod.com/getstarted.html" $boldgreen
  190. cecho "---------------------------------------------------------------" $boldyellow
  191. exit
  192. fi
  193. if [[ -f /usr/local/nginx/conf/phpmyadmin_check ]]; then
  194. cecho "---------------------------------------------------------------" $boldyellow
  195. cecho "detected phpmyadmin install that already exists" $boldgreen
  196. cecho "aborting..." $boldgreen
  197. cecho "---------------------------------------------------------------" $boldyellow
  198. exit
  199. fi
  200. }
  201. #################################################
  202. memlimitmsg() {
  203. echo ""
  204. cecho "Dynamically set PHP memory_limit based on available system memory..." $boldyellow
  205. echo ""
  206. cecho "Total Mem: $TOTALMEMMB MB" $boldyellow
  207. cecho "Real Free Mem: $REALFREEMB MB" $boldyellow
  208. cecho "Mem Limit: $MEMLIMIT MB" $boldyellow
  209. echo ""
  210. }
  211. #################################################
  212. usercreate() {
  213.  
  214. useradd -s /sbin/nologin -d /home/${USERNAME}/ -G nginx ${USERNAME}
  215. USERID=$(id ${USERNAME})
  216. cecho "---------------------------------------------------------------" $boldgreen
  217. cecho "Create User: $USERNAME" $boldyellow
  218. cecho "$USERID" $boldyellow
  219. cecho "---------------------------------------------------------------" $boldgreen
  220. echo ""
  221.  
  222. }
  223.  
  224. #################################################
  225. createpassword() {
  226. cecho "---------------------------------------------------------------" $boldyellow
  227. cecho "Create phpmyadmin htaccess user/pass..." $boldyellow
  228. cecho "python /usr/local/nginx/conf/htpasswd.py -c -b /usr/local/nginx/conf/htpassphpmyadmin $USER $PASS" $boldgreen
  229. cecho "---------------------------------------------------------------" $boldyellow
  230. python /usr/local/nginx/conf/htpasswd.py -c -b /usr/local/nginx/conf/htpassphpmyadmin $USER $PASS
  231. }
  232.  
  233. #################################################
  234. htpassdetails() {
  235. echo ""
  236. cecho "phpmyadmin htaccess login details:" $boldgreen
  237. cecho "Username: $USER" $boldgreen
  238. cecho "Password: $PASS" $boldgreen
  239. cecho "Allowed IP address: ${CURRENTIP}" $boldgreen
  240. echo ""
  241. cecho "---------------------------------------------------------------" $boldyellow
  242. }
  243. #################################################
  244. myadmininstall() {
  245.  
  246. if [[ ! -f /usr/bin/git ]]; then
  247. cecho "---------------------------------------------------------------" $boldyellow
  248. cecho "Installing git..." $boldgreen
  249. cecho "---------------------------------------------------------------" $boldyellow
  250. cecho "yum -q -y install git --disablerepo=CentALT" $boldgreen
  251. yum -q -y install git --disablerepo=CentALT
  252. echo ""
  253. fi
  254.  
  255. cecho "---------------------------------------------------------------" $boldyellow
  256. cecho "Installing phpmyadmin from official git repository..." $boldgreen
  257. cecho "---------------------------------------------------------------" $boldyellow
  258.  
  259. cecho "This process can take some time depending on" $boldyellow
  260. cecho "speed of the repository and your server..." $boldyellow
  261. echo ""
  262.  
  263. cd $BASEDIR
  264. git clone -b STABLE --depth=1 https://github.com/phpmyadmin/phpmyadmin.git $DIRNAME
  265. cd $DIRNAME
  266.  
  267. wget -cnv https://getcomposer.org/composer.phar -O composer.phar
  268. php composer.phar update --no-dev
  269.  
  270. cp config.sample.inc.php config.inc.php
  271. chmod o-rw config.inc.php
  272.  
  273. replace 'a8b7c6d' "${BLOWFISH}" -- config.inc.php
  274. sed -i "s|\['blowfish_secret'\] = ''|\['blowfish_secret'\] = '${BLOWFISH}'|g" config.inc.php
  275.  
  276. sed -i 's/?>//g' config.inc.php
  277. echo "\$cfg['ForceSSL'] = 'false';" >> config.inc.php
  278. echo "\$cfg['ExecTimeLimit'] = '28800';" >> config.inc.php
  279. echo "\$cfg['MemoryLimit'] = '0';" >> config.inc.php
  280. echo "\$cfg['ShowDbStructureCreation'] = 'true';" >> config.inc.php
  281. echo "\$cfg['ShowDbStructureLastUpdate'] = 'true';" >> config.inc.php
  282. echo "\$cfg['ShowDbStructureLastCheck'] = 'true';" >> config.inc.php
  283. echo "\$cfg['ShowPhpInfo'] = true;" >> config.inc.php
  284. echo "\$cfg['Export']['compression'] = 'gzip';" >> config.inc.php
  285. echo "\$cfg['LoginCookieValidity'] = 1440;" >> config.inc.php
  286. echo "?>" >> config.inc.php
  287.  
  288. chown ${USERNAME}:nginx ${BASEDIR}/${DIRNAME}
  289. chown -R ${USERNAME}:nginx ${BASEDIR}/${DIRNAME}
  290. chmod g+rx ${BASEDIR}/${DIRNAME}
  291.  
  292. if [[ ! -f "/usr/local/nginx/conf/phpmyadmin.conf" ]]; then
  293.  
  294. cecho "---------------------------------------------------------------" $boldyellow
  295. cecho "Setup /usr/local/nginx/conf/phpmyadmin.conf ..." $boldgreen
  296. cecho "---------------------------------------------------------------" $boldyellow
  297.  
  298. createpassword
  299.  
  300. #history -d $((HISTCMD-2))
  301.  
  302. echo ""
  303. echo "\cp -af /usr/local/nginx/conf/php.conf /usr/local/nginx/conf/php_${DIRNAME}.conf"
  304. \cp -af /usr/local/nginx/conf/php.conf /usr/local/nginx/conf/php_${DIRNAME}.conf
  305.  
  306. sed -i 's/fastcgi_pass 127.0.0.1:9000/#fastcgi_pass 127.0.0.1:9001/g' /usr/local/nginx/conf/php_${DIRNAME}.conf
  307. sed -i 's|fastcgi_pass phpbackend|#fastcgi_pass phpbackend|g' /usr/local/nginx/conf/php_${DIRNAME}.conf
  308.  
  309. if [[ -z "$(grep 'fastcgi_param HTTPS $server_https;' /usr/local/nginx/conf/php.conf)" ]]; then
  310. replace '#fastcgi_param HTTPS on;' 'fastcgi_param HTTPS on;' -- /usr/local/nginx/conf/php_${DIRNAME}.conf
  311. fi
  312.  
  313. sed -i 's/#fastcgi_pass unix:\/tmp\/php5-fpm.sock/fastcgi_pass unix:\/tmp\/phpfpm_myadmin.sock/g' /usr/local/nginx/conf/php_${DIRNAME}.conf
  314.  
  315. # increase php-fpm timeouts
  316.  
  317. sed -i 's/fastcgi_connect_timeout 60;/fastcgi_connect_timeout 3000;/g' /usr/local/nginx/conf/php_${DIRNAME}.conf
  318.  
  319. sed -i 's/fastcgi_send_timeout 180;/fastcgi_send_timeout 3000;/g' /usr/local/nginx/conf/php_${DIRNAME}.conf
  320.  
  321. sed -i 's/fastcgi_read_timeout 180;/fastcgi_read_timeout 3000;/g' /usr/local/nginx/conf/php_${DIRNAME}.conf
  322.  
  323. cat > "/usr/local/nginx/conf/phpmyadmin.conf" <<EOF
  324. location ^~ /${DIRNAME}/ {
  325. rewrite ^/(.*) https://${SSLHNAME}/\$1 permanent;
  326. }
  327. EOF
  328.  
  329. sed -i "s/include \/usr\/local\/nginx\/conf\/staticfiles.conf;/include \/usr\/local\/nginx\/conf\/phpmyadmin.conf;\ninclude \/usr\/local\/nginx\/conf\/staticfiles.conf;/g" /usr/local/nginx/conf/conf.d/virtual.conf
  330.  
  331. cecho "---------------------------------------------------------------" $boldyellow
  332.  
  333. cat /usr/local/nginx/conf/conf.d/virtual.conf
  334.  
  335. cecho "---------------------------------------------------------------" $boldyellow
  336.  
  337. if [[ "$STATICIP" = 'y' && ! -z "$CURRENTIP" ]]; then
  338.  
  339. cecho "STATIC IP configuration" $boldyellow
  340.  
  341.  
  342. }
  343. END
  344.  
  345. else
  346.  
  347. cecho "NON-STATIC IP configuration" $boldyellow
  348.  
  349. cat > "/usr/local/nginx/conf/phpmyadmin_https.conf" <<END
  350. location ^~ /${DIRNAME}/ {
  351. #try_files \$uri \$uri/ /${DIRNAME}/index.php?\$args;
  352. include /usr/local/nginx/conf/php_${DIRNAME}.conf;
  353.  
  354. auth_basic "Private Access";
  355. auth_basic_user_file /usr/local/nginx/conf/htpassphpmyadmin;
  356. allow 127.0.0.1;
  357. #allow ${CURRENTIP};
  358. #deny all;
  359. }
  360. END
  361.  
  362. fi # STATICIP
  363.  
  364. cecho "---------------------------------------------------------------" $boldyellow
  365. cecho "cat /usr/local/nginx/conf/phpmyadmin.conf" $boldgreen
  366. cecho "---------------------------------------------------------------" $boldyellow
  367.  
  368. cat /usr/local/nginx/conf/phpmyadmin.conf
  369.  
  370. cecho "---------------------------------------------------------------" $boldyellow
  371. cecho "cat /usr/local/nginx/conf/phpmyadmin_https.conf" $boldgreen
  372. cecho "---------------------------------------------------------------" $boldyellow
  373.  
  374. cat /usr/local/nginx/conf/phpmyadmin_https.conf
  375.  
  376. cecho "---------------------------------------------------------------" $boldyellow
  377.  
  378. # php-fpm pool setup
  379.  
  380. if [[ ! -f /usr/local/nginx/conf/phpfpmd/phpfpm_myadmin.conf ]]; then
  381. echo ""
  382. cecho "touch /usr/local/nginx/conf/phpfpmd/phpfpm_myadmin.conf" $boldgreen
  383. touch /usr/local/nginx/conf/phpfpmd/phpfpm_myadmin.conf
  384. touch /usr/local/nginx/conf/phpfpmd/empty.conf
  385. echo ""
  386.  
  387. CHECKPOOLDIR=$(grep ';include=\/usr\/local\/nginx\/conf\/phpfpmd\/\*.conf' /usr/local/etc/php-fpm.conf)
  388.  
  389. CHECKPOOLDIRB=$(grep 'include=\/usr\/local\/nginx\/conf\/phpfpmd\/\*.conf' /usr/local/etc/php-fpm.conf)
  390.  
  391. if [[ ! -z "$CHECKPOOLDIR" ]]; then
  392. sed -i 's/;include=\/usr\/local\/nginx\/conf\/phpfpmd\/\*.conf/include=\/usr\/local\/nginx\/conf\/phpfpmd\/\*.conf/g' /usr/local/etc/php-fpm.conf
  393. fi
  394.  
  395. #if [[ ! -z "$CHECKPOOLDIR" && -z "$CHECKPOOLDIRB" ]]; then
  396. #sed -i 's/;include=\/usr\/local\/nginx\/conf\/phpfpmd\/\*.conf/include=\/usr\/local\/nginx\/conf\/phpfpmd\/\*.conf/g' /usr/local/etc/php-fpm.conf
  397. #fi
  398.  
  399. if [[ -z "$CHECKPOOLDIRB" && -z "$CHECKPOOLDIR" ]]; then
  400. sed -i 's/process_control_timeout = 10s/process_control_timeout = 10s\ninclude=\/usr\/local\/nginx\/conf\/phpfpmd\/\*.conf/g' /usr/local/etc/php-fpm.conf
  401. fi
  402.  
  403. CHECKPOOL=$(grep '\[phpmyadmin\]' /usr/local/nginx/conf/phpfpmd/phpfpm_myadmin.conf)
  404.  
  405. if [[ -z "$CHECKPOOL" ]]; then
  406.  
  407. memlimitmsg
  408.  
  409. cat >> "/usr/local/nginx/conf/phpfpmd/phpfpm_myadmin.conf" <<EOF
  410. [phpmyadmin]
  411. user = ${USERNAME}
  412. group = nginx
  413.  
  414. ;listen = 127.0.0.1:9001
  415. listen = /tmp/phpfpm_myadmin.sock
  416. listen.allowed_clients = 127.0.0.1
  417. listen.owner=${USERNAME}
  418. listen.group=nginx
  419.  
  420. pm = ondemand
  421. pm.max_children = 5
  422. ; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
  423. pm.start_servers = 1
  424. pm.min_spare_servers = 1
  425. pm.max_spare_servers = 3
  426. pm.max_requests = 500
  427.  
  428. pm.process_idle_timeout = 3600s;
  429.  
  430. rlimit_files = 65536
  431. rlimit_core = 0
  432.  
  433. ; The timeout for serving a single request after which the worker process will
  434. ; be killed. This option should be used when the 'max_execution_time' ini option
  435. ; does not stop script execution for some reason. A value of '0' means 'off'.
  436. ; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
  437. ; Default Value: 0
  438. ;request_terminate_timeout = 0
  439. ;request_slowlog_timeout = 0
  440. slowlog = /var/log/php-fpm/www-slowmyadmin.log
  441.  
  442. security.limit_extensions = .php .php3 .php4 .php5
  443.  
  444. php_admin_value[open_basedir] = ${BASEDIR}/${DIRNAME}:/tmp
  445. php_flag[display_errors] = off
  446. php_admin_value[error_log] = /var/log/php_myadmin_error.log
  447. php_admin_flag[log_errors] = on
  448. php_admin_value[memory_limit] = ${MEMLIMIT}M
  449. php_admin_value[max_execution_time] = 3600
  450. php_admin_value[post_max_size] = 1280M
  451. php_admin_value[upload_max_filesize] = 1280M
  452. EOF
  453.  
  454. if [[ ! -f /var/log/php_myadmin_error.log ]]; then
  455. touch /var/log/php_myadmin_error.log
  456. chown ${USERNAME}:nginx /var/log/php_myadmin_error.log
  457. chmod 0666 /var/log/php_myadmin_error.log
  458. ls -lah /var/log/php_myadmin_error.log
  459. fi
  460.  
  461. if [[ ! -f /var/log/php-fpm/www-slowmyadmin.log ]]; then
  462. touch /var/log/php-fpm/www-slowmyadmin.log
  463. chown ${USERNAME}:nginx /var/log/php-fpm/www-slowmyadmin.log
  464. chmod 0666 /var/log/php-fpm/www-slowmyadmin.log
  465. ls -lah /var/log/php-fpm/www-slowmyadmin.log
  466. fi
  467.  
  468. fi # CHECKPOOL
  469.  
  470. fi # /usr/local/nginx/conf/phpfpmd/phpfpm_myadmin.conf
  471.  
  472. service nginx restart
  473. service php-fpm restart
  474.  
  475. fi
  476.  
  477. }
  478.  
  479. sslvhost() {
  480.  
  481. cecho "---------------------------------------------------------------" $boldyellow
  482. cecho "SSL Vhost Setup..." $boldgreen
  483. cecho "---------------------------------------------------------------" $boldyellow
  484. echo ""
  485.  
  486. mkdir -p /usr/local/nginx/conf/ssl
  487. cd /usr/local/nginx/conf/ssl
  488.  
  489. cecho "---------------------------------------------------------------" $boldyellow
  490. cecho "Generating self signed SSL certificate..." $boldgreen
  491. sleep 10
  492. cecho "Just hit enter at each of the prompts" $boldgreen
  493. cecho "---------------------------------------------------------------" $boldyellow
  494. echo ""
  495. sleep 10
  496.  
  497. openssl genrsa -out ${SSLHNAME}.key 2048
  498. openssl req -new -key ${SSLHNAME}.key -sha256 -nodes -out ${SSLHNAME}.csr -subj "/C=US/ST=California/L=Los Angeles/O=${SSLHNAME}/OU=IT/CN=${SSLHNAME}"
  499. openssl x509 -req -days 36500 -sha256 -in ${SSLHNAME}.csr -signkey ${SSLHNAME}.key -out ${SSLHNAME}.crt
  500.  
  501. if [[ "$(nginx -V 2>&1 | grep LibreSSL | head -n1)" ]]; then
  502. CHACHACIPHERS='EECDH+CHACHA20:EECDH+CHACHA20-draft:'
  503. elif [[ "$(nginx -V 2>&1 | grep OpenSSL | head -n1)" ]]; then
  504. if [[ -f "${DIR_TMP}/openssl-${OPENSSL_VERSION}/crypto/chacha20poly1305/chacha20.c" ]]; then
  505. CHACHACIPHERS='EECDH+CHACHA20:EECDH+CHACHA20-draft:'
  506. elif [[ -f "${DIR_TMP}/openssl-${OPENSSL_VERSION}/crypto/chacha/chacha_enc.c" ]]; then
  507. CHACHACIPHERS='EECDH+CHACHA20:EECDH+CHACHA20-draft:'
  508. else
  509. CHACHACIPHERS=""
  510. fi
  511. else
  512. CHACHACIPHERS=""
  513. fi
  514.  
  515. cat > "/usr/local/nginx/conf/conf.d/phpmyadmin_ssl.conf"<<SSLEOF
  516. # https SSL SPDY phpmyadmin
  517. server {
  518. listen 443 $LISTENOPT;
  519. server_name ${SSLHNAME};
  520. root html;
  521.  
  522. keepalive_timeout 3000;
  523.  
  524. client_body_buffer_size 256k;
  525. client_body_timeout 3000s;
  526. client_header_buffer_size 256k;
  527. ## how long a connection has to complete sending
  528. ## it's headers for request to be processed
  529. client_header_timeout 60s;
  530. client_max_body_size 512m;
  531. connection_pool_size 512;
  532. directio 512m;
  533. ignore_invalid_headers on;
  534. large_client_header_buffers 8 256k;
  535.  
  536. ssl_certificate /usr/local/nginx/conf/ssl/${SSLHNAME}.crt;
  537. ssl_certificate_key /usr/local/nginx/conf/ssl/${SSLHNAME}.key;
  538. ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  539. ssl_session_cache shared:SSL:10m;
  540. ssl_session_timeout 10m;
  541. # mozilla recommended
  542. ssl_ciphers ${CHACHACIPHERS}EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA256:EECDH+ECDSA+SHA384:EECDH+aRSA+SHA256:EECDH+aRSA+SHA384:EECDH+AES128:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA:!CAMELLIA;
  543. ssl_prefer_server_ciphers on;
  544. #add_header Alternate-Protocol 443:npn-spdy/3;
  545. #add_header Strict-Transport-Security "max-age=0; includeSubdomains;";
  546. add_header X-Frame-Options SAMEORIGIN;
  547. $COMP_HEADER;
  548. ssl_buffer_size 1400;
  549. ssl_session_tickets on;
  550.  
  551. # limit_conn limit_per_ip 16;
  552. # ssi on;
  553.  
  554. access_log /var/log/nginx/localhost_ssl.access.log main;
  555. error_log /var/log/nginx/localhost_ssl.error.log error;
  556.  
  557. # ngx_pagespeed & ngx_pagespeed handler
  558. #include /usr/local/nginx/conf/pagespeed.conf;
  559. #include /usr/local/nginx/conf/pagespeedhandler.conf;
  560. #include /usr/local/nginx/conf/pagespeedstatslog.conf;
  561.  
  562. location / {
  563. return 302 http://\$server_name\$request_uri;
  564. }
  565.  
  566. include /usr/local/nginx/conf/phpmyadmin_https.conf;
  567. include /usr/local/nginx/conf/staticfiles.conf;
  568. #include /usr/local/nginx/conf/php.conf;
  569. include /usr/local/nginx/conf/drop.conf;
  570. include /usr/local/nginx/conf/errorpage.conf;
  571. }
  572. SSLEOF
  573.  
  574. service nginx restart
  575. service php-fpm restart
  576.  
  577. chmod 0666 /var/log/nginx/localhost_ssl.access.log
  578. chmod 0666 /var/log/nginx/localhost_ssl.error.log
  579.  
  580. }
  581.  
  582. #################################################
  583. myadminupdater() {
  584.  
  585. if [[ ! -d "$UPDATEDIR" ]]; then
  586. mkdir -p $UPDATEDIR
  587. fi
  588.  
  589. if [[ ! -f "/root/tools/phpmyadmin_update.sh" ]]; then
  590. cecho "---------------------------------------------------------------" $boldyellow
  591. cecho "Create update script:" $boldgreen
  592. cecho "/root/tools/phpmyadmin_update.sh" $boldgreen
  593. cecho "---------------------------------------------------------------" $boldyellow
  594.  
  595. cat > "/root/tools/phpmyadmin_update.sh" <<EOF
  596. #!/bin/bash
  597. export PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin"
  598. DT=\$(date +"%d%m%y-%H%M%S")
  599. ##############################################
  600. CENTMINLOGDIR='/root/centminlogs'
  601.  
  602. if [ ! -d "$CENTMINLOGDIR" ]; then
  603. mkdir $CENTMINLOGDIR
  604. fi
  605. ##############################################
  606. starttime=\$(date +%s.%N)
  607. {
  608. echo "cd ${BASEDIR}/${DIRNAME}"
  609. cd ${BASEDIR}/${DIRNAME}
  610. rm -rf composer.lock
  611. echo "git pull"
  612. git pull
  613. rm -rf composer.phar
  614. wget -cnv https://getcomposer.org/composer.phar -O composer.phar
  615. php composer.phar update --no-dev
  616.  
  617. chown ${USERNAME}:nginx ${BASEDIR}/${DIRNAME}
  618. chown -R ${USERNAME}:nginx ${BASEDIR}/${DIRNAME}
  619.  
  620. } 2>&1 | tee \${CENTMINLOGDIR}/centminmod_phpmyadmin_update-\${DT}.log
  621.  
  622. endtime=\$(date +%s.%N)
  623.  
  624. INSTALLTIME=\$(echo "scale=2;\$endtime - \$starttime"|bc )
  625. echo "" >> \${CENTMINLOGDIR}/centminmod_phpmyadmin_update-\${DT}.log
  626. echo "Total phpmyadmin Update Time: \$INSTALLTIME seconds" >> \${CENTMINLOGDIR}/centminmod_phpmyadmin_update-\${DT}.log
  627. EOF
  628.  
  629. chmod 0700 /root/tools/phpmyadmin_update.sh
  630.  
  631. cecho "---------------------------------------------------------------" $boldyellow
  632. cecho "Create cronjob for auto updating phpmyadmin:" $boldgreen
  633. cecho "/root/tools/phpmyadmin_update.sh" $boldgreen
  634. cecho "---------------------------------------------------------------" $boldyellow
  635.  
  636.  
  637. if [[ -z "$(crontab -l 2>&1 | grep phpmyadmin_update.sh)" ]]; then
  638. crontab -l > cronjoblist
  639. mkdir -p /etc/centminmod/cronjobs
  640. cp cronjoblist /etc/centminmod/cronjobs/cronjoblist-before-phpmyadmin-setup.txt
  641. echo "19 02 * * * /root/tools/phpmyadmin_update.sh" >> cronjoblist
  642. cp cronjoblist /etc/centminmod/cronjobs/cronjoblist-after-phpmyadmin-setup.txt
  643. crontab cronjoblist
  644. rm -rf cronjoblist
  645. crontab -l
  646. fi
  647.  
  648. fi
  649.  
  650. }
  651.  
  652. #################################################
  653. myadminremove() {
  654.  
  655. if [[ ! -d "$UPDATEDIR" ]]; then
  656. mkdir -p $UPDATEDIR
  657. fi
  658.  
  659. if [[ -f "/root/tools/phpmyadmin_uninstall.sh" || ! -f "/root/tools/phpmyadmin_uninstall.sh" ]]; then
  660. cecho "---------------------------------------------------------------" $boldyellow
  661. cecho "Create uninstall script:" $boldgreen
  662. cecho "/root/tools/phpmyadmin_uninstall.sh" $boldgreen
  663. cecho "---------------------------------------------------------------" $boldyellow
  664.  
  665. cat > "/root/tools/phpmyadmin_uninstall.sh" <<EOF
  666. #!/bin/bash
  667. DT=\$(date +"%d%m%y-%H%M%S")
  668. ##############################################
  669. CENTMINLOGDIR='/root/centminlogs'
  670.  
  671. if [ ! -d "$CENTMINLOGDIR" ]; then
  672. mkdir $CENTMINLOGDIR
  673. fi
  674. ##############################################
  675. starttime=\$(date +%s.%N)
  676. {
  677. echo "
  678. rm -rf ${BASEDIR}/${DIRNAME}
  679. rm -rf /root/tools/phpmyadmin_update.sh
  680. rm -rf /usr/local/nginx/conf/conf.d/phpmyadmin_ssl.conf
  681. rm -rf /usr/local/nginx/conf/php_${DIRNAME}.conf
  682. rm -rf /usr/local/nginx/conf/phpfpmd/phpfpm_myadmin.conf
  683. rm -rf /usr/local/nginx/conf/htpassphpmyadmin
  684. rm -rf /usr/local/nginx/conf/phpmyadmin_https.conf
  685. rm -rf /usr/local/nginx/conf/phpmyadmin.conf
  686. rm -rf /usr/local/nginx/conf/phpmyadmin_check"
  687.  
  688. rm -rf ${BASEDIR}/${DIRNAME}
  689. rm -rf /root/tools/phpmyadmin_update.sh
  690. rm -rf /usr/local/nginx/conf/conf.d/phpmyadmin_ssl.conf
  691. rm -rf /usr/local/nginx/conf/php_${DIRNAME}.conf
  692. rm -rf /usr/local/nginx/conf/phpfpmd/phpfpm_myadmin.conf
  693. rm -rf /usr/local/nginx/conf/htpassphpmyadmin
  694. rm -rf /usr/local/nginx/conf/phpmyadmin_https.conf
  695. rm -rf /usr/local/nginx/conf/phpmyadmin.conf
  696. rm -rf /usr/local/nginx/conf/phpmyadmin_check
  697. sed -i '/include \/usr\/local\/nginx\/conf\/phpmyadmin.conf;'/d /usr/local/nginx/conf/conf.d/virtual.conf
  698. rm -rf /etc/centminmod/cronjobs/cronjoblist-before-phpmyadmin-setup.txt
  699. rm -rf /etc/centminmod/cronjobs/cronjoblist-after-phpmyadmin-setup.txt
  700.  
  701. service nginx restart
  702. service php-fpm restart
  703.  
  704. } 2>&1 | tee \${CENTMINLOGDIR}/centminmod_phpmyadmin_uninstall-\${DT}.log
  705.  
  706. endtime=\$(date +%s.%N)
  707.  
  708. INSTALLTIME=\$(echo "scale=2;\$endtime - \$starttime"|bc )
  709. echo "" >> \${CENTMINLOGDIR}/centminmod_phpmyadmin_uninstall-\${DT}.log
  710. echo "Total phpmyadmin Update Time: \$INSTALLTIME seconds" >> \${CENTMINLOGDIR}/centminmod_phpmyadmin_uninstall-\${DT}.log
  711. EOF
  712.  
  713. chmod 0700 /root/tools/phpmyadmin_uninstall.sh
  714.  
  715. fi
  716.  
  717. }
  718.  
  719. #################################################
  720. myadminmsg() {
  721.  
  722. echo ""
  723. cecho "---------------------------------------------------------------" $boldyellow
  724. cecho "Password protected ${DIRNAME}" $boldgreen
  725. cecho "at path ${BASEDIR}/${DIRNAME}" $boldgreen
  726. cecho "config.inc.php at: ${BASEDIR}/${DIRNAME}/config.inc.php" $boldgreen
  727. cecho " WEB url: " $boldgreen
  728. echo ""
  729. cecho " https://${SSLHNAME}/${DIRNAME}" $boldwhite
  730. echo ""
  731. cecho "Login with your MySQL root username / password" $boldgreen
  732. cecho "---------------------------------------------------------------" $boldyellow
  733. htpassdetails
  734. cecho "phpmyadmin update script at: /root/tools/phpmyadmin_update.sh" $boldgreen
  735. cecho "Add your own cron job to automatically run the update script i.e." $boldgreen
  736. echo ""
  737. cecho " 15 01 * * * /root/tools/phpmyadmin_update.sh" $boldwhite
  738. echo ""
  739. cecho "---------------------------------------------------------------" $boldyellow
  740. cecho "phpmyadmin uninstall script at: /root/tools/phpmyadmin_uninstall.sh" $boldgreen
  741. echo ""
  742. cecho " /root/tools/phpmyadmin_uninstall.sh" $boldwhite
  743. echo ""
  744. cecho "---------------------------------------------------------------" $boldyellow
  745. cecho "SSL vhost: /usr/local/nginx/conf/conf.d/phpmyadmin_ssl.conf" $boldgreen
  746. cecho "php-fpm includes: /usr/local/nginx/conf/php_${DIRNAME}.conf" $boldgreen
  747. cecho "php-fpm pool conf: /usr/local/nginx/conf/phpfpmd/phpfpm_myadmin.conf" $boldgreen
  748. cecho "dedicated php-fpm pool user: ${USERNAME}" $boldgreen
  749. cecho "dedicated php-fpm pool group: nginx" $boldgreen
  750. cecho "dedicated php error log: /var/log/php_myadmin_error.log" $boldgreen
  751. cecho "---------------------------------------------------------------" $boldyellow
  752. cecho "SSL vhost access log: /var/log/nginx/localhost_ssl.access.log" $boldgreen
  753. cecho "SSL vhost error log: /var/log/nginx/localhost_ssl.error.log" $boldgreen
  754. cecho "---------------------------------------------------------------" $boldyellow
  755. echo ""
  756.  
  757. echo "phpmyadmin_install='y'" > /usr/local/nginx/conf/phpmyadmin_check
  758.  
  759. }
  760. #################################################
  761. case "$1" in
  762. install)
  763. checkphpmyadmin
  764. starttime=$(date +%s.%N)
  765. {
  766. #backup csf.conf
  767. cp -a /etc/csf/csf.conf /etc/csf/csf.conf-backup_beforephpmyadmin_${DT}
  768.  
  769. usercreate
  770. myadmininstall
  771. sslvhost
  772. myadminupdater
  773. myadminremove
  774. myadminmsg
  775. } 2>&1 | tee ${CENTMINLOGDIR}/centminmod_phpmyadmin_install_${DT}.log
  776.  
  777. endtime=$(date +%s.%N)
  778.  
  779. INSTALLTIME=$(echo "scale=2;$endtime - $starttime"|bc )
  780. echo "" >> ${CENTMINLOGDIR}/centminmod_phpmyadmin_install_${DT}.log
  781. echo "Total phpmyadmin Install Time: $INSTALLTIME seconds" >> ${CENTMINLOGDIR}/centminmod_phpmyadmin_install_${DT}.log
  782.  
  783. cecho "---------------------------------------------------------------" $boldyellow
  784. cecho "Total phpmyadmin Install Time: $INSTALLTIME seconds" $boldgreen
  785. cecho "phpmyadmin install log located at:" $boldgreen
  786. cecho "${CENTMINLOGDIR}/centminmod_phpmyadmin_install_${DT}.log" $boldgreen
  787. cecho "---------------------------------------------------------------" $boldyellow
  788.  
  789. ;;
  790. resetpwd)
  791. cecho "---------------------------------------------------------------" $boldyellow
  792. createpassword
  793. htpassdetails
  794. ;;
  795. *)
  796. echo "$0 install"
  797. echo "$0 resetpwd"
  798. ;;
  799. esac
  800. exit
Add Comment
Please, Sign In to add comment