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

    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 //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分支,参考://linuxeye.com/352.html)
    5. 2013-08-09  初始化脚本加入 htop (参考://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):

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

    使用方法:

    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:  //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 //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
    • 本文由 发表于 2012-02-15
    • 转载请务必保留本文链接:https://linuxeye.com/82.html
    Apache mod_deflate压缩模块bug解决方法 Linux

    Apache mod_deflate压缩模块bug解决方法

    Apahce使用mod_deflate压缩模块,客户端(如浏览器)每次都会去服务器取数据(ps:Expires没有过期等情况下),即http请求头的状态码永远为200,而不会访回 304 Not Mo...
    MySQL/MariaDB/Percona数据库升级脚本 脚本

    MySQL/MariaDB/Percona数据库升级脚本

    MySQL/MariaDB/Percona数据库升级脚本截取《OneinStack》中upgrade_db.sh,一般情况下不建议升级数据库版本,该脚本专提供给各位版本控们。为防止大版本之间兼容问题,...
    匿名

    发表评论

    匿名网友