環境說明: 系統: CentOS 6.6 部署模式: 分離式(三個服務部署到三台服務上) 版本: HTTP 2.4.25 + PHP 5.4.13 + MySQL 5.5.28 IP規劃: HTTP: 192.168.205.116 PHP: 192.168.205.117 MySQL: 192.1 ...
環境說明:
- 系統: CentOS 6.6
- 部署模式: 分離式(三個服務部署到三台服務上)
- 版本: HTTP 2.4.25 + PHP 5.4.13 + MySQL 5.5.28
- IP規劃: HTTP: 192.168.205.116 PHP: 192.168.205.117 MySQL: 192.168.205.115
效果截圖:
httpd編譯安裝
-
編譯安裝apr
1) wget http://mirrors.hust.edu.cn/apache//apr/apr-1.5.2.tar.gz
2) tar xf apr-1.5.2.tar.gz
3) cd apr-1.5.2
4) ./configure
5) make&makeinstall
-
編譯安裝apr-util
1) wget http://mirrors.hust.edu.cn/apache//apr/apr-util-1.5.4.tar.gz
2) cd apr-util-1.5.4
3) tar xf apr-util-1.5.4.tar.gz
4) ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
5) make&makeinstall
-
編譯安裝httpd
1) yum install pcre pcre-devel -y
2) yum install openssl-devel -y
3) wget http://mirrors.tuna.tsinghua.edu.cn/apache//httpd/httpd-2.4.25.tar.bz2
4) cd httpd-2.4.25
5) ./configure \
--prefix=/usr/local/httpd \
--sysconfdir=/etc/httpd \
--enable-so \
--enable-rewrite \
--enable-ssl --enable-cgi \
--enable-cgid --enable-modules=most \
--enable-mpms-shared=all \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util \
--with-ssl=/usr/local/openssl \
--enable-proxy \
--enable-proxy-fcgi
6) make && make install
-
關閉selinux和防火牆
1) getenforce
2) setenforce 0
3) vim /etc/selinux/config
4) getenforce
5) iptables -F
-
修改配置文件
1) vim /etc/httpd/httpd.conf
2) 添加 PidFile "/var/run/httpd.pid": 修改pid進程文件位置
-
服務啟動驗證
1) /usr/local/httpd/apachectl start
2) netstat -tnlp
-
創建啟動文件
1) vim /etc/init.d/httpd
. /etc/rc.d/init.d/functions #chkconfig: 2345 10 90 # # pull in sysconfig settings [ -f /etc/sysconfig/httpd ] && . /etc/sysconfig/httpd HTTPD_LANG=${HTTPD_LANG-"C"} INITLOG_ARGS="" #apachectl=/usr/local/apache/bin/apachctl #httpd=${HTTPD-/usr/local/apache/bin/httpd} httpd=${HTTPD-/usr/local/httpd/bin/apachectl} prog=httpd pidfile=${PIDFILE-/var/run/httpd.pid} lockfile=${LOCKFILE-/var/lock/subsys/httpd} RETVAL=0 start() { echo -n $"Starting $prog: " LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS RETVAL=$? echo [ $RETVAL -eq 0 ] && touch $lockfile return $RETVAL } stop() { echo -n $"Stopping $prog: " killproc -p ${pidfile} -d 10 $httpd RETVAL=$? # if we are in halt or reboot runlevel kill all running sessions # so the TCP connections are closed cleanly echo [ $RETVAL -eq 0 ] && rm -f ${lockfile} ${pidfile} } reload() { echo -n $"Reloading $prog: " if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then RETVAL=$? echo $"not reloading due to configuration syntax error" failure $"not reloading $httpd due to configuration syntax error" else killproc -p ${pidfile} $httpd -HUP RETVAL=$? fi echo } restart() { stop start } case "$1" in start) start ;; stop) stop ;; status) status -p ${pidfile} $httpd RETVAL=$? ;; restart) restart ;; condrestart) if [ -f ${pidfile} ]; then stop start fi ;; reload) reload ;; graceful|help|configtest|fullstatus) $apachectl $@ RETVAL=$? ;; *) echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}" exit 1 esac exit $RETVALhttpd
2) 添加執行許可權
a) chmod +x /etc/init.d/httpd
3) 加入到啟動服務列表中
a) chkconfig --add httpd
b) chkconfig --list httpd
c) chkconfig --level 35 httpd on
4) 處理報錯信息
a) vim /etc/httpd/httpd.conf
ServerName localhost:80
-
添加環境變數
a) vim /etc/profile.d/httpd.sh
a) export PATH=$PATH:/usr/local/httpd/bin/
b) 註意httpd -t生效需要退出重新登錄
MySQL二進位安裝
-
下載安裝
1) wget https://downloads.mysql.com/archives/get/file/mysql-5.5.28-linux2.6-i686.tar.gz
ii. 解壓到指定目錄
1) tar xf mysql-5.5.28-linux2.6-i686.tar.gz -C /usr/local/
iii. 切換到該目錄下
1) cd /usr/local/
iv. 做鏈接
1) ln -sv mysql-5.5.28-linux2.6-i686/ mysql
v. 添加用戶, 修改屬主, 屬組
1) groupadd -r -g 306 mysql
2) useradd -g 306 -r -u 306 mysql
3) chown -R root.mysql /usr/local/mysql/*
-
製作邏輯捲並將資料庫文件指定至邏輯捲
vi. 製作邏輯捲
1) fdisk /dev/sdb
2) pvcreate /dev/sdb5
3) vgcreate myvg /dev/sdb5
4) lvcreate -n mydata -L 5G myvg
5) lvs
6) mke2fs -j /dev/myvg/mydata
vii. 資料庫數據存放至邏輯捲
1) mkdir /mydata/
2) mount /dev/myvg/mydata /mydata/
viii. 修改/etc/fstab文件
1) /dev/myvg/mydata /mydata ext3 defaults 0 0
2) mount -a
ix. 修改數據存儲文件夾許可權
1) chown -R mysql.mysql data/
2) chmod o-x /mydata/data/
-
初始化資料庫
1) yum install -y libaio: 初始化時報錯的解決辦法
2) cd /user/local/mysql
3) scripts/mysql_install_db --user=mysql --datadir=/mydata/data/
4) chown -R root /usr/local/mysql/*
-
創建開機自啟
xi. 修改啟動文件
1) cp support-files/mysql.server /etc/init.d/mysqld
xii. 添加入開機啟動
1) chkconfig --add mysqld
2) chkconfig --list mysqld
-
添加配置文件
1) cp /usr/local/mysql-5.5.28-linux2.6-i686/support-files/my-huge.cnf /etc/my.cnf
2) vim /etc/my.cnf
a) datadir = /mydata/data/mysql
b) thread_concurrency = 8
c) mysql中一個cpu提供2個線程
i) 查看當前系統有幾個cpu:cat /proc/cpuinfo
ii) 所以這裡最多有2個線程,修改為2
-
添加PATH環境變數執行mysql命令
1) vim /etc/profile.d/mysqld.sh
a) export PATH=$PATH:/usr/local/mysql/bin
2) 退出重新登錄
-
開啟服務測試
1) service mysqld start
-
修改MySQL的root用戶的密碼以及打開遠程連接
mysql -u root mysql
mysql>use mysql;
mysql>desc user;
mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "william"; //為root添加遠程連接的能力。
mysql>update user set Password = password('xxxxxx') where User='root';
mysql>select Host,User,Password from user where User='root';
mysql>flush privileges;
mysql>exit
重新登錄:mysql -u root -p
PHP源碼編譯安裝
-
編譯安裝libmcrypt
1) wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.6.tar.gz
2) tar xf libmcrypt-2.5.6.tar.gz
3) cd libmcrypt-2.5.6
a) ./configure --prefix=/usr/local/libmcrypt
-
編譯安裝PHP
ii. wget http://museum.php.net/php5/php-5.4.13.tar.bz2
iii. yum install gcc openssl-devel libxml2-devel bzip2-devel -y
cd php-5.4.13
iv. 編譯安裝
./configure \
--prefix=/usr/local/php \
--enable-fpm \
--with-config-file-path=/etc \
--with-config-file-scan-dir=/etc/php.d \
--with-libxml-dir=/usr \
--with-openssl \
--with-zlib \
--with-bz2 \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--enable-mbstring \
--with-mcrypt \
--enable-sockets \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--enable-maintainer-zts \
--with-mcrypt=/usr/local/libmcrypt
1) make && make install
-
設置啟動項
1) cp php.ini-production /etc/php.ini
2) 為php-fpm提供Sysv init腳本, 並將其添加至服務列表
a) cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
b) chmod +x /etc/init.d/php-fpm
c) chkconfig --add php-fpm
d) chkconfig --list php-fpm
vi. 修改httpd.conf
1) AddType application/x-httpd-php .php
2) AddType application/x-httpd-source .phps
vii. 配置php-fpm
1) 為php-fpm提供Sysv init腳本, 並將其添加至伺服器列表
a) cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
b) chmod +x /etc/rc.d/init.d/php-fpm
c) chkconfig --add php-fpm
d) chkconfig php-fpm on
-
為php-fpm提供配置文件
a) cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
3) 編輯php-fpm的配置文件
a) vim /usr/local/php/etc/php-fpm.conf
b) 配置fpm的相關選項為你所需要的值, 並啟用pid文件
i) pm.max_children = 50
ii) pm.start_servers = 5
iii) pm.min_spare_servers=2
iv) pm.max_spare_servers=8
v) pid=/usr/local/php/var/run/php-fpm.pid
-
啟動服務
1) service php-fpm start
2) netstat -tnlp
PHP連接HTTP
i. 修改php伺服器配置php-fpm的文件vim /usr/local/php/etc/php-fpm 定位到listen =192.168.205.117:9000
ii. 在該主機上新建虛擬主機目錄用於存放網頁文件
mkdir -pv /www/{glinux,gliuxstar}
iii. 配置http伺服器Apache虛擬主機使用php
1) 在httpd主機上, 192.168.205.116, 建立一個目錄作為虛擬主機的家目錄
a) mkdir -pv /www/{glinux,glinuxstar}
-
編輯主配置文件(關閉中心主機, 開啟虛擬主機)
a) vim /etc/httpd/httpd.conf
One. 註釋 #DocumentRoot "/usr/local/apache/htdocs"
Two. 並打開啟用 Include /etc/httpd/extra/httpd-vhosts.conf
Three. 同時定位 AddType;添加下麵兩行
First. AddType application/x-httpd-php .php
Second. AddType application/x-httpd-php-source .phps
Four. 並且定位至DirectoryIndex
First. <IfModule dir_module>
1. DirectoryIndex index.php index.html #添加index.php(最好添加在最前面)
Second. </IfModule>
Five. 啟動模塊
First. 還要啟用proxy_module proxy-fcgi_module等
Second. LoadModule proxy_module modules/mod_proxy.so #開啟
Third. LoadModule proxy_connect_module modules/mod_proxy_connect.so
Fourth. LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
Fifth. LoadModule proxy_http_module modules/mod_proxy_http.so
Sixth. LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so #開啟
-
編輯虛擬主機配置文件vim /etc/httpd/extra/httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot "/www/glinux"
ServerName www.glinux.com
ServerAlias glinux.com
ErrorLog "/usr/local/httpd/logs/glinux.error_log"
CustomLog "/usr/local/httpd/logs/glinux.access_log" combined
ProxyRequests off
ProxyPassMatch ^/(.*.php)$ fcgi://192.168.205.117:9000/www/glinux/$1
<Directory "/www/glinux">
Options none
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
-
在php伺服器上的/www/glinux目錄下分別建立網頁文件, 重啟服務即可
vim /www/glinux/index.php
<?php
phpinfo();
?>
-
測試phpinfo成功
瀏覽器里輸入: http://192.168.205.116
-
php支持擴展功能xcache
1) wget http://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz
2) 安裝xcache
a) tar xf xcache-3.2.0.tar.gz
b) cd xcache-3.2.0
c) 安裝依賴關係
i) yum -y install m4 autoconf
d) /usr/local/php/bin/phpize
e) ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config
f) make && make install
3) 安裝完畢後會出現這麼一行 Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20131226/
4) 編輯php.ini,整合php和xcache:
a) 首先將xcache提供的樣例配置導入php.ini
i) # mkdir /etc/php.d
ii) # cp xcache.ini /etc/php.d
iii) 說明:xcache.ini文件在xcache的源碼目錄中。
5) 接下來編輯/etc/php.d/xcache.ini,找到extension開頭的行,修改為如下行:
a) extension = /usr/local/php/lib/php/extensions/no-debug-zts-20131226/xcache.so
b) 註意:如果php.ini文件中有多條zend_extension指令行,要確保此新增的行排在第一位。
6) 然後重啟服務即在phpinfo的頁面中就可看見xcache的選項了。
7) 關閉xcache方法
a) vim /etc/php.d/xcache.ini
i) xcache.size = 0 :設置為0是關閉xcache
PHP連接MySQL
-
mysql資料庫修改
use mysql;
grant all privileges on *.* to 'root'@'192.9.205.105' identified by 'william';
select Host,User,Password from user where User='root';
flush privileges;
-
進入php主機編輯index.php文件內容
<?php
$link=mysql_connect('192.168.205.115','root','william');
if($link){
echo "success..william!";
}else{
echo "failed..frank!".mysql_error();
}
mysql_close($link);
phpinfo();
?>
-
測試連接情況切記,要將防火牆關閉!
瀏覽器里輸入: http://192.168.205.116
部署phpMyAdmin
-
下載phpMyAdmin
wget https://files.phpmyadmin.net/phpMyAdmin/4.7.0/phpMyAdmin-4.7.0-all-languages.tar.gz
-
配置phpmyadmin
1) 在php 主機和http主機上分別在/www目錄建立一個文件夾glinux, 並同樣執行下麵操作
2) tar xf phpMyAdmin-4.7.0-all-languages.zip
3) cd /www/glinux
4) mv /root/phpMyAdmin-4.7.0/* ./
5) 接下來在php主機上進行對phpmyadmin的配置。
6) cp config.sample.inc.php config.inc.php
7) vim config.inc.php
a) 主要找到
b) $cfg['Servers'][$i]['host']=‘192.168.205.115’ 資料庫伺服器的IP地址
c) $cfg['blowfish_secret'] = 'william';這裡的字元隨意,這個主要是為了區分cookie。
8) 然後重啟三台主機上的服務即可測試。