lamp环境搭建,安装过程中出现的一些错误,绝大部分应该是下载软件的网址过期了,可以再换一个,选择的软件版本尽量选择脚本中所用的版本或者比较接近的,避免在搭建过程中发生错误!
#!/bin/bash echo " it will install lamp" sleep 1 ##check last command is ok or not check_ok(){ if [ $? != 0 ];then echo "ERROR ,please check it now " exit 1 fi } #用arch命令获得系统的平台信息 ar=`arch` #关闭防火墙selinux和iptables selinux1=`getenforce` if [ $selinux1 != 0 ];then setenforce 0 fi check_ok sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config check_ok #关闭iptables防火墙 iptables-save > /etc/sysconfig/iptables_`date +%s` iptables -F service iptables save ####定义一个函数myum,如果rpm包已经提示安装过,则不再尝试yum install 为了节省 ###时间 myum(){ if ! rpm -qa |grep -q "^$1";then yum install -y $1 check_ok else echo "$1 has been installed" fi } #先前需要经安装的一些包 for p in wget gcc perl perl-devel libaio libaio-devel pcre-devel zlib-devel do myum $p done #安装epel源~ if rpm -qa epel-release >/dev/null then rpm -e epel-release fi #删除用yum安装的epel源 if ls /etc/yum.repos.d/epel-6.repo* >/dev/null 2>&1 then rm -f /etc/yum.repos.d/epel-6.repo fi #安装阿里的epel源 wget www.lishiming.net/data/p_w_upload/forum/epel-release-6-8_32.noarch.rpm rpm -ivh epel-release-6-8_32.noarch.rpm ######################### #安装mysql ar=`arch` /获取系统的版本号,以便选择合适的mysql版本 install_mysql(){ echo "choose the version of mysql" select mysql_v in 5.1 5.6 do case $mysql_v in 5.1) cd /usr/local/src [ -f mysql-5.1.72-linux-$ar-glibc23.tar.gz ]||wget http://mirrors.sohu.com/mysql/MySQL-5.1/mysql-5.1.72-linux-$ar-glibc23.tar.gz check_ok tar zxf mysql-5.1.72-linux-$ar-glibc23.tar.gz check_ok mv mysql-5.1.72-linux-$ar-glibc23 /usr/local/mysql check_ok ##创建mysql账户 if ! grep -q "^mysql" /etc/passwd ;then /创建mysql账户前,先检查系统是否存在该账户,若存在则删除再创建! useradd mysql check_ok else userdel -r mysql useradd mysql -s /sbin/nologin check_ok fi ##### yum install -y compat-libstdc++-33 cd /usr/local/mysql if [ -d /data/mysql ];then rm -rf /data/mysql mkdir /data/mysql else mkdir /data/mysql fi chown -R mysql:mysql /data/mysql ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql check_ok /bin/cp support-files/my-large.cnf /etc/my.cnf sed -i '/^\[mysqld\]$/a\datadir = /data/mysql' /etc/my.cnf check_ok /bin/cp support-files/mysql.server /etc/init.d/mysqld sed -i 's#^datadir=#datadir=/data/mysql#' /etc/init.d/mysqld check_ok chmod 755 /etc/init.d/mysqld chkconfig --add mysqld chkconfig mysqld on service mysqld start check_ok break ;; 5.6) cd /usr/local/src [ -f mysql-5.6.26-linux-glibc2.5-$ar.tar.gz ] || wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.26-linux-glibc2.5-$ar.tar.gz tar zxf mysql-5.6.26-linux-glibc2.5-$ar.tar.gz check_ok [ -d /usr/local/mysql ] && /bin/mv /usr/local/mysql /usr/local/mysql_bak mv mysql-5.6.26-linux-glibc2.5-$ar /usr/local/mysql if ! grep '^mysql:' /etc/passwd then useradd -M mysql -s /sbin/nologin fi yum install -y compat-libstdc++-33 [ -d /data/mysql ] && /bin/mv /data/mysql /data/mysql_bak mkdir -p /data/mysql chown -R mysql:mysql /data/mysql cd /usr/local/mysql ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql check_ok /bin/cp support-files/my-default.cnf /etc/my.cnf check_ok sed -i '/^\[mysqld\]$/a\datadir = /data/mysql' /etc/my.cnf /bin/cp support-files/mysql.server /etc/init.d/mysqld sed -i 's#^datadir=#datadir=/data/mysql#' /etc/init.d/mysqld chmod 755 /etc/init.d/mysqld chkconfig --add mysqld chkconfig mysqld on service mysqld start check_ok break ;; *) echo "only 1(5.1) or 2(5.6)" exit 1 ;; esac done } ######################### #安装apache install_httpd(){ echo "install apache version 2.2" check_ok cd /usr/local/src [ -f httpd-2.2.31.tar.gz ] || wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.2.31.tar.gz check_ok tar zxvf httpd-2.2.31.tar.gz check_ok cd httpd-2.2.31 ./configure \ --prefix=/usr/local/apache2 \ --with-included-apr \ --enable-so \ --enable-deflate=shared \ --enable-expires=shared \ --enable-rewrite=shared \ --with-pcre check_ok make check_ok make install check_ok /usr/local/apache2/bin/apachectl restart check_ok } ###############安装php ############# #安装php install_php(){ echo -e "Install php. \nPlease choose the version of php" select php_v in 5.4 5.6 do case $php_v in 5.4) cd /usr/local/src [ -f php-5.4.45.tar.bz2 ] || wget 'http://cn2.php.net/get/php-5.4.45.tar.bz2/from/this/mirror' -O php-5.4.45.tar.bz2 check_ok tar jxvf php-5.4.45.tar.bz2 check_ok cd php-5.4.45 for p in openssl-devel bzip2-devel \ libxml2-devel curl-devel libpng-devel \ libjpeg-devel freetype-devel libmcrypt-devel\ libtool-ltdl-devel perl-devel do myum $p done check_ok ./configure \ --prefix=/usr/local/php \ --with-apxs2=/usr/local/apache2/bin/apxs \ --with-config-file-path=/usr/local/php/etc \ --with-mysql=/usr/local/mysql \ --with-libxml-dir \ --with-gd \ --with-jpeg-dir \ --with-png-dir \ --with-freetype-dir \ --with-iconv-dir \ --with-zlib-dir \ --with-bz2 \ --with-openssl \ --with-mcrypt \ --enable-soap \ --enable-gd-native-ttf \ --enable-mbstring \ --enable-sockets \ --enable-exif \ --disable-ipv6 check_ok make && make install check_ok if [ -f /usr/local/php/etc/php.ini ];then rm -f /usr/local/php/etc/php.ini cp php.ini-production /usr/local/php/etc/php.ini else cp php.ini-production /usr/local/php/etc/php.ini fi break ;; 5.6) cd /usr/local/src [ -f php-5.6.6.tar.gz ] || wget http://mirrors.sohu.com/php/php-5.6.6.tar.gz check_ok tar zxvf php-5.6.6.tar.gz check_ok cd php-5.6.6 for p in openssl-devel bzip2-devel \ libxml2-devel curl-devel libpng-devel \ libjpeg-devel freetype-devel libmcrypt-devel\ libtool-ltdl-devel perl-devel do myum $p done check_ok ./configure \ --prefix=/usr/local/php \ --with-apxs2=/usr/local/apache2/bin/apxs \ --with-config-file-path=/usr/local/php/etc \ --with-mysql=/usr/local/mysql \ --with-libxml-dir \ --with-gd \ --with-jpeg-dir \ --with-png-dir \ --with-freetype-dir \ --with-iconv-dir \ --with-zlib-dir \ --with-bz2 \ --with-openssl \ --with-mcrypt \ --enable-soap \ --enable-gd-native-ttf \ --enable-mbstring \ --enable-sockets \ --enable-exif \ --disable-ipv6 check_ok make && make install check_ok if [ -f /usr/local/php/etc/php.ini ];then rm -f /usr/local/php/etc/php.ini cp php.ini-production /usr/local/php/etc/php.ini else cp php.ini-production /usr/local/php/etc/php.ini fi break ;; *) echo "only 1(5.4) or 2(5.6)" ;; esac done } ###############把php和apache结合在一起 join_apa_php() { sed -i '/AddType .*.gz .tgz$/a\AddType application\/x-httpd-php .php' /usr/local/apache2/conf/httpd.conf check_ok sed -i 's/#ServerName www.example.com:80/ServerName localhost:80/' /usr/local/apache2/conf/httpd.conf check_ok sed -i 's/DirectoryIndex index.html/DirectoryIndex index.php index.html index.htm/' /usr/local/apache2/conf/httpd.conf check_ok cat > /usr/local/apache2/htdocs/index.php <<EOF <?php phpinfo(); ?> EOF if /usr/local/php/bin/php -i |grep -iq 'date.timezone => no value' then sed -i '/;date.timezone =$/a\date.timezone = "Asia\/Chongqing"' /usr/local/php/etc/php.ini fi } #######################i check_service() { if [ "$1" == "phpfpm" ] then s="php-fpm" else s=$1 fi n=`ps aux |grep "$s"|wc -l` if [ $n -gt 1 ] then echo "$1 service is already started." else if [ -f /etc/init.d/$1 ] then /etc/init.d/$1 start check_ok else install_$1 fi fi } #check_service(){ #if [ "$l" == phpfpm ];then #s="php-fpm" #else #s=$l #fi #n=`ps aux |grep "$s" |wc -l` #if [ $n -gt 1 ];then #echo "$l service is already started" #else #if [ -f /etc/init.d/$l ];then #/etc/init.d/$l start #check_ok #else #install_$l #fi #fi #} ##function of install lamp lamp() { check_service mysql check_service httpd install_php join_apa_php echo "LAMP done,Please use 'http://your ip/index.php' to access." } lamp