LAMP最新源码一键安装脚本(定期更新)

  • A+
所属分类:Shell

Linux+Apache+MySQL(可选择安装MariaDB)+PHP (脚本可以选择是否安装+Pureftpd+phpMyAdmin),添加虚拟主机请执行lamp/vhost.sh脚本。脚本中用到的软件包大多最新稳定版本,修复了一些安全性问题(安装之前会执行初始化安全脚本init.sh)。适用于CentOS/RadHat 5/6 。

Github地址:https://github.com/lj2007331/lamp

该脚本不在更新,已经整合到《Oneinstack;This project already Combined with LNMP, For more information Please visit //blog.linuxeye.com/31.html

LAMP最新源码一键安装脚本问题反馈请加QQ群: 235258658

更新日志:

  1. 2013-10-29  更新软件版本
  2. 2013-08-17  更新php-5.5.2;防止断网中断安装过程(安装前执行screen -S lamp),如果断网可通过 screen -r lamp 重新连接
  3. 2013-08-16  更新ImageMagick-6.8.6-8;一些目录的变更和一些小bug
  4. 2013-08-13  添加数据库MariaDB,脚本可以选择安装MySQL还是MariaDB(MariaDB是MySQL分支,参考://blog.linuxeye.com/352.html)
  5. 2013-08-09  初始化脚本加入 htop (参考://blog.linuxeye.com/350.html)
  6. 2013-08-08  php-5.5内嵌PDO_MYSQL(预编译时加参数--with-pdo-mysql),删除扩展包PDO_MYSQL-1.0.2.tgz (官方说明:http://pecl.php.net/package/PDO_MYSQL);更新phpMyAdmin-4.0.5
  7. 2013-08-04  加入防盗链功能(添加虚拟主机可选项)
  8. 2013-08-01  更新MySQL-5.6.13
  9. 2013-07-29  更新phpMyAdmin-4.0.4.2
  10. 2013-07-28  安装sendmail,使服务器能发邮件
  11. 2013-07-27  执行lamp安装脚本可选择性的是否安装memcache,安装后默认启动memcached 并开启11211端口
  12. 2013-07-25  更新yum时,缺少-y参数,可能导致脚本无法自动下面安装
  13. 2013-07-24  发布lamp

lamp安装后占用系统资源截图(top):

使用方法:

  1. cd /root
  2. wget http://mirrors.linuxeye.com/lamp.tar.gz
  3. tar xzf lamp.tar.gz
  4. cd lamp # 如果需要修改目录(安装、数据存储、Nginx日志),请修改options.conf文件
  5. screen -S lamp # 如果网路出现中断,可以执行命令`screen -r lamp`重新连接安装窗口
  6. ./install.sh # 请勿sh install.sh或者bash install.sh这样执行

添加虚拟主机

  1. cd ~/lamp # 必须进入lamp目录下执行  ./vhost.sh

脚本中软件版本如下:

  1. cmake-2.8.12.tar.gz
  2. mysql-5.6.14.tar.gz
  3. mariadb-5.5.33a.tar.gz
  4. libiconv-1.14.tar.gz
  5. mcrypt-2.6.8.tar.gz
  6. libmcrypt-2.5.8.tar.gz
  7. mhash-0.9.9.9.tar.gz
  8. php-5.5.5.tar.gz
  9. memcached-1.4.15.tar.gz
  10. memcache-2.2.7.tgz
  11. ImageMagick-6.8.7-3.tar.gz
  12. imagick-3.1.2.tgz
  13. pecl_http-1.7.6.tgz
  14. pcre-8.33.tar.gz
  15. apr-1.4.8.tar.gz
  16. apr-util-1.5.2.tar.gz
  17. httpd-2.4.6.tar.gz
  18. pure-ftpd-1.0.36.tar.gz
  19. phpMyAdmin-4.0.8-all-languages.tar.gz

脚本代码: 

  1. #!/bin/bash  
  2. # Author:  yeho  
  3. #          <lj2007331 AT gmail.com>.  
  4. # Blog:  //blog.linuxeye.com  
  5. #  
  6. # Version:  0.1 21-Aug-2013 lj2007331 AT gmail.com  
  7. # Notes: LAMP for CentOS/RadHat 5/6   
  8. #  
  9. # This script's project home is:  
  10. #       https://github.com/lj2007331/lamp  
  11. export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin  
  12.   
  13. echo "#######################################################################"  
  14. echo "#                    LAMP for CentOS/RadHat 5/6                       #"  
  15. echo "# For more information Please visit //blog.linuxeye.com/82.html  #"  
  16. echo "#######################################################################"  
  17.   
  18. # Check if user is root  
  19. [ $(id -u) != "0" ] && echo "Error: You must be root to run this script, Please use root to install lamp" && kill -9 $$  
  20.   
  21. # get ipv4   
  22. IP=`ifconfig | grep 'inet addr:' | cut -d: -f2 | grep -v ^10\. | grep -v ^192\.168 | grep -v ^172\. | grep -v ^127\. | awk '{print  $1}' | awk '{print;exit}'`  
  23. [ ! -n "$IP" ] && IP=`ifconfig | grep 'inet addr:' | cut -d: -f2 | grep -v ^127\. | awk '{print  $1}' | awk '{print;exit}'`  
  24.   
  25. #Definition Directory  
  26. home_dir=/home/wwwroot  
  27. wwwlogs_dir=/home/wwwlogs  
  28. mkdir -p $home_dir/default $wwwlogs_dir /root/lamp/{source,conf}  
  29.   
  30. #choice database  
  31. while :  
  32. do  
  33.         read -p "Do you want to install MySQL or MariaDB ? ( MySQL / MariaDB ) " choice_DB  
  34.         choice_db=`echo $choice_DB | tr [A-Z] [a-z]`  
  35.         if [ "$choice_db" != 'mariadb' ] && [ "$choice_db" != 'mysql' ];then  
  36.                 echo -e "\033[31minput error! Please input 'MySQL' or 'MariaDB'\033[0m"  
  37.         else  
  38.                 break  
  39.         fi  
  40. done  
  41.   
  42. #eheck dbrootpwd  
  43. while :  
  44. do  
  45.         read -p "Please input the root password of database:" dbrootpwd  
  46.         (( ${#dbrootpwd} >= 5 )) && break || echo -e "\033[31m$choice_DB root password least 5 characters! \033[0m"  
  47. done  
  48.   
  49. while :  
  50. do  
  51.         read -p "Do you want to install Memcache? (y/n)" Memcache_yn  
  52.         if [ "$Memcache_yn" != 'y' ] && [ "$Memcache_yn" != 'n' ];then  
  53.                 echo -e "\033[31minput error! Please input 'y' or 'n'\033[0m"  
  54.         else  
  55.                 break  
  56.         fi  
  57. done  
  58.   
  59. while :  
  60. do  
  61.         read -p "Do you want to install Pure-FTPd? (y/n)" FTP_yn  
  62.         if [ "$FTP_yn" != 'y' ] && [ "$FTP_yn" != 'n' ];then  
  63.                 echo -e "\033[31minput error! Please input 'y' or 'n'\033[0m"  
  64.         else  
  65.                 break  
  66.         fi  
  67. done  
  68.   
  69. if [ $FTP_yn == 'y' ];then  
  70.         while :  
  71.         do  
  72.                 read -p "Please input the manager password of Pureftpd:" ftpmanagerpwd  
  73.                 (( ${#ftpmanagerpwd} >= 5 )) && break || echo -e "\033[31mFtp manager password least 5 characters! \033[0m"  
  74.         done  
  75. fi  
  76.   
  77. while :  
  78. do  
  79.         read -p "Do you want to install phpMyAdmin? (y/n)" phpMyAdmin_yn  
  80.         if [ "$phpMyAdmin_yn" != 'y' ] && [ "$phpMyAdmin_yn" != 'n' ];then  
  81.                 echo -e "\033[31minput error! Please input 'y' or 'n'\033[0m"  
  82.         else  
  83.                 break  
  84.         fi  
  85. done  
  86.   
  87. function Download_src()  
  88. {  
  89. cd /root/lamp  
  90. [ -s init.sh ] && echo 'init.sh found' || wget -c --no-check-certificate https://raw.github.com/lj2007331/lamp/master/init.sh  
  91. [ -s vhost.sh ] && echo 'vhost.sh found' || wget -c --no-check-certificate https://raw.github.com/lj2007331/lamp/master/vhost.sh  
  92. cd conf  
  93. [ -s index.html ] && echo 'index.html found' || wget -c --no-check-certificate https://raw.github.com/lj2007331/lamp/master/conf/index.html  
  94. [ -s pure-ftpd.conf ] && echo 'pure-ftpd.conf found' || wget -c --no-check-certificate https://raw.github.com/lj2007331/lamp/master/conf/pure-ftpd.conf  
  95. [ -s pureftpd-mysql.conf ] && echo 'pureftpd-mysql.conf found' || wget -c --no-check-certificate https://raw.github.com/lj2007331/lamp/master/conf/pureftpd-mysql.conf  
  96. [ -s chinese.php ] && echo 'chinese.php found' || wget -c --no-check-certificate https://raw.github.com/lj2007331/lamp/master/conf/chinese.php   
  97. [ -s script.mysql ] && echo 'script.mysql found' || wget -c --no-check-certificate https://raw.github.com/lj2007331/lamp/master/conf/script.mysql  
  98. cd /root/lamp/source  
  99. [ -s tz.zip ] && echo 'tz.zip found' || wget -c http://www.yahei.net/tz/tz.zip  
  100. [ -s cmake-2.8.12.tar.gz ] && echo 'cmake-2.8.12.tar.gz found' || wget -c http://www.cmake.org/files/v2.8/cmake-2.8.12.tar.gz   
  101. [ -s mysql-5.6.14.tar.gz ] && echo 'mysql-5.6.14.tar.gz found' || wget -c http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.14.tar.gz   
  102. [ -s mariadb-5.5.33a.tar.gz ] && echo 'mariadb-5.5.33a.tar.gz found' || wget -c http://ftp.osuosl.org/pub/mariadb/mariadb-5.5.33a/kvm-tarbake-jaunty-x86/mariadb-5.5.33a.tar.gz   
  103. [ -s libiconv-1.14.tar.gz ] && echo 'libiconv-1.14.tar.gz found' || wget -c http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz  
  104. [ -s mcrypt-2.6.8.tar.gz ] && echo 'mcrypt-2.6.8.tar.gz found' || wget -c http://downloads.sourceforge.net/project/mcrypt/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz  
  105. [ -s libmcrypt-2.5.8.tar.gz ] && echo 'libmcrypt-2.5.8.tar.gz found' || wget -c http://downloads.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz  
  106. [ -s mhash-0.9.9.9.tar.gz ] && echo 'mhash-0.9.9.9.tar.gz found' || wget -c http://downloads.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.gz  
  107. [ -s php-5.5.5.tar.gz ] && echo 'php-5.5.5.tar.gz found' || wget -c http://kr1.php.net/distributions/php-5.5.5.tar.gz  
  108. [ -s memcached-1.4.15.tar.gz ] && echo 'memcached-1.4.15.tar.gz found' || wget -c --no-check-certificate https://memcached.googlecode.com/files/memcached-1.4.15.tar.gz  
  109. [ -s memcache-2.2.7.tgz ] && echo 'memcache-2.2.7.tgz found' || wget -c http://pecl.php.net/get/memcache-2.2.7.tgz  
  110. [ -s ImageMagick-6.8.7-3.tar.gz ] && echo 'ImageMagick-6.8.7-3.tar.gz found' || wget -c http://www.imagemagick.org/download/ImageMagick-6.8.7-3.tar.gz   
  111. [ -s imagick-3.1.2.tgz ] && echo 'imagick-3.1.2.tgz found' || wget -c http://pecl.php.net/get/imagick-3.1.2.tgz   
  112. [ -s pecl_http-1.7.6.tgz ] && echo 'pecl_http-1.7.6.tgz found' || wget -c http://pecl.php.net/get/pecl_http-1.7.6.tgz  
  113. [ -s pcre-8.33.tar.gz ] && echo 'pcre-8.33.tar.gz found' || wget -c http://ftp.cs.stanford.edu/pub/exim/pcre/pcre-8.33.tar.gz   
  114. [ -s apr-1.4.8.tar.gz ] && echo 'apr-1.4.8.tar.gz found' || wget -c http://archive.apache.org/dist/apr/apr-1.4.8.tar.gz   
  115. [ -s apr-util-1.5.2.tar.gz ] && echo 'apr-util-1.5.2.tar.gz found' || wget -c http://archive.apache.org/dist/apr/apr-util-1.5.2.tar.gz   
  116. [ -s httpd-2.4.6.tar.gz ] && echo 'httpd-2.4.6.tar.gz found' || wget -c http://www.apache.org/dist/httpd/httpd-2.4.6.tar.gz   
  117. [ -s pure-ftpd-1.0.36.tar.gz ] && echo 'pure-ftpd-1.0.36.tar.gz found' || wget -c http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.36.tar.gz   
  118. [ -s ftp_v2.1.tar.gz ] && echo 'ftp_v2.1.tar.gz found' || wget -c http://machiel.generaal.net/files/pureftpd/ftp_v2.1.tar.gz   
  119. [ -s phpMyAdmin-4.0.8-all-languages.tar.gz ] && echo 'phpMyAdmin-4.0.8-all-languages.tar.gz found' || wget -c http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/4.0.8/phpMyAdmin-4.0.8-all-languages.tar.gz   
  120.   
  121. # check source packages  
  122. for src in `cat /root/lamp/lamp_install.sh | grep found.*wget | awk '{print $3}' | grep gz`  
  123. do  
  124.         if [ ! -e "/root/lamp/source/$src" ];then  
  125.         echo -e "\033[31m$src no found! \033[0m"  
  126.                 echo -e "\033[31mUpdated version of the Package source, Please Contact the author! \033[0m"  
  127.                 kill -9 $$  
  128.         fi  
  129. done  
  130. }  
  131.   
  132. function Install_MySQL()  
  133. {  
  134. cd /root/lamp/source  
  135. useradd -M -s /sbin/nologin mysql  
  136. mkdir -p $db_data_dir;chown mysql.mysql -R $db_data_dir  
  137. tar xzf cmake-2.8.12.tar.gz  
  138. cd cmake-2.8.12  
  139. ./configure  
  140. make &&  make install  
  141. cd ..  
  142. tar zxf mysql-5.6.14.tar.gz  
  143. cd mysql-5.6.14  
  144. cmake . -DCMAKE_INSTALL_PREFIX=$db_install_dir \  
  145. -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \  
  146. -DMYSQL_DATADIR=$db_data_dir \  
  147. -DSYSCONFDIR=/etc \  
  148. -DMYSQL_USER=mysql \  
  149. -DMYSQL_TCP_PORT=3306 \  
  150. -DWITH_INNOBASE_STORAGE_ENGINE=1 \  
  151. -DWITH_PARTITION_STORAGE_ENGINE=1 \  
  152. -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \  
  153. -DWITH_MYISAM_STORAGE_ENGINE=1 \  
  154. -DWITH_READLINE=1 \  
  155. -DENABLED_LOCAL_INFILE=1 \  
  156. -DDEFAULT_CHARSET=utf8 \  
  157. -DDEFAULT_COLLATION=utf8_general_ci \  
  158. -DEXTRA_CHARSETS=all \  
  159. -DWITH_BIG_TABLES=1 \  
  160. -DWITH_DEBUG=0  
  161. make && make install  
  162.   
  163. if [ -d "$db_install_dir" ];then  
  164.         echo -e "\033[32mMySQL install successfully! \033[0m"  
  165. else  
  166.         echo -e "\033[31mMySQL install failed, Please Contact the author! \033[0m"  
  167.         kill -9 $$  
  168. fi  
  169.   
  170. /bin/cp support-files/mysql.server /etc/init.d/mysqld  
  171. chmod +x /etc/init.d/mysqld  
  172. chkconfig --add mysqld  
  173. chkconfig mysqld on  
  174. cd ..  
  175.   
  176. # my.cf  
  177. cat > /etc/my.cnf << EOF  
  178. [mysqld]  
  179. basedir = $db_install_dir  
  180. datadir = $db_data_dir  
  181. pid-file = $db_data_dir/mysql.pid  
  182. character-set-server = utf8  
  183. collation-server = utf8_general_ci  
  184. user = mysql  
  185. port = 3306  
  186. default_storage_engine = InnoDB  
  187. innodb_file_per_table = 1  
  188. server_id = 1  
  189. log_bin = mysql-bin  
  190. binlog_format = mixed  
  191. expire_logs_days = 7  
  192. bind-address = 0.0.0.0  
  193.   
  194. # name-resolve  
  195. skip-name-resolve  
  196. skip-host-cache  
  197.   
  198. #lower_case_table_names = 1  
  199. ft_min_word_len = 1  
  200. query_cache_size = 64M  
  201. query_cache_type = 1  
  202.   
  203. skip-external-locking  
  204. key_buffer_size = 16M  
  205. max_allowed_packet = 1M  
  206. table_open_cache = 64  
  207. sort_buffer_size = 512K  
  208. net_buffer_length = 8K  
  209. read_buffer_size = 256K  
  210. read_rnd_buffer_size = 512K  
  211. myisam_sort_buffer_size = 8M  
  212.   
  213. # LOG  
  214. log_error = $db_data_dir/mysql-error.log  
  215. long_query_time = 1  
  216. slow_query_log  
  217. slow_query_log_file = $db_data_dir/mysql-slow.log  
  218.   
  219. # Oher  
  220. #max_connections = 1000  
  221. open_files_limit = 65535  
  222.   
  223. [client]  
  224. port = 3306  
  225. EOF  
  226.   
  227. $db_install_dir/scripts/mysql_install_db --user=mysql --basedir=$db_install_dir --datadir=$db_data_dir  
  228.   
  229. chown mysql.mysql -R $db_data_dir  
  230. /sbin/service mysqld start  
  231. export PATH=$PATH:$db_install_dir/bin  
  232. echo "export PATH=\$PATH:$db_install_dir/bin" >> /etc/profile  
  233. source /etc/profile  
  234.   
  235. $db_install_dir/bin/mysql -e "grant all privileges on *.* to root@'127.0.0.1' identified by \"$dbrootpwd\" with grant option;"  
  236. $db_install_dir/bin/mysql -e "grant all privileges on *.* to root@'localhost' identified by \"$dbrootpwd\" with grant option;"  
  237. $db_install_dir/bin/mysql -uroot -p$dbrootpwd -e "delete from mysql.user where Password='';"  
  238. $db_install_dir/bin/mysql -uroot -p$dbrootpwd -e "delete from mysql.db where User='';"  
  239. $db_install_dir/bin/mysql -uroot -p$dbrootpwd -e "drop database test;"  
  240. $db_install_dir/bin/mysql -uroot -p$dbrootpwd -e "reset master;"  
  241. /sbin/service mysqld restart  
  242. }  
  243.   
  244. function Install_MariaDB()  
  245. {  
  246. cd /root/lamp/source  
  247. useradd -M -s /sbin/nologin mysql  
  248. mkdir -p $db_data_dir;chown mysql.mysql -R $db_data_dir  
  249. tar xzf cmake-2.8.12.tar.gz  
  250. cd cmake-2.8.12  
  251. ./configure  
  252. make &&  make install  
  253. cd ..  
  254. tar zxf mariadb-5.5.33a.tar.gz  
  255. cd mariadb-5.5.33a  
  256. cmake . -DCMAKE_INSTALL_PREFIX=$db_install_dir \  
  257. -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \  
  258. -DMYSQL_DATADIR=$db_data_dir \  
  259. -DSYSCONFDIR=/etc \  
  260. -DMYSQL_USER=mysql \  
  261. -DMYSQL_TCP_PORT=3306 \  
  262. -DWITH_ARIA_STORAGE_ENGINE=1 \  
  263. -DWITH_XTRADB_STORAGE_ENGINE=1 \  
  264. -DWITH_ARCHIVE_STORAGE_ENGINE=1 \  
  265. -DWITH_INNOBASE_STORAGE_ENGINE=1 \  
  266. -DWITH_PARTITION_STORAGE_ENGINE=1 \  
  267. -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \  
  268. -DWITH_MYISAM_STORAGE_ENGINE=1 \  
  269. -DWITH_READLINE=1 \  
  270. -DENABLED_LOCAL_INFILE=1 \  
  271. -DDEFAULT_CHARSET=utf8 \  
  272. -DDEFAULT_COLLATION=utf8_general_ci \  
  273. -DEXTRA_CHARSETS=all \  
  274. -DWITH_BIG_TABLES=1 \  
  275. -DWITH_DEBUG=0  
  276. make && make install  
  277.   
  278. if [ -d "$db_install_dir" ];then  
  279.         echo -e "\033[32mMariaDB install successfully! \033[0m"  
  280. else  
  281.         echo -e "\033[31mMariaDB install failed, Please Contact the author! \033[0m"  
  282.         kill -9 $$  
  283. fi  
  284.   
  285. /bin/cp support-files/my-small.cnf /etc/my.cnf  
  286. /bin/cp support-files/mysql.server /etc/init.d/mysqld  
  287. chmod +x /etc/init.d/mysqld  
  288. chkconfig --add mysqld  
  289. chkconfig mysqld on  
  290. cd ..  
  291.   
  292. # my.cf  
  293. cat > /etc/my.cnf << EOF  
  294. [mysqld]  
  295. basedir = $db_install_dir  
  296. datadir = $db_data_dir  
  297. pid-file = $db_data_dir/mariadb.pid  
  298. character-set-server = utf8  
  299. collation-server = utf8_general_ci  
  300. user = mysql  
  301. port = 3306  
  302. default_storage_engine = InnoDB  
  303. innodb_file_per_table = 1  
  304. server_id = 1  
  305. log_bin = mysql-bin  
  306. binlog_format = mixed  
  307. expire_logs_days = 7  
  308. bind-address = 0.0.0.0  
  309.   
  310. # name-resolve  
  311. skip-name-resolve  
  312. skip-host-cache  
  313.   
  314. #lower_case_table_names = 1  
  315. ft_min_word_len = 1  
  316. query_cache_size = 64M  
  317. query_cache_type = 1  
  318.   
  319. skip-external-locking  
  320. key_buffer_size = 16M  
  321. max_allowed_packet = 1M  
  322. table_open_cache = 64  
  323. sort_buffer_size = 512K  
  324. net_buffer_length = 8K  
  325. read_buffer_size = 256K  
  326. read_rnd_buffer_size = 512K  
  327. myisam_sort_buffer_size = 8M  
  328.   
  329. # LOG  
  330. log_error = $db_data_dir/mariadb-error.log  
  331. long_query_time = 1  
  332. slow_query_log  
  333. slow_query_log_file = $db_data_dir/mariadb-slow.log  
  334.   
  335. # Oher  
  336. #max_connections = 1000  
  337. open_files_limit = 65535  
  338.   
  339. [client]  
  340. port = 3306  
  341. EOF  
  342.   
  343. $db_install_dir/scripts/mysql_install_db --user=mysql --basedir=$db_install_dir --datadir=$db_data_dir  
  344.   
  345. chown mysql.mysql -R $db_data_dir  
  346. /sbin/service mysqld start  
  347. export PATH=$PATH:$db_install_dir/bin  
  348. echo "export PATH=\$PATH:$db_install_dir/bin" >> /etc/profile  
  349. source /etc/profile  
  350.   
  351. $db_install_dir/bin/mysql -e "grant all privileges on *.* to root@'127.0.0.1' identified by \"$dbrootpwd\" with grant option;"  
  352. $db_install_dir/bin/mysql -e "grant all privileges on *.* to root@'localhost' identified by \"$dbrootpwd\" with grant option;"  
  353. $db_install_dir/bin/mysql -uroot -p$dbrootpwd -e "delete from mysql.user where Password='';"  
  354. $db_install_dir/bin/mysql -uroot -p$dbrootpwd -e "delete from mysql.db where User='';"  
  355. $db_install_dir/bin/mysql -uroot -p$dbrootpwd -e "drop database test;"  
  356. $db_install_dir/bin/mysql -uroot -p$dbrootpwd -e "reset master;"  
  357. /sbin/service mysqld restart  
  358. }  
  359.   
  360. function Install_Apache()  
  361. {  
  362. useradd -M -s /sbin/nologin www  
  363. cd /root/lamp/source  
  364. tar xzf pcre-8.33.tar.gz  
  365. cd pcre-8.33  
  366. ./configure  
  367. make && make install  
  368. cd ../  
  369. tar xzf httpd-2.4.6.tar.gz  
  370. tar xzf apr-1.4.8.tar.gz  
  371. tar xzf apr-util-1.5.2.tar.gz  
  372. cd httpd-2.4.6  
  373. /bin/cp -R ../apr-1.4.8 ./srclib/apr  
  374. /bin/cp -R ../apr-util-1.5.2 ./srclib/apr-util  
  375. ./configure --prefix=/usr/local/apache --enable-headers --enable-deflate --enable-mime-magic --enable-so --enable-rewrite --enable-ssl --with-ssl --enable-expires --enable-static-support --enable-suexec --disable-userdir --with-included-apr --with-mpm=prefork --disable-userdir --disable-cgid --disable-cgi  
  376. make && make install  
  377. /bin/cp /usr/local/apache/bin/apachectl  /etc/init.d/httpd  
  378. sed -i '2a # chkconfig: - 85 15' /etc/init.d/httpd  
  379. sed -i '3a # description: Apache is a World Wide Web server. It is used to serve' /etc/init.d/httpd  
  380. chmod 755 /etc/init.d/httpd  
  381. chkconfig --add httpd  
  382. chkconfig httpd on  
  383. cd ..  
  384.   
  385. #logrotate apache log  
  386. cat > /etc/logrotate.d/apache << EOF  
  387. $wwwlogs_dir/*.log {  
  388. daily  
  389. rotate 5  
  390. missingok  
  391. dateext  
  392. compress  
  393. notifempty  
  394. sharedscripts  
  395. postrotate  
  396.     [ -f /usr/local/apache/logs/httpd.pid ] && kill -USR1 \`cat /usr/local/apache/logs/httpd.pid\`  
  397. endscript  
  398. }  
  399. EOF  
  400.   
  401. service httpd start  
  402. }  
  403.   
  404. function Apache_conf()  
  405. {  
  406. sed -i 's/^User daemon/User www/' /usr/local/apache/conf/httpd.conf  
  407. sed -i 's/^Group daemon/Group www/' /usr/local/apache/conf/httpd.conf  
  408. sed -i 's/^#ServerName www.example.com:80/ServerName 0.0.0.0:80/' /usr/local/apache/conf/httpd.conf  
  409. sed -i "s@AddType\(.*\)Z@AddType\1Z\n    AddType application/x-httpd-php .php .phtml\n    AddType application/x-httpd-php-source .phps@" /usr/local/apache/conf/httpd.conf  
  410. sed -i 's@^#LoadModule\(.*\)mod_deflate.so@LoadModule\1mod_deflate.so@' /usr/local/apache/conf/httpd.conf  
  411. sed -i 's@DirectoryIndex index.html@DirectoryIndex index.html index.php@' /usr/local/apache/conf/httpd.conf  
  412. sed -i "s@^DocumentRoot.*@DocumentRoot \"$home_dir/default\"@" /usr/local/apache/conf/httpd.conf  
  413. sed -i "s@^<Directory \"/usr/local/apache/htdocs\">@<Directory \"$home_dir/default\">@" /usr/local/apache/conf/httpd.conf  
  414. mkdir /usr/local/apache/conf/vhost  
  415. cat > /usr/local/apache/conf/vhost/admin.conf << EOF  
  416. <VirtualHost *:80>  
  417.     ServerAdmin admin@linuxeye.com  
  418.     DocumentRoot "$home_dir/default"  
  419.     ServerName $IP  
  420.     ErrorLog "$wwwlogs_dir/admin-error.log"  
  421.     CustomLog "$wwwlogs_dir/admin-access.log" common  
  422. <Directory "$home_dir/default">  
  423.     SetOutputFilter DEFLATE  
  424.     Options FollowSymLinks  
  425.     Require all granted  
  426.     AllowOverride All  
  427.     Order allow,deny  
  428.     Allow from all  
  429.     DirectoryIndex index.html index.php  
  430. </Directory>  
  431. </VirtualHost>  
  432. EOF  
  433. cat >> /usr/local/apache/conf/httpd.conf <<EOF  
  434. ServerTokens ProductOnly  
  435. ServerSignature Off  
  436. AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript  
  437. DeflateCompressionLevel 6  
  438. SetOutputFilter DEFLATE  
  439. Include conf/vhost/*.conf  
  440. EOF  
  441. }  
  442.   
  443. function Install_PHP()  
  444. {  
  445. cd /root/lamp/source  
  446. tar xzf libiconv-1.14.tar.gz  
  447. cd libiconv-1.14  
  448. ./configure --prefix=/usr/local  
  449. make && make install  
  450. cd ../  
  451.   
  452. tar xzf libmcrypt-2.5.8.tar.gz  
  453. cd libmcrypt-2.5.8  
  454. ./configure  
  455. make && make install  
  456. /sbin/ldconfig  
  457. cd libltdl/  
  458. ./configure --enable-ltdl-install  
  459. make && make install  
  460. cd ../../  
  461.   
  462. tar xzf mhash-0.9.9.9.tar.gz  
  463. cd mhash-0.9.9.9  
  464. ./configure  
  465. make && make install  
  466. cd ../  
  467.   
  468. tar xzf ImageMagick-6.8.7-3.tar.gz  
  469. cd ImageMagick-6.8.7-3  
  470. ./configure  
  471. make && make install  
  472. cd ../  
  473.   
  474. # linked library  
  475. cat >> /etc/ld.so.conf.d/local.conf <<EOF  
  476. /usr/local/lib  
  477. EOF  
  478. cat >> /etc/ld.so.conf.d/mysql.conf <<EOF  
  479. $db_install_dir/lib  
  480. EOF  
  481. /sbin/ldconfig  
  482. ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config  
  483. ln -s $db_install_dir/include/* /usr/local/include/  
  484. ln -s /usr/local/include/ImageMagick-6 /usr/local/include/ImageMagick  
  485. if [ `getconf WORD_BIT` = '32' ] && [ `getconf LONG_BIT` = '64' ] ; then  
  486.         ln -s /lib64/libpcre.so.0.0.1 /lib64/libpcre.so.1  
  487.         cp -frp /usr/lib64/libldap* /usr/lib  
  488. else  
  489.         ln -s /lib/libpcre.so.0.0.1 /lib/libpcre.so.1  
  490. fi  
  491.   
  492. tar xzf mcrypt-2.6.8.tar.gz  
  493. cd mcrypt-2.6.8  
  494. /sbin/ldconfig  
  495. ./configure  
  496. make && make install  
  497. cd ../  
  498.   
  499. tar xzf php-5.5.5.tar.gz  
  500. cd php-5.5.5  
  501. ./configure  --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs \  
  502. --with-config-file-path=/usr/local/php/etc --enable-opcache --with-mysql=$db_install_dir \  
  503. --with-mysqli=$db_install_dir/bin/mysql_config --with-pdo-mysql --disable-fileinfo \  
  504. --with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib \  
  505. --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-exif \  
  506. --enable-sysvsem --enable-inline-optimization --with-curl --with-kerberos --enable-mbregex \  
  507. --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-xsl --with-openssl \  
  508. --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc \  
  509. --enable-ftp --with-gettext --enable-zip --enable-soap --disable-ipv6 --disable-debug  
  510. make ZEND_EXTRA_LIBS='-liconv'  
  511. make install  
  512.   
  513. if [ -d "/usr/local/php" ];then  
  514.         echo -e "\033[32mPHP install successfully! \033[0m"  
  515. else  
  516.         echo -e "\033[31mPHP install failed, Please Contact the author! \033[0m"  
  517.         kill -9 $$  
  518. fi  
  519. #wget -c http://pear.php.net/go-pear.phar  
  520. #/usr/local/php/bin/php go-pear.phar  
  521.   
  522. /bin/cp php.ini-production /usr/local/php/etc/php.ini  
  523. cd ..  
  524.   
  525. tar xzf imagick-3.1.2.tgz  
  526. cd imagick-3.1.2  
  527. export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig  
  528. /usr/local/php/bin/phpize  
  529. ./configure --with-php-config=/usr/local/php/bin/php-config  
  530. make && make install  
  531. cd ../  
  532.   
  533. # Support HTTP request curls  
  534. tar xzf pecl_http-1.7.6.tgz  
  535. cd pecl_http-1.7.6   
  536. /usr/local/php/bin/phpize  
  537. ./configure --with-php-config=/usr/local/php/bin/php-config  
  538. make && make install  
  539. cd ../  
  540.   
  541. # Modify php.ini  
  542. sed -i "s@extension_dir = \"ext\"@extension_dir = \"ext\"\nextension_dir = \"/usr/local/php/lib/php/extensions/`ls /usr/local/php/lib/php/extensions/`\"\nextension = \"imagick.so\"\nextension = \"http.so\"@" /usr/local/php/etc/php.ini  
  543. sed -i 's@^output_buffering =@output_buffering = On\noutput_buffering =@' /usr/local/php/etc/php.ini  
  544. sed -i 's@^;cgi.fix_pathinfo.*@cgi.fix_pathinfo=0@' /usr/local/php/etc/php.ini  
  545. sed -i 's@^short_open_tag = Off@short_open_tag = On@' /usr/local/php/etc/php.ini  
  546. sed -i 's@^expose_php = On@expose_php = Off@' /usr/local/php/etc/php.ini  
  547. sed -i 's@^request_order.*@request_order = "CGP"@' /usr/local/php/etc/php.ini  
  548. sed -i 's@^;date.timezone.*@date.timezone = Asia/Shanghai@' /usr/local/php/etc/php.ini  
  549. sed -i 's@^post_max_size.*@post_max_size = 50M@' /usr/local/php/etc/php.ini  
  550. sed -i 's@^upload_max_filesize.*@upload_max_filesize = 50M@' /usr/local/php/etc/php.ini  
  551. sed -i 's@^;upload_tmp_dir.*@upload_tmp_dir = /tmp@' /usr/local/php/etc/php.ini  
  552. sed -i 's@^max_execution_time.*@max_execution_time = 300@' /usr/local/php/etc/php.ini  
  553. sed -i 's@^disable_functions.*@disable_functions = passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket@' /usr/local/php/etc/php.ini  
  554. sed -i 's@^session.cookie_httponly.*@session.cookie_httponly = 1@' /usr/local/php/etc/php.ini  
  555. sed -i 's@^pdo_mysql.default_socket.*@pdo_mysql.default_socket = /tmp/mysql.sock@' /usr/local/php/etc/php.ini  
  556. sed -i 's@#sendmail_path.*@#sendmail_path = /usr/sbin/sendmail -t@' /usr/local/php/etc/php.ini  
  557.   
  558. sed -i 's@^\[opcache\]@[opcache]\nzend_extension=opcache.so@' /usr/local/php/etc/php.ini  
  559. sed -i 's@^;opcache.enable=.*@opcache.enable=1@' /usr/local/php/etc/php.ini  
  560. sed -i 's@^;opcache.memory_consumption.*@opcache.memory_consumption=128@' /usr/local/php/etc/php.ini  
  561. sed -i 's@^;opcache.interned_strings_buffer.*@opcache.interned_strings_buffer=8@' /usr/local/php/etc/php.ini  
  562. sed -i 's@^;opcache.max_accelerated_files.*@opcache.max_accelerated_files=4000@' /usr/local/php/etc/php.ini  
  563. sed -i 's@^;opcache.revalidate_freq.*@opcache.revalidate_freq=60@' /usr/local/php/etc/php.ini  
  564. sed -i 's@^;opcache.fast_shutdown.*@opcache.fast_shutdown=1@' /usr/local/php/etc/php.ini  
  565. sed -i 's@^;opcache.enable_cli.*@opcache.enable_cli=1@' /usr/local/php/etc/php.ini  
  566. }  
  567.   
  568. function Install_Memcache()  
  569. {  
  570. cd /root/lamp/source  
  571. tar xzf memcache-2.2.7.tgz  
  572. cd memcache-2.2.7  
  573. /usr/local/php/bin/phpize  
  574. ./configure --with-php-config=/usr/local/php/bin/php-config  
  575. make && make install  
  576. sed -i 's@^extension_dir\(.*\)@extension_dir\1\nextension = "memcache.so"@' /usr/local/php/etc/php.ini  
  577. cd ../  
  578.   
  579. tar xzf memcached-1.4.15.tar.gz  
  580. cd memcached-1.4.15  
  581. ./configure --prefix=/usr/local/memcached  
  582. make && make install  
  583.   
  584. ln -s /usr/local/memcached/bin/memcached /usr/bin/memcached  
  585. /bin/cp scripts/memcached.sysv /etc/init.d/memcached  
  586. sed -i 's@^USER=.*@USER=root@' /etc/init.d/memcached  
  587. sed -i 's@chown@#chown@' /etc/init.d/memcached  
  588. sed -i 's@/var/run/memcached/memcached.pid@/var/run/memcached.pid@' /etc/init.d/memcached  
  589. sed -i 's@^prog=.*@prog="/usr/local/memcached/bin/memcached"@' /etc/init.d/memcached  
  590. chmod +x /etc/init.d/memcached  
  591. chkconfig --add memcached  
  592. chkconfig memcached on  
  593. service memcached start  
  594. cd ..  
  595. }  
  596.   
  597. function Install_Pureftp()  
  598. {  
  599. cd /root/lamp/source  
  600. tar xzf pure-ftpd-1.0.36.tar.gz  
  601. cd pure-ftpd-1.0.36  
  602. ./configure --prefix=/usr/local/pureftpd CFLAGS=-O2 --with-mysql=$db_install_dir --with-quotas --with-cookie --with-virtualhosts --with-virtualchroot --with-diraliases --with-sysquotas --with-ratios --with-altlog --with-paranoidmsg --with-shadow --with-welcomemsg  --with-throttling --with-uploadscript --with-language=english   
  603. make && make install  
  604. cp configuration-file/pure-config.pl /usr/local/pureftpd/sbin  
  605. chmod +x /usr/local/pureftpd/sbin/pure-config.pl  
  606. cp contrib/redhat.init /etc/init.d/pureftpd  
  607. sed -i 's@fullpath=.*@fullpath=/usr/local/pureftpd/sbin/$prog@' /etc/init.d/pureftpd  
  608. sed -i 's@pureftpwho=.*@pureftpwho=/usr/local/pureftpd/sbin/pure-ftpwho@' /etc/init.d/pureftpd  
  609. sed -i 's@/etc/pure-ftpd.conf@/usr/local/pureftpd/pure-ftpd.conf@' /etc/init.d/pureftpd  
  610. chmod +x /etc/init.d/pureftpd  
  611. chkconfig --add pureftpd  
  612. chkconfig pureftpd on  
  613.   
  614. cd /root/lamp/conf  
  615. /bin/cp pure-ftpd.conf /usr/local/pureftpd/  
  616. /bin/cp pureftpd-mysql.conf /usr/local/pureftpd/  
  617. mysqlftppwd=`cat /dev/urandom | head -1 | md5sum | head -c 8`  
  618. sed -i 's/tmppasswd/'$mysqlftppwd'/g' /usr/local/pureftpd/pureftpd-mysql.conf  
  619. sed -i 's/mysqlftppwd/'$mysqlftppwd'/g' script.mysql  
  620. sed -i 's/ftpmanagerpwd/'$ftpmanagerpwd'/g' script.mysql  
  621. $db_install_dir/bin/mysql -uroot -p$dbrootpwd < script.mysql  
  622. service pureftpd start  
  623.   
  624. tar xzf /root/lamp/source/ftp_v2.1.tar.gz  
  625. sed -i 's/tmppasswd/'$mysqlftppwd'/' ftp/config.php  
  626. sed -i "s/myipaddress.com/`echo $IP`/" ftp/config.php  
  627. sed -i 's@\$DEFUserID.*;@\$DEFUserID = "501";@' ftp/config.php  
  628. sed -i 's@\$DEFGroupID.*;@\$DEFGroupID = "501";@' ftp/config.php  
  629. sed -i 's@iso-8859-1@UTF-8@' ftp/language/english.php  
  630. /bin/cp /root/lamp/conf/chinese.php ftp/language/  
  631. sed -i 's@\$LANG.*;@\$LANG = "chinese";@' ftp/config.php  
  632. rm -rf  ftp/install.php  
  633. mv ftp $home_dir/default  
  634. }  
  635.   
  636. function Install_phpMyAdmin()  
  637. {   
  638. cd $home_dir/default  
  639. tar xzf /root/lamp/source/phpMyAdmin-4.0.8-all-languages.tar.gz  
  640. mv phpMyAdmin-4.0.8-all-languages phpMyAdmin  
  641. }  
  642.   
  643. function TEST()  
  644. {  
  645. echo '<?php  
  646. phpinfo()  
  647. ?>> $home_dir/default/phpinfo.php  
  648. cp /root/lamp/conf/index.html $home_dir/default  
  649. unzip -q /root/lamp/source/tz.zip -d $home_dir/default  
  650. chown -R www.www $home_dir/default  
  651. service httpd restart  
  652. }  
  653.   
  654. function Iptables()  
  655. {  
  656. cat > /etc/sysconfig/iptables << EOF  
  657. # Firewall configuration written by system-config-securitylevel  
  658. # Manual customization of this file is not recommended.  
  659. *filter  
  660. :INPUT DROP [0:0]  
  661. :FORWARD ACCEPT [0:0]  
  662. :OUTPUT ACCEPT [0:0]  
  663. :syn-flood - [0:0]  
  664. -A INPUT -i lo -j ACCEPT  
  665. -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT  
  666. -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT  
  667. -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT  
  668. -A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT  
  669. -A INPUT -p tcp -m state --state NEW -m tcp --dport 20000:30000 -j ACCEPT  
  670. -A INPUT -p icmp -m limit --limit 100/sec --limit-burst 100 -j ACCEPT  
  671. -A INPUT -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT  
  672. -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j syn-flood  
  673. -A INPUT -j REJECT --reject-with icmp-host-prohibited  
  674. -A syn-flood -p tcp -m limit --limit 3/sec --limit-burst 6 -j RETURN  
  675. -A syn-flood -j REJECT --reject-with icmp-port-unreachable  
  676. COMMIT  
  677. EOF  
  678. service iptables restart  
  679. }  
  680.   
  681. Download_src 2>&1 | tee -a /root/lamp/lamp_install.log   
  682. chmod +x /root/lamp/{init,vhost}.sh  
  683. sed -i "s@/home/wwwroot@$home_dir@g" /root/lamp/vhost.sh  
  684. sed -i "s@/home/wwwlogs@$wwwlogs_dir@g" /root/lamp/vhost.sh  
  685. /root/lamp/init.sh 2>&1 | tee -a /root/lamp/lamp_install.log   
  686. if [ $choice_db == 'mysql' ];then  
  687.         db_install_dir=/usr/local/mysql  
  688.     db_data_dir=/data/mysql  
  689.         Install_MySQL 2>&1 | tee -a /root/lamp/lamp_install.log  
  690. fi  
  691. if [ $choice_db == 'mariadb' ];then  
  692.         db_install_dir=/usr/local/mariadb  
  693.     db_data_dir=/data/mariadb  
  694.         Install_MariaDB 2>&1 | tee -a /root/lamp/lamp_install.log  
  695. fi  
  696. Install_Apache 2>&1 | tee -a /root/lamp/lamp_install.log   
  697. Install_PHP 2>&1 | tee -a /root/lamp/lamp_install.log   
  698.   
  699. if [ $Memcache_yn == 'y' ];then  
  700.     Install_Memcache 2>&1 | tee -a /root/lamp/lamp_install.log   
  701. fi  
  702.   
  703. if [ $FTP_yn == 'y' ];then  
  704.     Install_Pureftp 2>&1 | tee -a /root/lamp/lamp_install.log   
  705.     Iptables 2>&1 | tee -a /root/lamp/lamp_install.log   
  706. fi  
  707.   
  708. if [ $phpMyAdmin_yn == 'y' ];then  
  709.     Install_phpMyAdmin 2>&1 | tee -a /root/lamp/lamp_install.log  
  710. fi  
  711. Apache_conf 2>&1 | tee -a /root/lamp/lamp_install.log  
  712. TEST 2>&1 | tee -a /root/lamp/lamp_install.log   
  713.   
  714. echo "################Congratulations####################"  
  715. echo -e "\033[32mPlease restart the server and see if the services start up fine.\033[0m"  
  716. echo ''  
  717. echo "The path of some dirs:"  
  718. echo -e "`printf "%-32s" "Apache dir:"`\033[32m/usr/local/apache\033[0m"  
  719. echo -e "`printf "%-32s" "$choice_DB dir:"`\033[32m$db_install_dir\033[0m"  
  720. echo -e "`printf "%-32s" "PHP dir:"`\033[32m/usr/local/php\033[0m"  
  721. echo -e "`printf "%-32s" "$choice_DB User:"`\033[32mroot\033[0m"  
  722. echo -e "`printf "%-32s" "$choice_DB Password:"`\033[32m${dbrootpwd}\033[0m"  
  723. echo -e "`printf "%-32s" "Manager url:"`\033[32mhttp://$IP/\033[0m"  
Tue Oct 29 17:50:58 CST 2013
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: