web集羣綜合項目keepalived+lvs+lamp+nfs+mysql

web集羣綜合項目

實驗描述:

  在此項目中,爲了使公司內部的web站點提供更穩定的服務,搭建負載均衡羣集以及故障轉移羣集,具體拓撲環境如下;

                       wKiom1gfDbODtpbrAAGg8mpGlSU238.jpg-wh_50    

實驗環境:

主機

Ip地址

軟件

主調度器

192.168.100.150

kernel-devel openssl-devel popt-devel  ipvsadm keepalived-1.2.13.tar.gz

從調度器

192.168.100.151

kernel-devel openssl-devel popt-devel  ipvsadm keepalived-1.2.13.tar.gz

Web站點1

192.168.100.152

Lamp平臺

Web站點2

192.168.100.153

Lamp平臺

Web站點3

192.168.100.154

Lamp平臺

Nfs服務器1

192.168.100.155

nfs-utils rpcbind kernel-devel  openssl-devel popt-devel  ipvsadm keepalived-1.2.13.tar.gz

Nfs服務器2

192.168.100.156

nfs-utils rpcbind kernel-devel  openssl-devel popt-devel  ipvsadm keepalived-1.2.13.tar.gz

amoeba代理服務器

192.168.100.157

amoeba-mysql-binary-2.2.0.tar.gz jdk-6u14-linux-x64.bin

數據庫master節點

192.168.100.158

Lamp平臺

數據庫slave1節點

192.168.100.159

Lamp平臺

數據庫slave2節點

192.168.100.160

Lamp平臺

實驗思路:

  此項目中,前端搭建了lvs網站負載羣集,通過lvs來完成網站的節點健康檢查和負載,爲了保證lvs調度器的穩定,搭建keepalived完成調度器的雙機熱備,web站點的存儲連接着後端的nfs服務器,使用aotufs網絡掛載的方式,在nfs共享存儲服務器中同樣也搭建了keepalived雙機熱備,同時也保證了nfs存儲的穩定,另一端是web站點連接的mysql數據庫,數據庫採用主從複製、讀寫分離的方案,另外通過代理服務器amoeba提供到web站點進行服務,這裏的web服務器部署了lamp平臺,動靜頁面及於一身的server

實驗步驟:

部署後端數據庫

搭建時間服務器:

主節點上安裝ntp時間服務:192.168.100.158

yum -y install ntp

sed -i '/^server/s/^/#/g' /etc/ntp.conf

cat <<END >>/etc/ntp.conf

server 127.127.1.0

fudge 127.127.1.0 stratum 8

END

/etc/init.d/ntpd restart

chkconfig ntpd on

netstat -utpln |grep ntp

從節點同步時間:192.168.100.159-160

yum -y install ntpdate

/usr/sbin/ntpdate 192.168.100.158

 

安裝mysql192.168.100.158-160

wget ftp://ftp.linuxfan.cn/tools/lamp_install_publis-app-2015-07-16.tar.xz

tar Jxvflamp_install_publis-app-2015-07-16.tar.xz

cd bin/

./ mysql_install.sh

./mysql_config.sh

 

配置MySQL主從複製:

1)主服務器配置:192.168.100.158

sed -i's/^log-bin=.*/log-bin=master-bin\nlog-slave-updates=ture/g' /etc/my.cnf  ##更改配置文件中的某個部分

sed -i '/^server-id/s/1/11/g'/etc/my.cnf    ##更改server id 11 ,此爲服務器的id號,在數據庫中是唯一的。

/etc/init.d/mysqld restart    ##重新啓動mysql服務

 

yum -y install mysql

mysql -uroot -p123123     ##進入數據庫

mysql> grant replication slave on *.* to'myslave'@'192.168.100.%' identified by '123123';     ##進入數據庫後進行授權訪問

mysql> flush privileges;   ##刷新授權的權限

mysql> show master status;  ##記住File的及Position的值,此處爲master-bin.000001337  ,需要在從服務器上用到

mysql> create database db_test;  ##創建文件測試數據庫

mysql> quit

 

配置從服務器1192.168.100.159

sed -i '/^server-id/s/1/22/g'/etc/my.cnf    ##更改server  id22

sed -i'/^server-id/arelay-log=relay-log-bin\nrelay-log-index=slave-relay-bin.index'/etc/my.cnf    ##替換mysql配置文件,

/etc/init.d/mysqld restart   ##重啓mysql服務

yum -y install mysql

mysql -uroot -p123123   ##登陸數據庫

mysql> change master tomaster_host='192.168.100.158',master_user='myslave',master_password='123123',master_log_file='master-bin.000001',master_log_pos=339;             ##進行指定mysql的服務器的master-bin,注意在指定master的時候是stop        slave的狀態下,不能再開啓的狀態下指定。

mysql> start slave;     ##啓動slave

mysql> show slave status\G;  ##查看無error即可,並且兩個runningyes

mysql> show databases;  ##驗證數據庫是否同步,驗證在主服務器上登陸數據庫創建的文件是否同步

mysql> quit          ##退出mysql數據庫

 

配置從服務器2192.168.100.160

sed -i '/^server-id/s/1/33/g' /etc/my.cnf

sed -i'/^server-id/arelay-log=relay-log-bin\nrelay-log-index=slave-relay-bin.index'/etc/my.cnf

/etc/init.d/mysqld restart

yum -y install mysql

mysql -uroot -p123123

mysql> change master to master_host='192.168.100.158',master_user='myslave',master_password='123123',master_log_file='master-bin.000001',master_log_pos=339;

mysql> start slave;

mysql> show slave status\G;  ##查看error=0即可

mysql> show databases;  ##驗證數據庫是否同步

mysql> quit

注:兩個從服務器的配置基本相同,指定的server id 不能相同。

 

搭建MySQL讀寫分離:

1)安裝軟件:192.168.100.157

lftp ftp.linuxfan.cn

>cd tools/

> get amoeba-mysql-binary-2.2.0.tar.gz jdk-6u14-linux-x64.bin

>bye

yum -y remove java

chmod +x jdk-6u14-linux-x64.bin

./jdk-6u14-linux-x64.bin

mv jdk1.6.0_14/ /usr/local/jdk1.6

vi /etc/profile

export JAVA_HOME=/usr/local/jdk1.6

exportCLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

exportPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/bin/:$PATH:$HOME/bin

export AMOEBA_HOME=/usr/local/amoeba

export PATH=$PATH:$AMOEBA_HOME

:wq

source /etc/profile

java -version

mkdir /usr/local/amoeba

tar zxvf amoeba-mysql-binary-2.2.0.tar.gz-C /usr/local/amoeba/

chmod -R 755 /usr/local/amoeba/

/usr/local/amoeba/bin/amoeba  ##驗證

2)數據授權給amoeba讀寫權限:

mysql> grant all on *.* to linuxfan@'192.168.100.%'identified by '123123';   ##192.168.100.158完成

mysql> show grants forlinuxfan@'192.168.100.%';   ##192.168.100.159-160同步了權限

3)代理服務器修改配置文件:192.168.100.157

vim /usr/local/amoeba/conf/amoeba.xml

 30                                        <property name="user">amoeba</property>

 31

 32                                        <property name="password">123456</property>

115                 <propertyname="defaultPool">master</property>

116

117                <propertyname="writePool">master</property>   ##注意刪除<!--  -->的註釋

118                 <propertyname="readPool">slaves</property>

:set nu ##顯示行號

:wq

 

vim /usr/local/amoeba/conf/dbServers.xml

 25                         <!-- mysql user-->

 26                         <propertyname="user">linuxfan</property>   ##該用戶必須是上一步授權的用戶

 27                        

 28                         <!--  mysql password -->   ##修改

 29                         <propertyname="password">123123</property>  ##刪除下一行的“-->

 44        <dbServer name="master" parent="abstractServer">  ##修改爲master

 45                 <factoryConfig>

 46                         <!-- mysql ip-->

 47                         <propertyname="ipAddress">192.168.100.158</property>  ##指定正確的masterip

 51        <dbServer name="slave1" parent="abstractServer"> ##修改爲slave1

 52                 <factoryConfig>

 53                         <!-- mysql ip-->

 54                         <propertyname="ipAddress">192.168.100.159</property>  ##指定slave1ip地址

 55                 </factoryConfig>

 56        </dbServer>

 57        <dbServer name="slave2" parent="abstractServer"> ##添加如下6行,指定slave2ip

 58                 <factoryConfig>

 59                         <!-- mysql ip-->

 60                        <propertyname="ipAddress">192.168.100.160</property>

 61                 </factoryConfig>

 62        </dbServer>

 64        <dbServer name="slaves" virtual="true">  ##修改爲slaves

 70                         <propertyname="poolNames">slave1,slave2</property>  ##修改集羣的成員名稱用逗號隔開

:wq

/usr/local/amoeba/bin/amoebastart&   ##後臺啓動代理服務

netstat -utpln |grep 8066  ##驗證

 

 

搭建存儲nfs服務器;192.168.100.155-156

1.安裝nfs-utilsrcpbind軟件包  192.168.100.155-156

[root@localhost ~]# yum -y installnfs-utils rpcbind

[root@localhost ~]# for i in rpcbind nfs;dochkconfig $i on; done   ##設置爲開機啓動

2.設置共享目錄

[root@localhost ~]# mkdir /opt/wwwroot

[root@localhost ~]# chmod 755/opt/wwwroot  ##設置權限

vi /etc/exports

/opt/wwwroot          192.168.100.0/24(rw,sync,no_root_squash)

3.啓動nfs服務程序

[root@localhost ~]# /etc/init.d/rpcbindrestart

[root@localhost ~]# /etc/init.d/nfs restart

                                      chkconfig rpcbind on

                                      chkconfig nfs on

[root@localhost ~]# netstat -utpnl |greprpcbind

[root@localhost ~]# showmount -e ##查看本機共享的目錄

 

搭建NFS服務器的keepalived雙機熱備;

1.安裝keepalived(主從上都需要安裝)192.168.100.155-156

yum -y install kernel-devel openssl-develpopt-devel  ipvsadm

lftp ftp.linuxfan.cn

lftp ftp.linuxfan.cn:/tools> getkeepalived-1.2.13.tar.gz

tar -zxvf keepalived-1.2.13.tar.gz -C/usr/src/

cd /usr/src/keepalived-1.2.13/

./configure --prefix=/--with-kernel-dir=/usr/src/kernels/2.6.32-431.el6.x86_64/

make &&make install

chkconfig --add keepalived

chkconfig keepalived on

 

2.配置keepalived;

主配置:(192.168.100.155上操作)

cd /etc/keepalived/

mv keepalived.conf keepalived.conf.bak

vi /etc/keepalived/keepalived.conf

global_defs {

   router_id HA_TEST_R1    ##本服務器的名稱,若環境中有多個         keepalived時,此名稱不能一致

}

vrrp_instance VI_1 {                  ##定義VRRP熱備實例,每一個keep組都不同

   state MASTER          ##MASTER表示主服務器

   interface eth0           ##承載VIP地址的物理接口

   virtual_router_id 1           ##虛擬路由器的ID號,每一個keep組都不同

   priority 100                ##優先級,數值越大優先級越高

   advert_int 1              ##通告間隔秒數(心跳頻率)

   authentication {                 ##認證信息

       auth_type PASS                  ##認證類型

       auth_pass 123456   ##密碼字串

    }

   virtual_ipaddress {

 192.168.100.95            ##指定漂移地址(VIP

    }

}

 

從配置:(192.168.100.156上操作)

cd /etc/keepalived/

mv keepalived.conf keepalived.conf.bak

vi /etc/keepalived/keepalived.conf

global_defs {

   router_id HA_TEST_R2    ##本服務器的名稱

}

vrrp_instance VI_1 {

   state BACKUP                    ##SLAVE表示從服務器

   interface eth0

   virtual_router_id 1

   priority 99                           ##優先級,低於主服務器

   advert_int 1

   authentication {

       auth_type PASS

       auth_pass 123456

    }

   virtual_ipaddress {

       192.168.100.95

    }

}

 

3.啓動服務及應用服務:192.168.100.155-156

1)啓動keepalived

/etc/init.d/keepalived start

ip addr show dev eth0      ##驗證vip是否在主服務器上

 

4.配置rsync實現兩臺nfs服務器的目錄實時同步;192.168.100.155-156

備份源:192.168.100.156

yum -y install rsync      ##確認安裝rsync軟件

發起端:192.168.100.155

ssh-keygen -t  rsa                 ##創建以密鑰對加密的方式,遠程時不用密碼

ssh-copy-id [email protected]    ##將公鑰發送給備份源

ssh [email protected]     ##此時遠程將不需要密碼

lftp ftp.linuxfan.cn

cd /tools

get inotify-tools-3.14.tar.gz

tar zxvf  inotify-tools-3.14.tar.gz   -C /usr/src/    ##解壓inotify

cd /usr/src/ inotify-tools-3.14/

./configure &&make &&amake install

vi /root/bin/rsync.sh

#!/bin/bash

rsync -avzHP /opt/wwwroot/ [email protected]:/opt/wwwroot/--delete

echo "30 0 * * 6" >/var/spool/cron/root

:wq

chmod +x  /root/bin/rsync.sh

/root/bin/rsync.sh

配置前端調度器keepalived+lvs

安裝keepalived(在兩臺調度服務器上安裝,192.168.100.150192.168.100.151

yum -y install kernel-devel openssl-develpopt-devel ipvsadm

lftp ftp.linuxfan.cn

cd /tools/

get keepalived-1.2.13.tar.gz

bye

tar zxvf keepalived-1.2.13.tar.gz -C/usr/src/

cd /usr/src/keepalived-1.2.13/

./configure --prefix=/--with-kernel-dir=/usr/src/kernels/2.6.32-431.el6.x86_64/

make &&make install

cd

[root@localhost ~]# ls /etc/keepalived/

keepalived.conf  samples

chkconfig --add keepalived

chkconfig keepalived on

 

2.配置調度器(主:192.168.100.150,備:192.168.100.151,漂移ip192.168.100.95web服務器池(節點1:192.168.100.152、節點2:192.168.100.153、節點3192.168.100.154

1)、配置主HA調度服務器

cd /etc/keepalived/

mv keepalived.conf keepalived.conf.bak

vi /etc/keepalived/keepalived.conf

global_defs {

   router_id HA_TEST_R3    ##本服務器的名稱

}

vrrp_instance VI_2 {                  ##定義VRRP熱備實例

   state MASTER          ##MASTER表示主服務器

   interface eth0           ##承載VIP地址的物理接口

   virtual_router_id 2           ##虛擬路由器的ID

   priority 100                ##優先級,數值越大優先級越高

   advert_int 1              ##通告間隔秒數(心跳頻率)

   authentication {                 ##認證信息

       auth_type PASS                  ##認證類型

       auth_pass 123456   ##密碼字串

    }

   virtual_ipaddress {

 192.168.100.95            ##指定漂移地址(VIP

    }

virtual_server 192.168.100.95 80 {

       delay_loop 15

       lb_algo rr

       lb_kind DR

       protocol TCP

real_server 192.168.100.152 80 {

       weight 1

       TCP_CHECK {

                connect_port 80

                connect_timeout 3

                nb_get_retry 3

                delay_before_retry 4

                }

       }

real_server 192.168.100.153 80 {

       weight 1

       TCP_CHECK {

                connect_port 80

                connect_timeout 3

                nb_get_retry 3

                delay_before_retry 4

                }

       }

real_server 192.168.100.154 80 {

       weight 1

       TCP_CHECK {

                connect_port 80

                connect_timeout 3

                nb_get_retry 3

                delay_before_retry 4

                }

       }

}

:wq

modprobe ip_vs

lsmod |grep ip_vs

echo "modprobe ip_vs">>/etc/rc.local

/etc/init.d/keepalived restart

chkconfig ipvsadm off

ip addr show dev eth0

2)、配置HA從調度服務器

cd /etc/keepalived/

mv keepalived.conf keepalived.conf.bak

vi /etc/keepalived/keepalived.conf

global_defs {

   router_id HA_TEST_R4    ##本服務器的名稱

}

vrrp_instance VI_2 {                  ##定義VRRP熱備實例

   state BACKUP           ##BACKUP表示主服務器

   interface eth0           ##承載VIP地址的物理接口

   virtual_router_id 2           ##虛擬路由器的ID

   priority 99                  ##優先級,數值越大優先級越高

   advert_int 1              ##通告間隔秒數(心跳頻率)

   authentication {                 ##認證信息

       auth_type PASS                  ##認證類型

       auth_pass 123456   ##密碼字串

    }

   virtual_ipaddress {

 192.168.100.95            ##指定漂移地址(VIP

    }

virtual_server 192.168.100.95 80 {

       delay_loop 15

       lb_algo rr

       lb_kind DR

       protocol TCP

real_server 192.168.100.152 80 {

       weight 1

       TCP_CHECK {

                connect_port 80

                connect_timeout 3

                nb_get_retry 3

                delay_before_retry 4

                }

       }

real_server 192.168.100.153 80 {

       weight 1

       TCP_CHECK {

                connect_port 80

                connect_timeout 3

                nb_get_retry 3

                delay_before_retry 4

                }

       }

real_server 192.168.100.154 80 {

       weight 1

       TCP_CHECK {

                connect_port 80

                connect_timeout 3

                nb_get_retry 3

                delay_before_retry 4

                }

       }

}

:wq

 

modprobe ip_vs

lsmod |grep ip_vs

echo "modprobe ip_vs">>/etc/rc.local

/etc/init.d/keepalived restart

chkconfig ipvsadm off

ip addr show dev eth0

######設置防火牆和selinux(此處爲測試)#########

iptables -F

setenforce 0

 

配置Web節點服務器(lvsDR工作模式的配置,分別在節點服務器上做如下設置,可以使用腳本)

wgetftp://ftp.linuxfan.cn/tools/lamp_install_publis-app-2015-07-16.tar.xz

tar Jxvflamp_install_publis-app-2015-07-16.tar.xz

cd bin/

./apache_install.sh&&mysql_install.sh &&php_install.sh

./php_config.sh &&mysql_config.sh&&lamp_config.sh

/etc/init.d/mysqld start

mysql -uroot -p123123

/etc/init.d/mysqld stop

ln -s /usr/local/httpd/bin/*/usr/local/bin/   ##優化執行命令的路徑

cp /usr/local/httpd/bin/apachectl/etc/init.d/httpd

vim /etc/init.d/httpd    ##在開始位置修改bash和添加chkconfigdescription;修改第82行實現執行命令時友好提示

1 #!/bin/bash        ##聲明shellbash

2 # chkconfig: 35 85 15     ##35運行級別開機啓動,開機啓動順序爲85,關機關閉順序爲15

3 # description: A Scripts for apache httpddeamon!  

82 $HTTPD -k $ARGV  &&echo "httpd is $ARGVcomplete."      ##82

:wq

ls -l /etc/init.d/httpd   ##確認文件有執行權限,如果沒有使用命令“chmod+x /etc/init.d/httpd”授權

chkconfig --add httpd

chkconfig httpd on

 

 

以下部分可用腳本:

cd /etc/sysconfig/network-scripts/

cp ifcfg-lo ifcfg-lo:0

vi ifcfg-lo:0

DEVICE=lo:0

IPADDR=192.168.100.95

NETMASK=255.255.255.255

ONBOOT=yes

:wq

/etc/init.d/network restart

echo "route add -host 192.168.100.95dev lo:0" >>/etc/rc.local

route add -host 192.168.100.95 dev lo:0

ip addr show dev lo

 

vi /etc/sysctl.conf

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

net.ipv4.conf.default.arp_ignore = 1

net.ipv4.conf.default.arp_announce = 2

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

 

sysctl -p

/usr/local/httpd/bin/apachectl start

iptables -F

setenforce 0

 

以上部分可以用腳本

yum -y install autofs

yum -y install nfs-utils rpcbind

vi /etc/auto.master

/usr/local/httpd/htdocs  /etc/auto.nfs

vi /etc/auto.nfs

linuxfan -rw 192.168.100.195:/opt/wwwroot

/etc/init.d/autofs restart

chkconfig autofs on

cd /usr/local/httpd/htdocs/linuxfan

ls

 

腳本:

#!/bin/bash

##by linuxfan 2016-10-31

#################set lo:0############

IF_LO="/etc/sysconfig/network-scripts/ifcfg-lo:0"

VIP=192.168.100.95

cat <<END >>$IF_LO

DEVICE=lo:0

IPADDR=$VIP        

NETMASK=255.255.255.255

ONBOOT=yes

END

if [ -e $IF_LO ];then

/etc/init.d/network restart

ip addr show dev lo:0

fi

###############change kernel args##########

cat <<END >> /etc/sysctl.conf

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

net.ipv4.conf.default.arp_ignore = 1

net.ipv4.conf.default.arp_announce = 2

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

END

grep arp /etc/sysctl.conf

if [ $? -eq 0 ];then

sysctl -p

fi

##################set route#############

echo "route add -host $VIP devlo:0" >>/etc/rc.local

source /etc/rc.local

route add -host $VIP dev lo:0

ip r |grep $VIP

#################check iptables &selinux ###

/etc/init.d/iptables stop

setenforce 0

部署web項目:

一:發佈論壇discuz

1.配置數據庫:在master上進行操作192.168.100.158

mysql -uroot -p123123

mysql> create database bbsdb;

mysql> grant all on bbsdb.* to'runbbs'@'localhost' identified by '123123';

mysql> flush privileges;

mysql> quit

2.下載discuz併發布:在NFS服務器中192.168.100.155

lftp ftp.linuxfan.cn

cd /tools

get discuz_7.2_full_sc_utf8.zip

bye

mkdir /opt/wwwroot/bbs

unzip discuz_7.2_full_sc_utf8.zip -ddiscuz  ##解壓

cp -rf discuz/upload/* /opt/wwwroot/bbs

cd /opt/wwwroot/bbs/

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

3.訪問安裝:

http://www.linuxfan.cn /bbs /install/

wKioL1gfDlqwTbIxAAKzxmaD5go605.png-wh_50

wKioL1gfDlujyAYgAAI6ENxYVfQ205.png-wh_50

wKiom1gfDlyQHiI8AALibJ_o8fs281.png-wh_50

wKiom1gfDl3wNim9AAGssJY_pWA533.png-wh_50


mysql 數據庫中可以看到該項目的寫入記錄;

wKioL1gfDm7CHl34AAERm9WNq8s737.png-wh_50

4.安裝完成後的處理:

mv install/ install.lock

chmod 600 install.lock/

 

二:發佈wordpress博客系統:

1.配置數據庫:

mysql> create database wpdb;

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

mysql> quit

2.下載wordpress,併發布:

wgethttps://cn.wordpress.org/wordpress-4.4.1-zh_CN.zip

unzip wordpress-4.4.1-zh_CN.zip

cp wordpress/usr/local/httpd/htdocs/linuxfan/ -rf

cd /usr/local/httpd/htdocs/linuxfan/wordpress/

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

##修改配置文件可以使用vimwp-config.php

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

3.訪問:

http://www.linuxfan.cn/wordpress/

補充:

實驗中所用到的腳本內容;

cat apache_install.sh

#!/bin/bash

#by linuxfan

rpm -e httpd httpd-manual --nodeps

ls /root/httpd*

if [ $? -eq 0 ];then

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

 

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 &&gmakeinstall

##解壓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 installsuccessfully."

fi

 

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 &&makeinstall

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 &&makeinstall

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 &&makeinstall

#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

 

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路徑,執行命令時方便,單引號雙引號都行

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 is123123"

 

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

 

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 ServerNamewww.linuxfan.cn' $APACHE_C

##在第310行後一行添加php應用類型的支持

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

##修改默認首頁,支持index.php

sed -i 's/DirectoryIndexindex.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/apachectlstart

         netstat-utpln |grep 80

fi

#2.mysql的配置

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

echo "mysql is running."

else

/etc/init.d/mysqld start

fi

實驗難點:

1.web站點掛載nfs的存儲時,容易出現掛載目錄全部刪除的情況或者是掛載不上,此時停止autofs的服務,umount掉掛載點,檢查autofs的配置文件,檢查nfs服務器的共享目錄,然後再啓動autofs服務;

2.在此項目中,web站點將nfs服務器的共享目錄掛載到了apache的安裝目錄下的htdocs網頁存放目錄中,可能出現的情況是autofs掛載成功,但是httpd/目錄下的文件全部沒有了,此時無法啓動httpd/bin/apachectl服務,解決辦法:先將autofs服務停止,umount掉掛載點,啓動apache服務,檢查80端口號,然後再將apache服務啓動;

3.部署後端數據庫時,配置數據庫之後的初始化過程中,可能會初始化失敗,或者是初始化成功改不了數據庫的密碼,此時,停止mysqld的服務,檢查/tmp的權限是否爲1777,檢查/usr/local/mysqld/及以下目錄屬主屬組全部爲mysqld用戶,刪除/usr/local/mysqld/data/*下全部文件,並且重啓主機,然後進行初始化mysql,啓動mysqld,修改mysql的密碼;

4.注意nfs服務器中的共享目錄的權限,需要設置爲755,目的是web站點不可以寫入,只能讀取,並且兩臺nfs服務器在做rsync的同時,需要指定-P選項保持文件的權限;

5.客戶端在訪問mysql數據庫的原理:在數據庫的讀寫分離中,客戶端連接數據庫使用的是代理服務器的amoeba用戶,8066號端口,然後再通過代理服務器訪問數據庫,訪問數據庫時使用的是數據庫中授權的用戶linuxfan。(也可以在代理amoeba服務器的amoeba.xml配置文件中更改amoeba服務的端口號80663306,這樣客戶端就不用指定8066端口);

6.nfs服務器中的網頁項目有改變的話,web站點可能會出現無法讀取掛載的問題,此時停止autofs的服務,umount掉掛載點,重新啓動autofs服務;

7.注意前端調度器中配置的keepalived和後端nfs服務器所配置的keepalived,這兩個keepalived的配置文件中的服務器名稱,熱備實例名稱,路由器id不能相同;

拓展:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章