使用if及变量编写LAMP管理脚本

实验环境要求:

使用母盘克隆虚拟机,并将其命名为自动部署LAMP环境,设置网络参数和主机名等。

一.安装LAMP:

说明:先下载好所有lamp需要的软件包。

clip_image002

1.安装httpd:

[root@ns web_publish_b5]# cat apache_install.sh

#!/bin/bash

#by linuxfan

rpm -e httpd httpd-manual --nodeps

ls /root/httpd*

if [ $? -eq 0 ];then ##判断是否已经下载了httpd

tar zxvf /root/httpd-2.2.17.tar.gz -C /usr/src/

cd /usr/src/httpd-2.2.17/

./configure --prefix=/usr/local/httpd --enable-rewrite --enable-so --disable-access 1>/dev/null

make &&make install

fi

[root@ns web_publish_b5]#

clip_image004

clip_image006

2.安装mysql:

[root@ns web_publish_b5]# cat mysql_install.sh

#!/bin/bash

##第一配置yum,安装ncurses依赖包

yum -y install ncurses-*

#解压cmake,安装基础环境

tar zxvf /root/cmake-2.8.6.tar.gz -C /usr/src/

cd /usr/src/cmake-2.8.6

#配置,编译安装cmake

./configure &&gmake &&gmake install

##解压mysql

tar zxvf /root/mysql-5.5.22.tar.gz -C /usr/src/

cd /usr/src/mysql-5.5.22/

#cmake进行配置mysql

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql #指定安装目录\

-DDEFAULT_CHARSET=utf8 #指定字符集为utf8 \

-DDEFAULT_COLLATION=utf8_general_ci ##指定字符校验 \

-DWITH_EXTRA_CHARSETS=all ##支持额外字符集\

-DSYSCONFDIR=/etc/ ##指定配置文件位置

make &&make install #编译安装

if [ -e /usr/local/mysql ];then

echo "mysql install successfully."

fi

[root@ns web_publish_b5]#

clip_image008

clip_image010

3.安装php:

[root@ns web_publish_b5]# cat php_install.sh

#!/bin/bash

##by linuxfan 20150611

#1.卸载已经安装rpm包

rpm -qa |grep php

if [ $? -eq 0 ];then

rpm -e php php-mysql --nodeps

fi

#2.安装mcrypt支持,安装的顺序必须libmcrypt-->mhash-->mcrypt,每安装都必须ln链接到系统库中,echo "/usr/local/lib/" >>/etc/ld.conf&&ldconfig

##########install mcrypt###########

tar zxvf /root/libmcrypt-2.5.8.tar.gz -C /usr/src/

cd /usr/src/libmcrypt-2.5.8/

./configure &&make &&make install

ln -s /usr/local/lib/libmcrypt.* /usr/lib

tar zxvf /root/mhash-0.9.9.9.tar.gz -C /usr/src/

cd /usr/src/mhash-0.9.9.9/

./configure &&make &&make install

ln -s /usr/local/lib/libmhash* /usr/lib/

tar zxvf /root/mcrypt-2.6.8.tar.gz -C /usr/src/

cd /usr/src/mcrypt-2.6.8/

./configure &&make &&make install

#3.安装php

##############install php #############

yum -y install libxml2-* zlib-*

PHV=php-5.3.28

tar zxvf /root/$PHV.tar.gz -C /usr/src/

cd /usr/src/$PHV/

./configure --prefix=/usr/local/php5 --with-mcrypt --with-apxs2=/usr/local/httpd/bin/apxs --with-mysql=/usr/local/mysql/ \

--with-config-file-path=/usr/local/php5 --enable-mbstring &&make &&make install

if [ -e /usr/local/php5 ]

then

echo "php install success."

fi

clip_image012

clip_image014

[root@ns web_publish_b5]#

二.配置LAMP:

1.配置mysql:

[root@ns web_publish_b5]# cat mysql_config.sh

#!/bin/bash

#1.复制配置文件

cp /usr/src/mysql-5.5.22/support-files/my-medium.cnf /etc/my.cnf

#2.添加系统服务

cp /usr/src/mysql-5.5.22/support-files/mysql.server /etc/init.d/mysqld

chmod +x /etc/init.d/mysqld

chkconfig --add mysqld

chkconfig mysqld on

#3.优化PATH路径,执行命令时方便,单引号双引号都行

ln -s /usr/local/mysql/bin/* /usr/local/bin/

grep mysql /etc/profile

if [ $? -eq 0 ];then

echo "PATH is set."

else

echo "export PATH=$PATH:/usr/local/mysql/bin" >>/etc/profile

source /etc/profile ##执行文件

fi

#4.初始化mysql,创建用户,赋权

useradd -M -s /sbin/nologin mysql

chown -R mysql:mysql /usr/local/mysql

/usr/local/mysql/scripts/mysql_install_db \

--basedir=/usr/local/mysql \

--datadir=/usr/local/mysql/data --user=mysql

#5.启动mysql,并设置为开机启动

if [ -e /tmp/mysql.sock ];then

/etc/init.d/mysqld restart

else

/etc/init.d/mysqld start

fi

chkconfig mysqld on

#6.修改密码,并提示密码

mysqladmin -u root password '123123' &&echo "mysql root password is 123123"

[root@ns web_publish_b5]#

clip_image016

clip_image018

2.配置HTTPD+PHP:

[root@ns web_publish_b5]# cat php_config.sh

#!/bin/bash

##by linuxfan

##############config php############

PHV=php-5.3.28

cp /usr/src/$PHV/php.ini-development /usr/local/php5/php.ini

#修改配置项支持php标记<?php ?>

sed -i 's/short_open_tag = Off/short_open_tag = On/g' /usr/local/php5/php.ini

##设置默认字符集utf8

echo "default_charset = "utf8" " >>/usr/local/php5/php.ini

###########add module zend############

ZDV=ZendGuardLoader-php-5.3-linux-glibc23-x86_64

tar zxvf /root/$ZDV.tar.gz -C /root/

cp -rf /root/$ZDV/php-5.3.x/ZendGuardLoader.so /usr/local/php5/lib/php/

cat <<END >>/usr/local/php5/php.ini

zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so

zend_enable=1

END

[root@ns web_publish_b5]#

clip_image020

clip_image022

[root@ns web_publish_b5]# cat lamp_config.sh

#!/bin/bash

##by scfa 2015-06-30

################# Setting apache with php ################

#1.修改apache的配置文件

APACHE_C=/usr/local/httpd/conf/httpd.conf

##添加ServerName设置FQDN

sed -i '/^#ServerName/a ServerName www.linuxfan.cn' $APACHE_C

##在第310行后一行添加php应用类型的支持

sed -i '310a \ AddType application/x-httpd-php .php' $APACHE_C

##修改默认首页,支持index.php

sed -i 's/DirectoryIndex index.html/DirectoryIndex index.html index.php/g' $APACHE_C

netstat -uptln |grep 80 &>/dev/null

if [ $? -eq 0 ]

then

/usr/local/httpd/bin/apachectl stop && /usr/local/httpd/bin/apachectl start

netstat -uptln |grep 80

echo "apache restart successful"

else

/usr/local/httpd/bin/apachectl start

netstat -utpln |grep 80

fi

#2.mysql的配置

if [ -e /tmp/mysql.sock ];then

echo "mysql is running."

else

/etc/init.d/mysqld start

fi

[root@ns web_publish_b5]#

clip_image024

clip_image026

三.编写web测试页生成脚本:

[root@ns web_publish_b5]# cat webpage.sh

#!/bin/bash

##by scfa 2015-06-30

################# Test Pages for php and mysql ############

DCT=/usr/local/httpd/htdocs/

cat <<END > $DCT/testa.php

<?php

phpinfo();

?>

END

cat <<END > $DCT/testm.php

<?php

\$link=mysql_connect('localhost','root','123123');

if(\$link) echo "mysql ok!";

mysql_close();

?>

END

H_IP=$(ifconfig eth0 |awk -F '[ :]+' 'NR==2 {print $4}')

echo "Usage: http://$H_IP/testa.php for test apache with php"

echo "Usage: http://$H_IP/testm.php for test apache with mysql"

[root@ns web_publish_b5]#

clip_image028

clip_image030

四.发布web站点:

1.发布phpmysql:

[root@ns web_publish_b5]# cat phpmyadmin_publish.sh

#!/bin/bash

##by scfa 2015-07-01

##############for publish phpmyadmin ###########

tar zxvf /root/phpmyadmin-3.3.10-all-languages.tar.gz -C /root 1>/dev/null

mv /root/phpMyAdmin-3.3.10-all-languages/ /usr/local/httpd/htdocs/pmyadm

cd /usr/local/httpd/htdocs/pmyadm

cp config.sample.inc.php config.inc.php

if [ -e /usr/local/httpd/htdocs/pmyadm ]

then

echo "You can access and manager your mysql DB with URL:"

echo "http://$(hostname)/pmyadm"

fi

[root@ns web_publish_b5]#

clip_image032

clip_image034

2.发布论坛系统discuz:

[root@ns web_publish_b5]# cat discuz_publish.sh

#!/bin/bash

###by scfa 2015-07-01

##publish discuz

############setting mysql env######

#1.生成sql脚本,作用是新建bbsdb数据库、并且授权给用户runbbs

cat <<END >bbsdb.sql

CREATE DATABASE bbsdb;

GRANT ALL ON bbsdb.* TO 'runbbs'@'localhost' identified by '123123';

FLUSH PRIVILEGES;

END

#2.导入数据库脚本,完成数据库创建和授权

mysql -uroot -p123123 <bbsdb.sql

#3.判断数据导入是否成功

if [ $? -eq 0 ]

then

echo "mysql is ready. DB:bbsdb,DB_USER:runbbs DB_PWD:123123"

rm -rf bbsdb.sql

else

echo "error,make sure mysqld is runing or passwd is right, try again."

fi

###################publish disuz ########

#4.加压缩discuz,并且复制到网页根目录

unzip /root/discuz_7.2_full_sc_utf8.zip -d /root/discuz 1>/dev/null

cp -rf /root/discuz/upload/ /usr/local/httpd/htdocs/bbs &&rm -rf /root/discuz

#5.修改discuz相关目录的权限,让apache进程运行的用户(grep -i user搜索httpd.conf)有权限读取写入

cd /usr/local/httpd/htdocs/bbs

chown -R daemon forumdata/ uc_client/data/cache/ attachments/ templates/ config.inc.php

#6.判断discuz是否授权成功,并且返还安装方法

if [ $? -eq 0 ]

then

echo "Discuz is ready,You can commplete with URL:"

echo "http://$(hostname)/bbs/install"

fi

[root@ns web_publish_b5]#

clip_image036

clip_image038

3.发布wordpress博客系统:

[root@ns web_publish_b5]# cat wordpress_publish.sh

#!/bin/bash

###by scfa

###########setting mysql support ############

echo "1. operating mysql......."

#1.生成sql脚本

cat <<END >wp.sql

create database wpdb;

grant all on wpdb.* to 'wpadm'@'localhost' identified by '123123';

END

#2.导入sql脚本完成数据库创建和授权

mysql -uroot -p123123 <wp.sql

if [ $? -eq 0 ];then

rm -rf wp.sql

echo "mysql create db and grant successful."

fi

###########publish wordpress###########

#3.解压wordpress,并且移动到网页的根目录

echo "2. publish wordpress, following is mysql info:"

unzip /root/wordpress-4.2.2-zh_CN.zip -d /root 1>/dev/null

mv /root/wordpress /usr/local/httpd/htdocs/

#4.生成配置文件,并且修改配置文件中访问mysql相关参数

cd /usr/local/httpd/htdocs/wordpress

cp wp-config-sample.php wp-config.php

if [ $? -eq 0 ];then

sed -i 's/database_name_here/wpdb/g' wp-config.php

sed -i 's/username_here/wpadm/g' wp-config.php

sed -i 's/password_here/123123/g' wp-config.php

grep DB_ wp-config.php

fi

######################access speed optimizing###########

##中国地区无法访问google网站,会导致加载字体很慢,解决方案是将google字体替换为360网站提供的公共库

#5.优化字体库的访问,将google替换为360的字体库

cd /usr/local/httpd/htdocs/wordpress/wp-includes

echo "3. Optimizing access speed:"

if [ -e script-loader.php ];then

echo "Befor alter:"

sed -n '650p' script-loader.php | awk -F '?' '{print $1}'

echo "###################################"

sed -i '650s/googleapis/useso/g' script-loader.php

echo "After alter:"

sed -n '650p' script-loader.php | awk -F '?' '{print $1}'

fi

#6.提示访问

echo "4. Visit wordpress website:"

if [ -e /usr/local/httpd/htdocs/wordpress/wp-config.php ]

then

echo "You can complete with URL:"

echo "http://$(hostname)/wordpress"

fi

[root@ns web_publish_b5]#

clip_image040

clip_image042

4.发布mediawiki知识库系统:

[root@ns web_publish_b5]# cat mediawiki_publish.sh

#!/bin/bash

###by scfa

###########setting mysql support ############

#1.生成sql脚本,作用创建wikidb数据库,并且授权 给用户wikiadm

cat <<END >wiki.sql

create database wikidb;

grant all on wikidb.* to 'wikiadm'@'localhost' identified by '123123';

END

#2.导入数据脚本wiki.sql,完成数据创建和授权

mysql -uroot -p123123 <wiki.sql

#3.判断是否导入成功,并返回数据相关信息,安装时使用

if [ $? -eq 0 ]

then

echo "mysql is ready,DB:wikidb DB_USER:wikiadm DB_PWD:123123"

fi

rm -rf wiki.sql

###########publish mediawiki###########

#4.解压mediawiki软件,并且移动网页根目录

tar zxvf /root/mediawiki-1.25.1.tar.gz -C /root/ 1>/dev/null

mv /root/mediawiki-1.25.1 /usr/local/httpd/htdocs/mediawiki

#5.提示安装方法

if [ $? -eq 0 ]

then

echo "You can complete with URL:"

echo "http://$(hostname)/mediawiki"

fi

[root@ns web_publish_b5]#

clip_image044

clip_image046

给前面写好的所有脚本执行权限

clip_image048

一.安装LAMP:

1.先安装httpd服务

clip_image050

clip_image052

2.安装mysql:

clip_image054

clip_image056

3.安装php:

clip_image058

clip_image060

二.配置LAMP:

1.配置mysql:

clip_image062

clip_image064

2.配置HTTPD+PHP:

clip_image066

clip_image068

clip_image070

三.测试web测试页脚本:

clip_image072

clip_image074

四.发布web站点:

1.发布phpmysql:

clip_image076

clip_image078

2.发布论坛系统discuz:

clip_image080

clip_image082

3.发布wordpress博客系统:

clip_image084

clip_image086

4.发布mediawiki知识库系统:

clip_image088

clip_image090

5.下载并发布pythonlearn站点:

[root@ns web_publish_b5]# cat book_for_pythonlearn_publish.sh

#!/bin/bash

ping -c 2 www.baidu.com &>/dev/null

if [ $? -eq 0 ];then

cd /usr/src/

##需要下载某个目录下的所有文件:

wget -c -r -np -k -L http://learnpythonthehardway.org/book/

##发布网站

mv learnpythonthehardway.org/book/ /usr/local/httpd/htdocs/book

H_IP=$(ifconfig eth0 |awk -F '[ :]+' 'NR==2 {print $4}')

echo "You can use url to lean python:"

echo "URL:http://$H_IP/book"

else

echo "Host can connect to internet! please check and try again."

fi

[root@ns web_publish_b5]#

clip_image092

clip_image094

clip_image096

clip_image098