LAMMP企業架構

一 LAMMP 是什麼php

L linux ,A Apache,M mysql,M Memcachedhtml

LAMMP 架構圖mysql

211841557.png

Apache 相應回覆用戶html請求linux

FastCGI 把PHP程序執行的結果響應給Apacheweb

Memcache 根據用戶請求的動態網頁,由程序決定是否須要把數據緩存至Memcache服務器中,Memcache是把數據緩存在內存中sql

Mysql 響應用戶查詢寫入數據數據庫

準備環境apache

每一個服務器採用系統centos6.4 x86_64最小化安裝,啓動網卡,修改主機名,關閉SElinux ,關閉防火牆vim

安裝編譯環境centos

yum install vim
yum install man
yum install ntp
yum groupinstall "development tools" "server platform development" "desktop platform development"

apache 主機名 www.daphne.com ip 192.168.200.201

php 主機名 php.daphne.com ip 192.168.200.202

mem 主機名 mem.daphne.com ip 192.168.200.203

mysql 主機名 sql.daphne.com ip 192.168.200.204

二 LAMMP 實現

1 apache安裝

依賴的軟件包 apr-1.4.6.tar.bz2 apr-util-1.5.2.tar.bz2 pcre-devel httpd-2.4.4.tar.bz2

安裝apr

tar xf apr-1.4.6.tar.bz2
cd apr-1.4.6
./configure --prefix=/usr/local/apr 
make && make install

安裝apr-util

tar xf apr-util-1.5.2.tar.bz2
cd apr-util-1.5.2
./configure  --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make && make install
yum install pcre-devel

 

安裝httpd

 

tar xf httpd-2.4.4.tar.bz2
cd httpd-2.4.4
./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-ssl
--enable-cgi --enable-cgid --enable-modules=most --enable-mods-shared=most --enable-rewrite
--with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
--enable-mpms-shared=all --with-mpm=--sysconfdir=/etc/httpd  :指定配置文件安裝位置
--enable-so              :支持動態共享模塊若是沒有這個模塊PHP將沒法與apache結合工做
--enable-ssl             :啓用支持ssl
--enable-cgi             :支持cgi
--enable-rewrite         :支持URL重寫
 --with-zlib             :壓縮庫,在互聯網上傳播時可節約帶寬
--with-apr=/usr/local/apr :指定apr路徑
--with-apr-util=/usr/local/apr-util :指定apr-util路徑
--enable-mpms-shared=all  :支持多道處理模塊
--with-mpm=         :設定默認的模塊
 

更改配置文件

cd /etc/httpd/
cp httpd.conf httpd.conf.bak
vim httpd.conf

PidFile     # 定義pid 文件的路徑

提供服務腳本

Vim  /etc/init.d/httpd
#!/bin/bash
#
# chkconfig: - 85 15
# description: Apache  a World Wide Web server.  It  used to serve \
. /etc/rc.d/init.d/functions      -----讀取函數 [ -f /etc/sysconfig/httpd ]; then
        . /etc/sysconfig/httpd
fi
# Start httpd  the C locale by .
HTTPD_LANG=${HTTPD_LANG-}
# This will prevent initlog from swallowing up a pass-phrase prompt # mod_ssl needs a pass-phrase from the user.
INITLOG_ARGS=# Set HTTPD=/usr/sbin/httpd.worker  /etc/sysconfig/httpd to use a server
# with the thread-based  MPM; BE WARNED that some modules may not
# work correctly with a thread-based MPM; notably PHP will refuse to start.
# Path to the apachectl script, server binary, and -form  messages.
apachectl=/usr/local/apache/bin/apachectl   # -----指定apachectl程序位置
httpd=${HTTPD-/usr/local/apache/bin/httpd} #-------httpd程序位置
prog=httpd
pidfile=${PIDFILE-/var/run/httpd.pid}  #----若是文件存在就使用存在文件路徑,若是不存在就使用/var/rum/httpd.pid
lockfile=${LOCKFILE-/var//subsys/httpd} # --------建立的鎖文件
RETVAL=0
start() {
        echo -n $LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS #----以$pidfile文件執行httpd 而且使用選項start
        RETVAL=$?  #------定義執行狀態返回值
        echo
        [ $RETVAL = 0 ] && touch ${lockfile} #-----成功時建立鎖文件 $RETVAL
}
stop() {
       echo -n $   killproc -p ${pidfile} -d 10 $httpd
       RETVAL=$?
       echo
       [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
}

reload() {
    echo -n $ ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/; then
        RETVAL=$?
        echo $failure $killproc -p ${pidfile} $httpd -HUP
        RETVAL=$?
    fi
    echo
}

# See how we were called.  
  start)
       start
       ;;
  stop)
       stop
       ;;
  status)
        status -p ${pidfile} $httpd
       RETVAL=$?
       ;;
  restart)
       stop
       start
       ;;
  condrestart)        [ -f ${pidfile} ] ; then
              stop
              start
       fi
       ;;
  reload)
        reload
       ;;
  graceful|help|configtest|fullstatus)
       $apachectl        RETVAL=$?
       ;;
  *)
       echo $   exit 1
esac

exit $RETVAL

 

chmod u+x /etc/init.d/httpd

 

設置開機自動啓動

chkconfig --add httpd
chkconfig httpd on
chkconfig httpd --list
httpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off

啓動apache 測試

service httpd start
Starting httpd: AH00558: httpd: Could not reliably determine the serverServerName' directive globally to suppress  message

                                                           [  OK  ]
啓動成功 有警告

vim  /etc/httpd/httpd.conf
ServerName  localhost :80
service httpd restart

用瀏覽器訪問一下

顯示 It Works!

爲httpd服務添加環境變量

Vim /etc/profile.d/httpd.sh
export PATH=$PATH:/usr/local/apache/bin

source /etc/profile.d/httpd.sh
httpd -t
Syntax OK

二 安裝mysql數據庫

解壓通用二進制軟件包

tar xf mysql-5.5.37-linux2.6-x86_64.tar.gz -C /usr/local
cd /usr/local
ln -sv  mysql-5.5.37-linux2.6-x86_64 msql

創建數據庫文件 生產環境數據庫存放在獨立LVM硬盤上面

mkdir -pv /mydata/data   
useradd -r mysql
chown -R mysql:mysql /mydata/data

創建mysql配置文件

cd /usr/local/mysql
cd support-files/
cp my-large.cnf /etc/my.cnf

創建服務腳本

cp mysql.server /etc/rc.d/init.d/mysqld

修改配置文件

Vim /etc/my.cnf
thread-concurrency = 4  #cpu物理核心的1-2 倍
datadir= /mydata/data

 

初始化mysql 腳本

 

yum install libaio
cd /usr/local/mysql
scripts/mysql_install_db --user=mysql --datadir=/mydata/data

 

開機自動啓動mysql

 

chkconfig --add mysqld
chkconfig  mysqld on

修改PATH環境變量

cd /etc/profile.d/
vim mysqld.sh
export PATH=$PATH:/usr/local/mysql/bin

source /etc/profile.d/mysqld.sh

 

連接頭文件

 

ln -sv /usr/local/mysql/include  /usr/include/mysqld.conf

連接庫文件

cd /etc/ld.so.conf.d/
vim mysqld.conf
/usr/local/mysql/lib

ldconfig

 

建立登錄數據庫用戶和密碼

 

mysql
mysql>drop user root@;
mysql>drop user root@;
mysql>create user root@ identified by ;
mysql>flush privileges;

 

 三 安裝PHP

若是使用PHP5.3以上版本,爲了連接MySQL數據庫,能夠指定mysqlnd,這樣在本機就不須要先安裝MySQL或MySQL開發包了。mysqlnd從php 5.3開始可用,能夠編譯時綁定到它(而不用和具體的MySQL客戶端庫綁定造成依賴),但從PHP 5.4開始它就是默認設置了。

安裝圖片資源軟件

yum -y install gd gd-devel  libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel

 

安裝libxml 庫

 

yum -y  install libxml2 libxml2-devel

 

安裝bzip2壓縮庫

 

yum install -y bzip2 bzip2-devel

 

安裝mcrypt加密庫

 

默認yum沒有此安裝包 須要添加epel

yum install libmcrypt libmcrypt-devel

 

 編譯PHP

注 編譯參數--enable-fpm,支持FastCGI PHP模塊,此參數決定是否能把PHP安裝成#FastCGI服務器

--with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd 本機不須要先安裝

mysql 並能夠連接其餘mysql服務器

tar xf php-5.4.19.tar.gz
cd php-5.4.19
./configure --prefix=/usr/local/php  --with-openssl  --enable-mbstring
 --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib
 --with-libxml-dir=/usr --enable-xml  --enable-sockets --enable-fpm 
--with-mcrypt  --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d 
--with-bz2  --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd

--with-openssl :讓其可以支持openssl功能
--enable-mbstring :多字節string,支持中文或者是非一個字節可以表示的語言
--with-gd : 支持gd庫
--with-freetpye-dir:支持freetype功能,freetype:自由的可移植的字體庫,能夠實現去引用特定字體的
--with-jpeg-dir:支持jpeg圖片
--with-png-dir:支持png圖片
--with-zlib:互聯網上經常使用的,通用格式的壓縮庫,讓數據文件先壓縮再傳送給客戶端
--with-libxml-dir:xml(擴展標記語言),如今的不少系統在實現數據交互的時候,都要基於xml來實現,因此要php支持xml,而且讓其知道其庫文件所在位置
--enable-sockets:讓php支持基於套接字的通訊
--with-mcrypt:支持加密功能的,額外的加密庫
--with-config-file-path :php配置文件的路徑放在了什麼地方 主配置文件是php.ini
--with-config-file-scan :主配置文件的片斷,也是配置文件,這個路徑下以.ini結尾的都是配置文件片斷
--with-bz2 :壓縮庫
--enable-maintainer-zts :這一項的使用取決於apache是什麼類型的,apache使用的是prefork就不須要;若是使用的是event

make && make install

  

提供PHP 配置文件

cd php-5.4.19
cp php.ini-production /etc/php.ini

 

修改PATH環境變量

 

cd /etc/profile.d/
vim php-fpm.sh
export PATH=$PATH:/usr/local/php/bin

source /etc/profile.d/php-fpm.sh

創建php-fpm服務的配置文件

cd  /usr/local/php/etc 
mv php-fpm.conf. php-fpm.conf
vim php-fpm.conf
listen 192.168.200.202:9000

 

爲php-fpm創建服務腳本

 

cd
cd php-5.4.19/sapi/fpm
cp init.d.php-fpm /etc/rc.d/init.d/php-fpm
chmod +x /etc/rc.d/init.d/php-fpm

 

開機啓動

 

chkconfig --add php-fpm
chkconfig php-fpm on

 

安裝FastCGI 與 memcached服務連接的軟件

 

tar  xf memcache-2.7.7.tgz
cd memcache-2.7.7
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/loca/php/bin/php-config --enable-memcahe

 

加載memcache.so模塊

 

mkdir -pv /etc/php.d
vim memcache.ini
extension=memcache.so

service php-fpm restart

  

安裝FastCGI 加速opcode代碼的軟件

tar xf xcache-3.0.3
/uar/local/php/bin/phpize
./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config

 

創建xcache配置文件,加載xcache.so模塊

 

cp xcache.ini /etc/php.d/
service php-fpm restart

  

四 memcached服務器的安裝

在此採用 yum 安裝的方式

yum install memcached
service memcached start

到此爲止每一個服務器獨立安裝完成,爲使其協同工做,配置以下

1 apache 與 FastCGI

apache服務的設置

vim /etc/httpd/httpd.conf
#DocumentRoot   #註釋這行

LoadModule proxy_module modules/mod_proxy.so  #開啓代理的模塊

LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so#開啓鏈接fastcgi的模塊

Include conf/extra/httpd-vhosts.conf #開啓讓主配置文件載入虛擬主機的配置文件

############################################################

[root@jie1 ~]# vim /usr/local/apache/conf/extra/httpd-vhosts.conf

#####vim  /usr/local/apache/conf/extra/httpd-vhosts.conf############

#開啓一個虛擬主機便可

<VirtualHost *:80>
    DocumentRoot   #Apache服務器存放網頁的目錄
    ServerName    <Directory >
       AllowOverride None
       Options None
     Require all granted
   </Directory>
    ProxyRequests Off  #關閉代理請求
    ProxyPassMatch ^/(.*\.php)$ fcgi://192.168.200.202:9000/web/docs/$1
   #把接收客戶端來着php的請求,轉到FastCGI服務器上面去執行,/web/docs是指
#FastCGI服務存放php網頁的目錄

</VirtualHost>

#####################################################################

mkdir -pv /web/docs
mkdir: created directory `/web

在PHP 服務器上創建於apache 相同架構的網站文件 .php 文件放在PHP服務器上相應目錄便可

 

PHP 服務器的設置

mkdir -p /web/docs
cd /web/docs
vim test.php
<?php
infophp()
?>

  

測試 http://192.168.200.201/test.php

2 PHP-FPM 鏈接memcached

FastCGI安裝了鏈接memcached的軟件包memcache且把memcache.so模塊裝載到php的配置文件中了,這樣就實現了PH-FPM(FastCGI)鏈接Memcached。

創建測試文件

<?php
$mem = new Memcache;
$mem->connect("192.168.200.203", 11211)  or die("Could not connect");
$version = $mem->getVersion();
echo "Server's version: ".$version."<br/>\n";
$mem->set('hellokey', 'Hello World', 0, 600) or die("Failed to save data at the memcached server");
echo "Store data in the cache (data will expire in 600 seconds)<br/>\n";
$get_result = $mem->get('hellokey');
echo "$get_result is from memcached server.";
?>

 3 PHP-FPM 鏈接mysql

PHP-FPM鏈接mysql,在編譯的時候能夠加這三個參數,而後PHP-FPM服務器上也能夠不用安裝mysql也能夠鏈接mysqld服務器。

--with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd

創建測試文件

<?php
$link=mysql_connect('192.168.200.204','root','password');
if($link) echo "mysql test success!!";
else echo "mysql test failed!!";
mysql_close();
?>
相關文章
相關標籤/搜索