LAMP即Linux+Apache+MySQL|MariaDB+PHP組合實現動態php站點搭建的實現方式,在實現apache做爲WEB服務器的狀況下,Apache自己只負責處理靜態頁面相關的內容,如一段文字、一張圖片、一張表格等靜態內容,若是想要實現提供動態頁面的功能,那麼就得結合PHP或者python等程序的解釋器才行。php
一次客戶端和服務器的交互去掉其創建通訊的過程可大體要通過以下步驟,首先服務器端接收到客戶端發送來的請求,而後分析其中所包含的內容,若有多少動態頁面,有多少靜態頁面,而後把靜態頁面發送給後端的解釋器,或者調用相關的解釋模塊來執行動態內容。因爲解釋器負責解釋的動態內容是一個程序,而程序的執行每每就須要輸入和輸出,輸入則須要數據,因此當解釋器須要數據時又向數據庫提出請求,從數據庫中提取數據,而後解釋器完成程序的執行反饋給apache服務器,最後由apache把執行的結果發送給客戶端,從而完成一次響應過程。python
搭建LAMP平臺,能夠以多種方式,能夠把PHP編譯爲Apache的模塊,也能夠以fpm的機制,讓PHP工做爲一個獨立的守護進程,在此將分別以這兩種方式進行演示。mysql
Modules方式實現linux
準備環境:sql
主機數據庫 |
IPapache |
所安裝平臺vim |
A後端 |
192.168.2.115瀏覽器 |
Apache+php |
B |
192.168.2.116 |
MySQL |
實驗步驟:
配置主機A
1、環境準備
首先在主機A上進行以下配置
確保網絡通暢且YUM倉庫配置正確後,安裝編譯環境
[root@bogon apr-1.5.0]# yum groupinstall "Development Tools" "Server Platform"
2、安裝Apache:
下載以下源碼包:apr-1.5.0.tar.bz2 apr-util-1.5.3.tar.bz2 httpd-2.2.29.tar.gz
1、首先安裝apr
解壓apr-1.5.0.tar.bz2後切換至目錄,依次執行如下步驟
[root@bogon apr-1.5.0]# ./configure --prefix=/usr/local/apr [root@bogon apr-1.5.0]# make &&make install
2、安裝apr-util
解壓後切換至apr-util目錄
[root@bogon apr-util-1.5.3]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr [root@bogon apr-util-1.5.3]# make && make install
3、安裝httpd
[root@bogon httpd-2.2.29]# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd24 --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=all --with-mpm=event --with-apxs2=/usr/local/apache/bin/apxs
[root@bogon httpd-2.2.29]# make && make install
4、爲http服務指定進程文件,併爲其提供服務腳本
(1)指定進程文件則在配置文件路徑下編輯配置文件(當前環境的配置文件路徑爲/etc/httpd24/httpd.conf)添加以下一行
PidFile "/var/run/httpd.pid"
(2)爲httpd服務提供服務腳本
新建文件/etc/rc.d/init.d/httpd,其內容以下
#!/bin/bash # # httpd Startup script for the Apache HTTP Server # # chkconfig: - 85 15 # description: Apache is a World Wide Web server. It is used to serve \ # HTML files and CGI. # processname: httpd # config: /etc/httpd/conf/httpd.conf # config: /etc/sysconfig/httpd # pidfile: /var/run/httpd.pid # 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"} # This will prevent initlog from swallowing up a pass-phrase prompt if # mod_ssl needs a pass-phrase from the user. INITLOG_ARGS="" # Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server # with the thread-based "worker" 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 short-form for messages. apachectl=/usr/local/apache/bin/apachectl httpd=${HTTPD-/usr/local/apache/bin/httpd} 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 = 0 ] && touch ${lockfile} return $RETVAL } stop() { echo -n $"Stopping $prog: " killproc -p ${pidfile} -d 10 $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=$? 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 } # See how we were called. case "$1" in start) start ;; stop) stop ;; status) status -p ${pidfile} $httpd RETVAL=$? ;; restart) stop start ;; 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 $RETVAL
(3)把apache的安裝路徑加入到PATH環境變量中,方便查找
在/etc/profile.d目錄下新建http.sh文件,並提供如下內容,而後重讀配置文件
export PATH=/usr/local/php/bin:/usr/local/apache/bin:$PATH
修改上一步httpd24文件權限,
[root@bogon httpd-2.2.29]# chmod +x /etc/rc.d/init.d/httpd24
(4)重啓服務器測試
3、安裝php
1.解壓php包後切換目錄至php目錄
[root@bogon php-5.4.40]# ./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 --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts --with-config-file-path=/usr/local/php/
[root@bogon php-5.6.8]# make && make install
二、調整apache參數,
(1)在配置文件裏(/etc/httpd24/httpd.conf)加入如下參數
(2)定位至DirectoryIndex並添加以下項
(3)爲php提供配置文件
[root@bogon php-5.6.8]# cp php.ini-production /etc/php/php.ini# : /etc/php 目錄須要事先建立
(4)提供測試頁面
切換目錄至:/usr/local/apache/htdocs目錄。新建文件,其內容以下所示:
(5)重啓服務,測試
配置主機B
安裝MairaDB,在此使用通用二進制格式安裝
1.下載解壓MairaDB
解壓後的目錄下文件詳解:
bin:二進制文件存放位置
COPYING.LESSER
EXCEPTIONS-CLIENT
INSTALL-BINARY
man:幫助文件
README:安裝指南
share:共享文件路徑
support-files:提供支持功能的文件
COPYING
data:默認數據存放位置
include:頭文件
lib:庫文件存放位置
mysql-test:測試組件
scripts:補充性樣例性腳本
sql-bench:壓力測試所用
2.爲MairaDB提供數據存放文件,運行所用用戶和組,並修改相關權限
[root@localhost mariadb-5.5.40-linux-x86_64]# useradd -r -g 300 mysql [root@localhost mariadb-5.5.40-linux-x86_64]# mkdir /data/mydata -pv [root@localhost mariadb-5.5.40-linux-x86_64]# chown -R mysql:mysql /data/mydata/
3.爲MariaDB提供配置文件:查找順序:/etc/my.cnf-->/etc/mysql/my.cnf-->~/.my.cnf
在support-files目錄下提供了相關配置文件樣例
my-huge.cnf:內存較大文件所用
[root@localhost mariadb-5.5.40-linux-x86_64]# mkdir /etc/mysql [root@localhost mariadb-5.5.40-linux-x86_64]# cp my-large.cnf /etc/mysql/my.cnf
修改配置文件/etc/mysql/my.cnf
在[mysqld]段下添加以下內容
datadir = /data/mydata/
innodb_file_per_table = on
4.初始化mysql
在解壓目錄下的scripts目錄下有個初始化腳本mysql_install_db
[root@localhost mariadb-5.5.40-linux-x86_64]# ./scripts/mysql_install_db --datadir=/data/mydata/ --user=mysql --skip-name-resolve
5.爲MariaDB提供服務文件,並修改環境變量PATH
[root@localhost mariadb-5.5.40-linux-x86_64]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld [root@localhost mariadb-5.5.40-linux-x86_64]# chmod +x /etc/rc.d/init.d/mysqld
在/etc/profile.d/目錄下新建文件mysql.sh
添加以下內容
export /usr/local/mysql/bin:$PATH
[root@localhost mariadb-5.5.40-linux-x86_64]# . /etc/profile.d/mysql.sh :重讀配置文件
複製源碼包到/usr/local/並改名爲mysql
[root@localhost tmp]# cp mariadb-5.5.40-linux-x86_64 /usr/local/mysql -r
6、重啓服務並測試
七、新建數據庫discuz,並受權主機A可使用test用戶,helloword密碼來連接
(1)新建數據庫
mysql> CREATE DATABASE discuz;
(2)受權
(3)關閉防火牆,在主機A上測試
(4).新建mysql測試頁面。在/usr/local/apache/htdocs目錄下新建mysql.php,其內容以下
重啓服務器測試則沒法顯示頁面有以下提示:
致使此緣由是由於沒有安裝相關的mysql擴展,接下來就將演示安裝mysql擴展過程。
2.添加mysql擴展
安裝mysql客戶端,在此直接用yum安裝便可,
[root@bogon php-5.4.40]# yum install mysql mysql-devel -y
切換目錄至php源碼釋放目錄下的ext目錄下的mysql目錄,
[root@bogon php-5.4.40]# cd /tmp/by/php-5.4.40/ext/mysql
執行命令
[root@bogon mysql]# /usr/local/php/bin/phpize ,出現以下提示信息
進行mysql擴展編譯
[root@bogon mysql]# ./configure --with-php-config=/usr/local/php/bin/php-config --with-mysql [root@bogon mysql]# make && make install
切換到目錄/usr/local/php/lib/php/extensions/no-debug-zts-20100525下用ls查看,若是出現mysql.so文件,則編譯成功
修改php配置文件,增長以下一行
重啓httpd測試
而後關閉主機B上的MySQL服務測試
此時平臺搭建成功
4、安裝ucenter、discuz
1.下載 UCenter_1.5.2_SC_GBK.zip和Discuz_X2_SC_GBK.zip。解壓
[root@localhost htdocs]# unzip -d /discuz Discuz_X2_SC_GBK.zip [root@localhost htdocs]# unzip -d /ucenter UCenter_1.5.2_SC_GBK.zip [root@localhost htdocs]# mkdir ucenter bbs
2.移動文件到相關目錄
[root@localhost htdocs]# mv /discuz/upload/ ./bbs/ [root@localhost htdocs]# mv /ucenter/upload/ ./ucenter/
3.更改相關文件的權限
[root@localhost htdocs]# cd ucenter/ [root@localhost ucenter]# chown -R daemon ./data/ [root@localhost ucenter]# cd ../bbs/ [root@localhost bbs]# chown -R daemon *
4.修改php配置文件,在第一個short_open_tag的值改成On,表示啓用短標籤功能
[root@localhost htdocs]# vim /usr/local/php/php.ini
5.重啓apache服務器安裝測試
[root@localhost bbs]# service httpd24 restart
在物理機的瀏覽器中輸入如下地址http://192.168.2.115/ucenter/install/index.php若出現如下界面。則成功
根據提示安裝
安裝
進入後臺界面
後臺
Ucenter至此安裝成功下面安裝discuz
6.安裝discuz
在瀏覽器輸入url:http://192.168.2.115/bbs/install
根據提示安裝便可
安裝後測試
至此discuz論壇基於LAMP安裝成功