1、概述
php
首先,如標題所示我接下來的實驗就是搭建一個LAMP平臺而後實現一個Blog站點的實現,那"Php基於Apache的模塊實現"這又是神馬意思呢,咱們知道Apache與Php的結合方式有常見的三種:基於module、基於CGI、基於Fast-CGI;html
基於Module,指的就是Php在Apache編譯時就直接編譯成模塊,以模塊化的方式進行工做的,而當Apache須要解析Apache腳本時,它將直接調用這個模塊的功能就能夠了,它做爲Apache的一個子進程來工做,而無需啓動一個單獨的進程,這裏的前提就是Apache必須先裝載Php模塊;
前端
基於CGI,Common Gateway Interface通用網關接口,它是一種特殊的協議;例如客戶端請求了資源,httpd自己是沒法解析腳本的,它也不可能將腳本執行之後返還給客戶端,所以若是咱們想在服務器端當用戶請求一些特定資源時,將這種資源不是直接返還給客戶端,而是讓這個資源在服務器上先執行,把結果交給httpd,最後再回復給客戶端,因而再詳細點說就是:httpd自己不具有任何資源的解析功能,那就只能讓httpd基於CGI協議將去調用客戶請求的資源相對應的須要執行程序所擁有的執行環境來解析(例如這裏提到的Php腳本資源),環境再將執行的結果返還給httpd,最後再將結果響應給客戶端;因此CGI是能讓咱們的httpd服務能跟某一個應用程序執行環境進行通訊而且能從這個環境獲取執行結果的協議;全部可以基於CGI協議工做的協議都可以用做開發動態網站;可是CGI協議過於粗糙和簡陋而且基於這種模式通訊時它要求後端應用程序爲了到達某種目的、獲取某種資源必需要以管理員的身份去運行,這樣一來就又有安全隱患了;因而基於CGI這樣的模式逐漸淘汰了....因此如今有不少動態網站與前端通訊時都再也不基於CGI,好比Php的SAPI機制、Python的UWSGI的機制等等...它們使得這些腳本在執行時無需使用系統資源權限,而是在本身的程序環境中運行,對某些目錄有操做權限就足夠了;
mysql
基於Fast-CGI,上面我已經提到了基於模塊時Php的工做模式,若是httpd啓動的進程都運行Php代碼,因此它會啓動多個Php進程,對於httpd來講這些進程之後還須要關閉、收回、管理等等這樣就變得很是的麻煩了,因而我爲何不讓Php本身運行爲一個服務,相似於httpd的prefork工做模式同樣:啓動時生成多少個子進程、最大空閒進程、最小空閒進程等等,當httpd須要運行Php代碼時基於套接字鏈接Php這個服務所監聽的端口上,將Php代碼發送給Php由它其中的一個進程響應並解釋運行後將結果返回給httpd,基於這樣的機制,Php和httpd通訊就須要一種協議了,這種協議就是Fast-CGI,因而這樣一來Php做爲一個單獨的服務能夠運行了,那咱們就能夠將它獨立出來運行在不一樣的主機上了;
linux
一、apache是服務器基礎,php和mysql都須要他來協調工做,注意,客戶端的請求只是對Apache,而且Apache不會和MYSQL之間直接通訊,而是基於某個應用程序鏈接到數據庫sql
二、php是腳本解釋語言,負責httpd服務器發過來須要解析Php腳本的功能,若是不用php那麼apache出來的東西就只是靜態的內容,完成解析後結果將返回httpd,最後返回給客戶端,後端的話Php經過一個mysql_connect於MYSQL建鏈接關係數據庫
三、mysql是數據庫,徹底能夠單獨使用,可是和另外兩個一塊兒,則是由php代碼調用mysql接口,而Php就負責解釋php代碼,讓他能真正地實現對mysql的調用apache
這三者的關係放在這裏,大概能夠這樣理解成這樣vim
上圖只是說明三者之間的關係,可是我要基於php模塊來搭建的話就將HTTP與PHP整合到一臺主機上了,讓MYSQL獨立出來,下面是拓撲圖:
如今稍微理清了下思緒,咱們開始來進行實驗吧,
1、實驗說明:
一、啓動兩臺Centos6.5_X86-64系統的虛擬機,分別做爲HTTP+PHP(fastcgi)、MYSQL;
HTTP+PHP(fastcgi) IP -> 172.16.41.1
ServerName -> www.maoqiu.com
MYSQ IP -> 172.16.41.2
ServerName -> mysql.maoqiu.com
二、Client使用個人Windows;並在hosts文件中填入httpd服務器的IP及主機名對應關係;
172.16.41.1 www.maoqiu.com
實驗準備:
1.由於要用到yum,因此請事先確保好yum源的配置是否已經穩當
2.開發工具的支持
[root@www ~]# yum groupinstall -y "Development tools" [root@www ~]# yum groupinstall -y "Server Platform Development"
實驗步驟:
2、源碼編譯安裝httpd-2.4.9
一、安裝httpd依賴包pcre-devel(yum安裝便可)
[root@www ~]# yum install -y pcre-devel
二、解壓已獲取到的httpd-2.4.9,apr,apr-util軟件包,並安裝:
#→解壓安裝apr [root@www ~]#tar -xf apr-1.5.0.tar.bz2 -C /usr/src/ [root@www ~]# cd /usr/src/apr-1.5.0 [root@www apr-1.5.0]# ./configure \ > --prefix=/usr/local/apr #→指定其安裝位置 [root@www apr-1.5.0]# make && make install #→解壓安裝apr-util [root@www ~]#tar -xf apr-util-1.5.3.tar.bz2 -C /usr/src/ [root@www ~]# cd /usr/src/apr-util-1.5.3 [root@www apr-util-1.5.3]# ./configure \ > --prefix=/usr/local/apr-util \ #→指定其安裝位置 > --with-apr=/usr/local/apr #→指定apr安裝在哪一個位置的 [root@www apr-util-1.5.3]# make && make install #→解壓安裝httpd [root@www ~]#tar -xf httpd-2.4.9.tar.bz2 -C /usr/src [root@www ~]# cd /usr/src/httpd-2.4.9 [root@www httpd-2.4.9]# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=most --with-mpm=event 說明 --prefix=/usr/local/apache2 #→指定其安裝位置 --sysconfdir=/etc/httpd2 #→指定配置文件安裝位置 --enable-so #→啓用基於DSO的方式動態加載模塊 --enable-ssl #→啓用基於https協議的功能 --enable-cgi #→啓用基於cgi協議的功能 --enable-rewrite #→啓用支持URL重寫的功能 --with-zlib #→指定支持在互聯網上發送數據報文時,通用的壓縮庫的API --with-pcre #→指定支持poll的cgi --with-apr=/usr/local/apr #→指定par的安裝路徑 --with-apr-util=/usr/local/apr-util/ #→指定par-util的安裝路徑 --enable-modules=most #→啓用大多數經常使用的模塊 --enable-mpms-shared=all #→啓用加載全部的mpm模塊 --with-mpm=event #→指定接下來httpd的工做模式是event [root@www httpd-2.4.9]# make && make install
補充:
(1)構建MPM爲靜態模塊
在所有平臺中,MPM均可以構建爲靜態模塊。在構建時選擇一種MPM,連接到服務器中。若是要改變MPM,必須從新構建。爲了使用指定的MPM,請在執行configure腳本 時,使用參數 --with-mpm=NAME。NAME是指定的MPM名稱。編譯完成後,可使用 ./httpd -l 來肯定選擇的MPM。 此命令會列出編譯到服務器程序中的全部模塊,包括 MPM.
(2)構建 MPM 爲動態模塊
在Unix或相似平臺中,MPM能夠構建爲動態模塊,與其它動態模塊同樣在運行時加載。 構建 MPM 爲動態模塊容許經過修改LoadModule指令內容來改變MPM,而不用從新構建服務器程序。在執行configure腳本時,使用--enable-mpms-shared選項便可啓用此特性。當給出的參數爲all時,全部此平臺支持的MPM模塊都會被安裝。還能夠在參數中給出模塊列表。默認MPM,能夠自動選擇或者在執行configure腳本時經過--with-mpm選項來指定,而後出如今生成的服務器配置文件中。編輯LoadModule指令內容能夠選擇不一樣的MPM.
三、修改httpd的主配置文件,設置其Pid文件的路徑
#編輯/etc/httpd/httpd.conf,添加以下行便可: PidFile "/var/run/httpd.pid"
四、提供SysV服務腳本/etc/rc.d/init.d/httpd,內容以下:
#此服務腳本咱們複製之前系統自帶的httpd服務的腳本,而後作下修改 [root@www httpd]# cp /etc/rc.d/init.d/httpd /etc/rc.d/init.d/httpd2 [root@www httpd]# vim /etc/rc.d/init.d/httpd2 # processname: httpd # config: /etc/httpd/conf/httpd.conf # config: /etc/sysconfig/httpd # pidfile: /var/run/httpd.pid # ### BEGIN INIT INFO # Provides: httpd # Required-Start: $local_fs $remote_fs $network $named # Required-Stop: $local_fs $remote_fs $network # Should-Start: distcache # Short-Description: start and stop Apache HTTP Server # Description: The Apache HTTP Server is an extensible server # implementing the current HTTP standards. ### END INIT INFO # Source function library. . /etc/rc.d/init.d/functions if [ -f /etc/sysconfig/httpd ]; then . /etc/sysconfig/httpd fi # Start httpd in the C locale by default. HTTPD_LANG=${HTTPD_LANG-"C"} INITLOG_ARGS="" apachectl=/usr/local/apache2/bin/apachectl #→改變一下咱們編譯安裝後的程序路徑 httpd=${HTTPD-/usr/local/apache2/bin/httpd} #→改變一下咱們編譯安裝後的程序路徑 prog=httpd pidfile=${PIDFILE-/var/run/httpd.pid} lockfile=${LOCKFILE-/var/lock/subsys/httpd} RETVAL=0 STOP_TIMEOUT=${STOP_TIMEOUT-10} start() { echo -n $"Starting $prog: " LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS RETVAL=$? echo [ $RETVAL = 0 ] && touch ${lockfile} return $RETVAL } stop() { echo -n $"Stopping $prog: " killproc -p ${pidfile} -d ${STOP_TIMEOUT} $httpd RETVAL=$? echo [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile} } reload() { echo -n $"Reloading $prog: " if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then RETVAL=6 echo $"not reloading due to configuration syntax error" failure $"not reloading $httpd due to configuration syntax error" else # Force LSB behaviour from killproc LSB=1 killproc -p ${pidfile} $httpd -HUP RETVAL=$? if [ $RETVAL -eq 7 ]; then failure $"httpd shutdown" fi fi echo } # See how we were called. case "$1" in start) start ;; stop) stop ;; status) status -p ${pidfile} $httpd RETVAL=$? ;; restart) stop start ;; condrestart|try-restart) if status -p ${pidfile} $httpd >&/dev/null; then stop start fi ;; force-reload|reload) reload ;; graceful|help|configtest|fullstatus) $apachectl $@ RETVAL=$? ;; *) echo $"Usage: $prog {start|stop|restart|condrestart|try-restart|force-reload|reload|status|fullstatus|graceful|help|configtest}" RETVAL=2 esac exit $RETVAL #爲此服務腳本賦予執行權限並加入開機啓動項: [root@www httpd]# chmod +x /etc/rc.d/init.d/httpd2 [root@www httpd]# chkconfig --add httpd2 [root@www httpd]# chkconfig --list httpd2 httpd2 0:off 1:off 2:off 3:off 4:off 5:off 6:off [root@www httpd]# chkconfig httpd2 on [root@www httpd]# chkconfig --list httpd2 httpd2 0:off 1:off 2:on 3:on 4:on 5:on 6:off [root@www httpd]# #注意:這時候必定要把系統自動的那個httpd服務給停掉!
五、驗證咱們的編譯安裝是否成功了
#啓動我源碼編譯安裝的httpd服務 [root@www httpd]# service httpd2 start Starting httpd: [ OK ] [root@www httpd]# [root@www httpd]# ps -elFH 1 S root 1037 1 0 80 0 - 18186 poll_s 2180 0 01:17 ? 00:00:00 /usr/local/apache2/bin/httpd 5 S daemon 1039 1037 0 80 0 - 104251 pipe_w 4076 0 01:17 ? 00:00:00 /usr/local/apache2/bin/httpd 5 S daemon 1040 1037 0 80 0 - 104251 pipe_w 4080 0 01:17 ? 00:00:00 /usr/local/apache2/bin/httpd 5 S daemon 1041 1037 0 80 0 - 104251 pipe_w 4088 0 01:17 ? 00:00:00 /usr/local/apache2/bin/httpd #看到上面的數據沒有,默認啓動了三個進程,工做在event模式下的 #網頁訪問一下: [root@www httpd]# echo "<h1>Source Apache.<h1>" >/usr/local/apache2/htdocs/index.html [root@www httpd]# service httpd2 reload #→重載一下配置文件 Reloading httpd: [root@www httpd]#
OK!個人Apache編譯安裝測試成功...告一段落!
3、二進制編譯安裝MYSQL
注意開發環境的支持,按照上面的安裝就好了,這裏我直接就開始解壓安裝了
一、準備數據存放的文件系統
#新建一個邏輯卷,並將其掛載至特定目錄,至於爲何要用邏輯卷,後面詳說 [root@mysql ~]# fdisk /dev/sda [root@mysql ~]# mke2fs -t ext4 /dev/sda3 [root@mysql ~]# mkdir -p /databases/data [root@mysql ~]# vim /etc/fstab /dev/sda3 /databases/ ext4 defaults 0 0 [root@mysql ~]# mount -a
二、新建用戶以安全方式運行進程
[root@mysql ~]# groupadd -r mysql [root@mysql ~]# useradd -g mysql -r -s /sbin/nologin -M -d /databases/data mysql [root@mysql ~]# chown -R mysql:mysql /databases/data
三、安裝並初始化mysql-5.5.33
[root@mysql ~]# cd /usr/local/ [root@mysql local]# ln -sv mysql-5.5.33-linux2.6-x86_64 mysql `mysql' -> `mysql-5.5.33-linux2.6-x86_64' [root@mysql local]# cd mysql [root@mysql mysql]# chown -R mysql:mysql ./* [root@mysql mysql]# scripts/mysql_install_db --user=mysql --datadir=/databases/data [root@mysql mysql]# chown -R root ./*
四、爲mysql提供主配置文件
[root@mysql mysql]# cp support-files/my-large.cnf /etc/my.cnf #並修改此文件中thread_concurrency的值爲你的CPU個數乘以2,好比這裏使用以下行: thread_concurrency = 2 #另外還須要添加以下行指定mysql數據文件的存放位置: datadir = /databases/data
五、爲mysql提供sysv服務腳本
[root@mysql ~]# cd /usr/local/mysql [root@mysql mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld [root@mysql mysql]# chmod +x /etc/rc.d/init.d/mysqld [root@mysql mysql]# chkconfig --add mysqld [root@mysql mysql]# chkconfig --list mysqld mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off [root@mysql mysql]#
六、修改PATH環境變量,讓系統能夠直接使用mysql的相關命令
[root@mysql mysql]# vim /etc/profile.d/mysqld.sh export PATH=/usr/local/mysql/bin:$PATH #加入此行 [root@mysql mysql]# source /etc/profile.d/mysqld.sh
七、啓動服務並測試
[root@mysql mysql]# service mysqld start Starting MySQL... [ OK ] [root@mysql mysql]# mysql [root@mysql mysql]# mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.5.33-log MySQL Community Server (GPL) Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> #→成功登陸! #→爲root用戶設密碼,並刪除沒必要要的用戶 mysql> use mysql Database changed mysql> select host,user,password from user; +------------------+------+----------+ | host | user | password | +------------------+------+----------+ | localhost | root | | | mysql.maoqiu.com | root | | | 127.0.0.1 | root | | | ::1 | root | | | localhost | | | | mysql.maoqiu.com | | | +------------------+------+----------+ 6 rows in set (0.00 sec) mysql> DELETE FROM user WHERE User = '' ; #→刪除用戶爲空的條目 Query OK, 2 rows affected (0.00 sec) mysql> DELETE FROM user WHERE User = '::1' ; #→刪除IPV6相關的這個條目 Query OK, 0 rows affected (0.00 sec) mysql> select host,user,password from user; +------------------+------+----------+ | host | user | password | +------------------+------+----------+ | localhost | root | | | mysql.maoqiu.com | root | | | 127.0.0.1 | root | | +------------------+------+----------+ 3 rows in set (0.00 sec) mysql> FLUSH PRIVILEGES; #→作了操做必定要記得刷新數據庫 Query OK, 0 rows affected (0.01 sec) mysql> UPDATE user SET password = PASSWORD('guo.150019') WHERE password = ''; Query OK, 3 rows affected (0.01 sec) Rows matched: 3 Changed: 3 Warnings: 0 mysql> select host,user,password from user; +------------------+------+-------------------------------------------+ | host | user | password | +------------------+------+-------------------------------------------+ | localhost | root | *736C3B5499F163A84CCB2C0F176F3ABC93410FB5 | | mysql.maoqiu.com | root | *736C3B5499F163A84CCB2C0F176F3ABC93410FB5 | | 127.0.0.1 | root | *736C3B5499F163A84CCB2C0F176F3ABC93410FB5 | +------------------+------+-------------------------------------------+ 3 rows in set (0.00 sec) mysql> #→作了操做必定要記得刷新數據庫
八、爲了使用mysql的安裝符合系統使用規範,並將其開發組件導出給系統使用,這裏還須要進行以下步驟
#輸出mysql的man手冊至man命令的查找路徑: [root@mysql mysql]# vim /etc/man.config MANPATH /usr/local/mysql/man #→添加此行便可 #輸出mysql的頭文件至系統頭文件路徑/usr/include: [root@mysql mysql]# ln -sv /usr/local/mysql/include /usr/include/mysql #→經過簡單的建立連接實現 #輸出mysql的庫文件給系統庫查找路徑: [root@mysql mysql]# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf [root@mysql mysql]#ldconfig #→讓系統從新載入系統庫:
好了,個人MYSQL源碼編譯安裝告一段落!
4、編譯安裝PHP-5.4.26
好,回到咱們的httpd服務器上面去繼續安裝php...
注意開發環境的支持,除了按照上面安裝那些開發工具包以外咱們還須要添加幾個:
[root@www ~]# yum -y groupinstall "Desktop Platform Development" [root@www ~]# yum -y install bzip2-devel libmcrypt-devel
就好了,這裏我直接就開始解壓安裝了
一、解壓已獲取到的php-5.4.26軟件包,並安裝
[root@www ~]# cd /usr/src/php-5.4.26/ [root@www php-5.4.26]# ./configure--prefix=/usr/local/php --with-openssl --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib--with-libxml-dir=/usr --enable-xml --enable-sockets --with-apxs2=/usr/local/apache2/bin/apxs --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts #說明: --prefix=/usr/local/php #→指定其安裝位置 --with-openssl #→指定支持openssl功能 --with-mysql=mysqlnd #→指定與mysql服務器的連接 --with-mysqli=mysqlnd #→指定與mysql服務器的連接 --with-pdo-mysql=mysqlnd #→指定與mysql服務器的連接 --enable-mbstring #→支持多字節string --with-freetype-dir #→指定安裝的字體庫頭文件 --with-jpeg-dir #→指定jpeg類型的庫 --with-png-dir #→指定支持png類型的庫 --with-zlib #→支持互聯網上通用壓縮庫,先壓縮再傳送,減小帶寬 --with-libxml-dir=/usr #→指定xml庫文件的路徑 --enable-xml #→啓用支持xml功能 --enable-sockets #→啓用php支持套接字功能 --with-apxs2=/usr/local/apache2/bin/apxs #→基於apxs實現讓php編譯成apache模塊 --with-mcrypt #→支持額外的加密庫 --with-config-file-path=/etc #→指定php配置文件放置路徑 --with-config-file-scan-dir=/etc/php.d #→指定php配置文件的分段文件放置路徑 --with-bz2 #→指定支持壓縮庫 --enable-maintainer-zts #→當apache使用worker或event這兩個MPM,編譯時使用該選項 [root@www php-5.4.26]# make && make test && make install
說明:
(1)這裏爲了支持apache的worker或event這兩個MPM,編譯時使用了--enable-maintainer-zts選項。
(2)若是使用PHP5.3以上版本,爲了連接MySQL數據庫,能夠指定mysqlnd,這樣在本機就不須要先安裝MySQL或MySQL開發包了。mysqlnd從php 5.3開始可用,能夠編譯時綁定到它(而不用和具體的MySQL客戶端庫綁定造成依賴),但從PHP 5.4開始它就是默認設置了。
--with-mysql=mysqlnd
--with-mysqli=mysqlnd
--with-pdo-mysql=mysqlnd
[root@www php-5.4.26]# cp php.ini-production /etc/php.ini
三、編輯apache配置文件httpd.conf,以apache支持php
[root@www ~]# vim /etc/httpd2/httpd.conf #添加如下兩行 AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps #定位至DirectoryIndex index.html #修改成: #DirectoryIndex index.php index.html
四、添加測試文件,並測試
#我先在mysql服務器上面創建一個mysql的遠程管理賬號 [root@mysql ~]# mysql -uroot -pguo.150019 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 47 Server version: 5.5.33-log MySQL Community Server (GPL) Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> GRANT ALL PRIVILEGES ON *.* TO 'guomaoqiu'@'%' IDENTIFIED by 'guo.150019'; Query OK, 0 rows affected (0.00 sec) mysql> FLUSH PRIVILEGES; #→必定要記得刷新數據庫哦! Query OK, 0 rows affected (0.00 sec) mysql> use mysql; Database changed mysql> select host,user,password from user; +------------------+-----------+-------------------------------------------+ | host | user | password | +------------------+-----------+-------------------------------------------+ | localhost | root | *736C3B5499F163A84CCB2C0F176F3ABC93410FB5 | | mysql.maoqiu.com | root | *736C3B5499F163A84CCB2C0F176F3ABC93410FB5 | | 127.0.0.1 | root | *736C3B5499F163A84CCB2C0F176F3ABC93410FB5 | | % | guomaoqiu | *736C3B5499F163A84CCB2C0F176F3ABC93410FB5 | +------------------+-----------+-------------------------------------------+ 4 rows in set (0.00 sec) #在個人httpd服務器上面添加一個測試頁面,看PHP和MYSQL是否能正常工做了 [root@www ~]# cd /usr/local/apache2/htdocs/ [root@www htdocs]# mv index.html index.php [root@www htdocs]# vim index.php <?php $link = mysql_connect('172.16.41.2','guomaoqiu','guo.150019'); if ($link) echo "Connect to Mysql server success!"; else echo "Connect to Mysql server failure!"; mysql_close(); phpinfo(); ?> [root@www htdocs]# service httpd2 reload Reloading httpd: [root@www htdocs]#
我在瀏覽器裏面訪問一下:
OK!如今個人php和mysql都能工做了,下面我再把mysql的圖形化管理工具phpMyAdmin給安裝上
5、搭建phpMyadmin管理平臺以及wordpress我的博客系統
爲了phpMyadmin這個工具經過單獨的一個頁面服務的方式來訪問外,等下咱們還有一個博客系統也須要本身的文檔目錄因此我這裏將使用虛擬機的方式來搭建各個站點:
一、搭建phpMyadmin管理平臺
(1)在http服務器上關閉中心主機,啓用虛擬主機
#編輯主配置文件 [root@www ~]# vim /etc/httpd2/httpd.conf #定位到下面這行後將此行添加註釋 DocumentRoot "/usr/local/apache2/htdocs" #DocumentRoot "/usr/local/apache2/htdocs" #定位到下面這行後將此行取消註釋 #Include /etc/httpd2/extra/httpd-vhosts.conf Include /etc/httpd2/extra/httpd-vhosts.conf
(2)編輯虛擬主機文件啓用虛擬主機
[root@www ~]# vim /etc/httpd2/extra/httpd-vhosts.conf #我如今把中心主機也給定義到這裏面來 <VirtualHost *:80> ServerAdmin guomaoqiu@sina.com #→HTTP管理員郵箱 DocumentRoot "/usr/local/apache2/htdocs" #→中心主機的DocumentRoot ServerName www.maoqiu.com CustomLog "logs/access_log" combined ErrorLog "logs/error_log" <Directory "/usr/local/apache2/htdocs"> #→這裏定義的是要對該目錄受權,這是httpd2.4的大改變之一 Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> </VirtualHost>
(3)安裝phpMyadmin工具
[root@www ~]# mkdir /usr/local/apache2/htdocs/phpmyadm #→建立的根目錄 [root@www ~]# tar xf phpMyAdmlin-3.4.10.1-all-languages.tar.bz2 [root@www ~]# cp -r phpMyAdmin-3.4.10.1-all-languages/* /usr/local/apache2/htdocs/phpmyadm/ #→將該工具的全部文件拷貝至文至這個工具的根目錄 [root@www htdocs]# cp config.sample.inc.php config.inc.php [root@www htdocs]# vim config.inc.php #這行兩個冒號之間咱們須要一串cookie碼,隨機生成一個填在裏面 $cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */ $cfg['Servers'][$i]['host'] = '172.16.41.2'; #→這是mysql服務器地址 [root@www htdocs]# openssl rand -hex 10 #→經過openssl生成一串隨機碼 ddf5bab147f6cfaef020 $cfg['blowfish_secret'] = 'ddf5bab147f6cfaef020'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
(4)測試我phpMyadmin可否正常工做了
在瀏覽器中輸入http://www.maoqiu.com/phpmyadm
能夠訪問了...如今登陸一下試試
OK!phpMyadmin可使用了,下面我把wordpress搭建起來
二、搭建wordpress我的博客系統
(1)解壓安裝wordpress
[root@www ~]# unzip wordpress-3.3.1-zh_CN.zip [root@www ~]# cd wordpress #爲其提供配置文件 [root@www wordpress]# cp wp-config-sample.php wp-config.php #我以前不是說過這個博客系統須要另一臺虛擬主機來實現的嗎,因此下面建立一個做爲博客系統根的目錄 [root@www wordpress]# mkdir -p /web/blog/wordpress/htdocs #再將我如今所在目錄下的文件所有移動到那個目錄中去 [root@www wordpress]# mv ./* /web/blog/wordpress/htdocs/
(2)配置虛擬主機
[root@www ~]# vim /etc/httpd2/extra/httpd-vhosts.conf #添加如下內容: <VirtualHost *:80> DocumentRoot "/web/blog/wordpress/htdocs" #→這是wordpress博客系統的根目錄 ServerName www.wordguo.org #→這是它的主機名 CustomLog "logs/blog-access_log" combined #→訪問日誌 ErrorLog "logs/blog-error_log" #→錯誤日誌 <Directory "/web/blog/wordpress/htdocs"> #→定義對於這個文檔根目錄的一個訪問權限 Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> </VirtualHost> #保存退出!
(4)配置數據庫,咱們都知道博客系統的帳戶都是存在後端的數據庫中的,故此現須要建立一個博客的數據庫
[root@mysql ~]# mysql -uroot -pguo.150019 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 7 Server version: 5.5.33-log MySQL Community Server (GPL) Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> CREATE DATABASE worddb; #→這是博客系統的數據庫 Query OK, 1 row affected (0.00 sec) mysql> GRANT ALL PRIVILEGES ON worddb.* TO 'worduser'@'%' IDENTIFIED BY 'guo.150019'; #→我受權worduser用戶對該數據庫具備管理權限,而且它能夠在任何遠程主機上登錄該數據庫操做 Query OK, 0 rows affected (0.00 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | | worddb |#→已經建立好了 +--------------------+ 5 rows in set (0.00 sec) mysql> FLUSH PRIVILEGES; #→千萬要記得刷新數據庫 Query OK, 0 rows affected (0.00 sec) mysql>
(3)修改wordpress配置文件
[root@www ~]# vim /web/blog/wordpress/htdocs/wp-config.php #修改下面四項便可 define('DB_NAME', 'worddb'); #→WordPress 數據庫的名稱 define('DB_USER', 'worduser'); #→MySQL 數據庫用戶名 define('DB_PASSWORD', 'guo.150019'); #→MySQL 數據庫密碼 define('DB_HOST', '172.16.41.2'); #→MySQL 主機 #保存退出!
(3)從新加載配置文件
[root@www ~]# service httpd2 reload Reloading httpd: [root@www ~]#
(4)測試,在客戶端瀏覽器中輸入http://www.wordpress.org 便可!
(注意,我這裏並無搭建DNS,故此處的名稱解析將在客戶端hosts文件中定義)
OK!看到出來了吧,此時我已經把我的博客的資料填寫好了直接點擊「安裝wordpress」
點擊「登陸」 輸入用戶名和密碼,再點「登陸」
OK! 我登陸以後由於第一次安裝wordpress這個系統,直接就到後臺管理頁面了,我點擊首頁便可!
6、總結
以上實驗介紹了httpd、php以及mysl的編譯安裝,構建了一個簡單的LAMP平臺,實現了HTTP+Apache+Mysql+Php+Wordpress/Phpmyadmin的一個簡易場景;在實驗過程中也由於本身的馬虎有許多配置都錯了 ,不得不反覆的測試,反覆的修改,最終才搭建出來上面這樣的環境;
在整個實驗過程當中用到的知識點有如下幾點:
一、當客戶端對httpd服務器發起了一個Php腳本請求時,咱們的httpd服務器自身不能解析執行該Php腳本文件的,因而它將此請求交予Php解釋環境來執行;
二、httpd除了基於CGI和Php通訊外,還有多種方式(後面會有實驗案例);
三、httpd是模塊化的,有core+module構成,咱們能夠將Php編譯成httpd的一個模塊,讓它在httpd啓動的同時加載該模塊,此時就成爲了httpd的一個子進程、子功能來運行;
四、若是使用PHP5.3以上版本,爲了連接MySQL數據庫,能夠指定mysqlnd,這樣在本機就不須要先安裝MySQL或MySQL開發包了。mysqlnd從php5.3開始可用,能夠編譯時綁定到它(而不用和具體的MySQL客戶端庫綁定造成依賴),但從PHP 5.4開始它就是默認設置了。編譯php時,若是須要驅動mysql,使用--with-mysql=mysqlnd等幾個選項;
五、客戶端與httpd之間基於HTTP/HTTPS協議通訊、httpd與Php通訊時它已經成爲了httpd的一部分,在其內部就完成工做、而Php與Mysql之間通訊則經過API基於mysql協議來實現;
六、若是mysql與其餘應用程序不在一主機上那就須要受權具備遠程鏈接訪問權限的mysql用戶賬號;
OK!自此爲止...下篇將介紹 分離式LAMP+NFS的平臺搭建小生能力有限,各位大牛多多指點!