hhvm_CentOS.sh 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. #!/bin/bash
  2. # Author: yeho <lj2007331 AT gmail.com>
  3. # BLOG: https://blog.linuxeye.com
  4. #
  5. # Notes: OneinStack for CentOS/RadHat 5+ Debian 6+ and Ubuntu 12+
  6. #
  7. # Project home page:
  8. # http://oneinstack.com
  9. # https://github.com/lj2007331/oneinstack
  10. Install_hhvm_CentOS()
  11. {
  12. cd $oneinstack_dir/src
  13. id -u $run_user >/dev/null 2>&1
  14. [ $? -ne 0 ] && useradd -M -s /sbin/nologin $run_user
  15. if [ "$CentOS_RHEL_version" == '7' ];then
  16. if [ -e /etc/yum.repos.d/epel.repo_bk ];then
  17. /bin/mv /etc/yum.repos.d/epel.repo{_bk,}
  18. elif [ ! -e /etc/yum.repos.d/epel.repo ];then
  19. cat > /etc/yum.repos.d/epel.repo << EOF
  20. [epel]
  21. name=Extra Packages for Enterprise Linux 7 - \$basearch
  22. #baseurl=http://download.fedoraproject.org/pub/epel/7/\$basearch
  23. mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=\$basearch
  24. failovermethod=priority
  25. enabled=1
  26. gpgcheck=0
  27. EOF
  28. fi
  29. cat > /etc/yum.repos.d/hhvm.repo << EOF
  30. [hhvm]
  31. name=Copr repo for hhvm-repo owned by no1youknowz
  32. baseurl=https://copr-be.cloud.fedoraproject.org/results/no1youknowz/hhvm-repo/epel-7-\$basearch/
  33. skip_if_unavailable=True
  34. gpgcheck=0
  35. enabled=0
  36. EOF
  37. yum --enablerepo=hhvm -y install hhvm
  38. [ ! -e "/usr/bin/hhvm" -a "/usr/local/bin/hhvm" ] && ln -s /usr/local/bin/hhvm /usr/bin/hhvm
  39. fi
  40. if [ "$CentOS_RHEL_version" == '6' ];then
  41. if [ -e /etc/yum.repos.d/epel.repo_bk ];then
  42. /bin/mv /etc/yum.repos.d/epel.repo{_bk,}
  43. elif [ ! -e /etc/yum.repos.d/epel.repo ];then
  44. cat > /etc/yum.repos.d/epel.repo << EOF
  45. [epel]
  46. name=Extra Packages for Enterprise Linux 6 - \$basearch
  47. #baseurl=http://download.fedoraproject.org/pub/epel/6/\$basearch
  48. mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=\$basearch
  49. failovermethod=priority
  50. enabled=1
  51. gpgcheck=0
  52. EOF
  53. fi
  54. for Package in libmcrypt-devel glog-devel jemalloc-devel tbb-devel libdwarf-devel mysql-devel libxml2-devel libicu-devel pcre-devel gd-devel boost-devel sqlite-devel pam-devel bzip2-devel oniguruma-devel openldap-devel readline-devel libc-client-devel libcap-devel libevent-devel libcurl-devel libmemcached-devel lcms2 inotify-tools
  55. do
  56. yum -y install $Package
  57. done
  58. [ "$IPADDR_STATE"x == "CN"x ] && REMI_ADDR=http://mirrors.swu.edu.cn || REMI_ADDR=http://mirrors.mediatemple.net
  59. cat > /etc/yum.repos.d/remi.repo << EOF
  60. [remi]
  61. name=Les RPM de remi pour Enterprise Linux 6 - \$basearch
  62. baseurl=$REMI_ADDR/remi/enterprise/6/remi/\$basearch/
  63. #mirrorlist=http://rpms.famillecollet.com/enterprise/6/remi/mirror
  64. enabled=0
  65. gpgcheck=0
  66. EOF
  67. yum -y remove libwebp
  68. src_url=http://mirrors.linuxeye.com/oneinstack/src/libwebp-0.3.1-2.el6.remi.x86_64.rpm && Download_src
  69. src_url=http://mirrors.linuxeye.com/oneinstack/src/hhvm-3.5.0-4.el6.x86_64.rpm && Download_src
  70. rpm -ivh libwebp-0.3.1-2.el6.remi.x86_64.rpm
  71. yum --enablerepo=remi --disablerepo=epel -y install mysql mysql-devel mysql-libs
  72. yum -y remove boost-system boost-filesystem
  73. cat > /etc/yum.repos.d/gleez.repo << EOF
  74. [gleez]
  75. name=Gleez repo
  76. baseurl=http://yum.gleez.com/6/\$basearch/
  77. enabled=0
  78. gpgcheck=0
  79. EOF
  80. ping yum.gleez.com -c 4 >/dev/null 2>&1
  81. yum --enablerepo=gleez --disablerepo=epel -y install -R 2 ./hhvm-3.5.0-4.el6.x86_64.rpm
  82. fi
  83. userdel -r nginx;userdel -r saslauth
  84. rm -rf /var/log/hhvm
  85. mkdir /var/log/hhvm
  86. chown -R ${run_user}.${run_user} /var/log/hhvm
  87. cat > /etc/hhvm/config.hdf << EOF
  88. ResourceLimit {
  89. CoreFileSize = 0 # in bytes
  90. MaxSocket = 10000 # must be not 0, otherwise HHVM will not start
  91. SocketDefaultTimeout = 5 # in seconds
  92. MaxRSS = 0
  93. MaxRSSPollingCycle = 0 # in seconds, how often to check max memory
  94. DropCacheCycle = 0 # in seconds, how often to drop disk cache
  95. }
  96. Log {
  97. Level = Info
  98. AlwaysLogUnhandledExceptions = true
  99. RuntimeErrorReportingLevel = 8191
  100. UseLogFile = true
  101. UseSyslog = false
  102. File = /var/log/hhvm/error.log
  103. Access {
  104. * {
  105. File = /var/log/hhvm/access.log
  106. Format = %h %l %u % t \"%r\" %>s %b
  107. }
  108. }
  109. }
  110. MySQL {
  111. ReadOnly = false
  112. ConnectTimeout = 1000 # in ms
  113. ReadTimeout = 1000 # in ms
  114. SlowQueryThreshold = 1000 # in ms, log slow queries as errors
  115. KillOnTimeout = false
  116. }
  117. Mail {
  118. SendmailPath = /usr/sbin/sendmail -t -i
  119. ForceExtraParameters =
  120. }
  121. EOF
  122. cat > /etc/hhvm/server.ini << EOF
  123. ; php options
  124. pid = /var/log/hhvm/pid
  125. ; hhvm specific
  126. ;hhvm.server.port = 9001
  127. hhvm.server.file_socket = /var/log/hhvm/sock
  128. hhvm.server.type = fastcgi
  129. hhvm.server.default_document = index.php
  130. hhvm.log.use_log_file = true
  131. hhvm.log.file = /var/log/hhvm/error.log
  132. hhvm.repo.central.path = /var/log/hhvm/hhvm.hhbc
  133. EOF
  134. cat > /etc/hhvm/php.ini << EOF
  135. hhvm.mysql.socket = /tmp/mysql.sock
  136. expose_php = 0
  137. memory_limit = 400000000
  138. post_max_size = 50000000
  139. EOF
  140. if [ -e "/usr/bin/hhvm" -a ! -e "$php_install_dir" ];then
  141. sed -i 's@/dev/shm/php-cgi.sock@/var/log/hhvm/sock@' $web_install_dir/conf/nginx.conf
  142. [ -z "`grep 'fastcgi_param SCRIPT_FILENAME' $web_install_dir/conf/nginx.conf`" ] && sed -i "s@fastcgi_index index.php;@&\n\t\tfastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;@" $web_install_dir/conf/nginx.conf
  143. sed -i 's@include fastcgi.conf;@include fastcgi_params;@' $web_install_dir/conf/nginx.conf
  144. service nginx reload
  145. fi
  146. rm -rf /etc/ld.so.conf.d/*_64.conf
  147. ldconfig
  148. # Supervisor
  149. yum -y install python-setuptools
  150. ping pypi.python.org -c 4 >/dev/null 2>&1
  151. easy_install supervisor
  152. echo_supervisord_conf > /etc/supervisord.conf
  153. sed -i 's@pidfile=/tmp/supervisord.pid@pidfile=/var/run/supervisord.pid@' /etc/supervisord.conf
  154. [ -z "`grep 'program:hhvm' /etc/supervisord.conf`" ] && cat >> /etc/supervisord.conf << EOF
  155. [program:hhvm]
  156. command=/usr/bin/hhvm --mode server --user $run_user --config /etc/hhvm/server.ini --config /etc/hhvm/php.ini --config /etc/hhvm/config.hdf
  157. numprocs=1 ; number of processes copies to start (def 1)
  158. directory=/tmp ; directory to cwd to before exec (def no cwd)
  159. autostart=true ; start at supervisord start (default: true)
  160. autorestart=unexpected ; whether/when to restart (default: unexpected)
  161. stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
  162. EOF
  163. src_url=https://github.com/Supervisor/initscripts/raw/master/redhat-init-mingalevme && Download_src
  164. /bin/mv redhat-init-mingalevme /etc/init.d/supervisord
  165. chmod +x /etc/init.d/supervisord
  166. chkconfig supervisord on
  167. service supervisord start
  168. cd ..
  169. }