web集羣綜合項目php
在此項目中,爲了使公司內部的web站點提供更穩定的服務,搭建負載均衡羣集以及故障轉移羣集,具體拓撲環境以下;html
主機前端 |
Ip地址java |
軟件node |
主調度器mysql |
192.168.100.150linux |
kernel-devel openssl-devel popt-devel ipvsadm keepalived-1.2.13.tar.gzweb |
從調度器sql |
192.168.100.151shell |
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
安裝mysql:192.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.000001和337 ,須要在從服務器上用到
mysql> create database db_test; ##建立文件測試數據庫
mysql> quit
配置從服務器1:192.168.100.159
sed -i '/^server-id/s/1/22/g'/etc/my.cnf ##更改server id爲22
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便可,而且兩個running爲yes
mysql> show databases; ##驗證數據庫是否同步,驗證在主服務器上登錄數據庫建立的文件是否同步
mysql> quit ##退出mysql數據庫
配置從服務器2:192.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> ##指定正確的master的ip
51 <dbServer name="slave1" parent="abstractServer"> ##修改成slave1
52 <factoryConfig>
53 <!-- mysql ip-->
54 <propertyname="ipAddress">192.168.100.159</property> ##指定slave1的ip地址
55 </factoryConfig>
56 </dbServer>
57 <dbServer name="slave2" parent="abstractServer"> ##添加以下6行,指定slave2的ip
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 ##驗證
1.安裝nfs-utils、rcpbind軟件包 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 root@192.168.100.156 ##將公鑰發送給備份源
ssh root@192.168.100.156 ##此時遠程將不須要密碼
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/ root@192.168.100.156:/opt/wwwroot/--delete
echo "30 0 * * 6" >/var/spool/cron/root
:wq
chmod +x /root/bin/rsync.sh
/root/bin/rsync.sh
安裝keepalived(在兩臺調度服務器上安裝,192.168.100.150,192.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,漂移ip:192.168.100.95)web服務器池(節點1:192.168.100.152、節點2:192.168.100.153、節點3:192.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
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和添加chkconfig和description;修改第82行實現執行命令時友好提示
1 #!/bin/bash ##聲明shell爲bash
2 # chkconfig: 35 85 15 ##在3和5運行級別開機啓動,開機啓動順序爲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
一:發佈論壇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/
在mysql 數據庫中能夠看到該項目的寫入記錄;
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服務的端口號8066爲3306,這樣客戶端就不用指定8066端口);
6.若nfs服務器中的網頁項目有改變的話,web站點可能會出現沒法讀取掛載的問題,此時中止autofs的服務,umount掉掛載點,從新啓動autofs服務;
7.注意前端調度器中配置的keepalived和後端nfs服務器所配置的keepalived,這兩個keepalived的配置文件中的服務器名稱,熱備實例名稱,路由器id不能相同;