您好,登錄后才能下訂單哦!
LAMP 是指一組通常一起使用來運行動態網站或者服務器的 自由軟件 名稱首字母縮寫:
1、Linux;操作系統;
2、Apache;網頁服務器;
3、 MariaDB或MySQL,數據庫管理系統(或者數據庫服務器);
4、PHP、Perl或Python,腳本語言;
實驗要求:
(1) 三者分離于兩臺或三臺主機;
(2) 一個虛擬主機用于提供phpMyAdmin;另一個虛擬主機用于提供wordpress;
(3) xcache
(4) 嘗試mpm為非prefork機制;
IP | 系統 | 軟件 |
192.168.1.102 | CentOS 6.7 | httpd(event) |
192.168.1.103 | CentOS 6.7 | php-fpm,xcache |
192.168.1.104 | CentOS 6.7 | mariadb |
CentOS 6:
PHP-5.3.2-:默認不支持fpm機制;需要自行打補丁并編譯安裝;
httpd-2.2:默認不支持fcgi協議,需要自行編譯此模塊;
解決方案:編譯安裝httpd-2.4,apr,apr-util版本為1.4+,php-5.3.3+;
實驗安裝版本:httpd-2.4.10 + apr-1.5.0+ apr-util-1.5.3 + php-5.4.40 + xcache-3.2.0 + mariadb-5.5.46
一、192.168.1.102主機,編譯安裝httpd-2.4.10 + apr-1.5.0 + apr-util-1.5.3
httpd-2.4.10需要較新版本的apr和apr-util,因此需要事先對其進行升級,這里使用源代碼編譯安裝。
apr和apr-util的包下載地址:https://archive.apache.org/dist/apr/
httpd程序源碼包下載地址:https://archive.apache.org/dist/httpd/
1、安裝開發環境包組和開發程序包
# hwclock -s //將軟件時間同步為硬件時間
# yum grouplist //查看包組
# yum groupinstall "Development Tools" "Server Platform Development" -y //開發環境包組
# yum install pcre-devel -y //httpd-2.4.10編譯過程要依賴于pcre-devel軟件包
2、編譯安裝apr
# tar xf apr-1.5.0.tar.bz2
# cd apr-1.5.0
# ./configure --prefix=/usr/local/apr
# make && make install
3、 編譯安裝apr-util
# tar xf apr-util-1.5.3.tar.bz2
# cd apr-util-1.5.3
# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
# make && make install
4、編譯安裝并配置httpd-2.4.10
4.1 編譯安裝
# rpm -qa httpd
httpd-2.2.15-45.el6.centos.x86_64
# yum remove httpd -y //卸載之前rpm包安裝的httpd
# tar xf httpd-2.4.10.tar.bz2
# cd httpd-2.4.10
# ./configure --prefix=/usr/local/apache24 --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-cgid --enable-rewrite --enable-modules=most --enable-mods-shared=most --enable-mpms-shared=all --with-mpm=event --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
# make && make install
//sysconfdir=/etc/httpd24 指定配置文件安裝位置
//enable-so 支持動態共享模塊(DOS),如果沒有這個模塊PHP將無法與apache結合工作
//enable-ssl 支持ssl功能
//enable-proxy 支持代理
//enable-proxy-fcgi 支持fcgi
// enable-cgi 支持cgi
//enable-rewrite 支持URL重寫
//enable-modules=most 啟用哪些模塊
//enable-mpms-shared=all 支持多道處理模塊
//with-mpm=event 設定默認模塊為prefork模塊
//with-zlib 支持壓縮庫,便于頁面壓縮后的發送和接收,互聯網傳播時可節約帶寬
//with-pcre 支持cre擴展的正則表達式,支持更強大的正則表達式分析功能
4.2 修改httpd.pid路徑,默認安裝時的路徑在/usr/local/apache24/logs
# /usr/local/apache24/bin/apachectl start
# /usr/local/apache24/bin/apachectl stop
# vim /etc/httpd24/httpd.conf
pidfile "/var/run/httpd.pid" //在ServerRoot "/usr/local/apache24" 下面添加這一行
# /usr/local/apache24/bin/apachectl start
# ls /var/run //發現httpd.pid出現
4.3 修改PATH環境變量,讓系統可以直接使用apachectl的相關命令
# vim /etc/profile.d/httpd24.sh
export PATH=/usr/local/apache24/bin:$PATH
編輯配置文件(全局有效且重啟shell后依然有效)此時,環境變量不會立即生效,但是對新登錄的用戶有效,然后新用戶登錄進行驗證
4.4、提供SysV服務腳本/etc/rc.d/init.d/httpd24
# vim /etc/rc.d/init.d/httpd24 //內容如下
#!/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/httpd24/httpd.conf
# config: /etc/sysconfig/httpd24
# pidfile: /var/run/httpd.pid
# Source function library.
. /etc/rc.d/init.d/functions
if [ -f /etc/sysconfig/httpd24 ]; then
. /etc/sysconfig/httpd24
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/apache24/bin/apachectl
httpd=${HTTPD-/usr/local/apache24/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
而后為此腳本賦予執行權限:
# chmod +x /etc/rc.d/init.d/httpd24
加入服務列表:
# chkconfig --add httpd24
開機自動啟動
# chkconfig httpd24 on
啟動服務
# service httpd24 start
# ss -tnl
附加:這里httpd編譯安裝時指定MPM模塊類型為event,想要切換MPM中的類型可以編輯主配置文件即可。
例如:改為prefork模型
# vim /etc/httpd24/httpd.conf //編輯生成的主配置文件
Include /etc/httpd24/extra/httpd-mpm.conf //去掉注釋符,啟用extra模塊
# LoadModule mpm_event_module modules/mod_mpm_event.so //注釋掉當前模型
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so //改成要使用的MPM模塊類型
重啟httpd服務后發現MPM模塊類型切換為prefork模型
# httpd -M
二、192.168.1.104主機,通用二進制格式安裝mariadb-5.5.46
1、下載加壓mariadb
下載平臺對應的mysql版本至本地,下載地址為https://downloads.mariadb.com/archives/
# tar xf mariadb-5.5.46-linux-x86_64.tar.gz -C /usr/local
# cd /usr/local/
# ln -sv mariadb-5.5.46-linux-x86_64/ mysql
# cd mysql
2、創建用戶以安全方式運行進程
# groupadd -r -g 306 mysql
# useradd -g 306 -r -u 306 mysql
# chown -R mysql:mysql /usr/local/mysql/*
3、準備數據存放的文件系統
新建一個邏輯卷,并將其掛載至特定目錄即可。這里假設其邏輯卷的掛載目錄為/mydata,而后需要創建/mydata/data目錄做為mysql數據的存放目錄。
# mkdir /mydata/data -pv
# chown -R mysql.mysql /mydata/data
# chmod 750 /mydata/data
4、初始化mysql-5.5.46
# cd /usr/local/mysql
# scripts/mysql_install_db --user=mysql --datadir=/mydata/data
5、為mysql提供主配置文件
# cd /usr/local/mysql
# cp support-files/my-large.cnf /etc/my.cnf
# vim /etc/my.cnf
# cat /proc/cpuinfo //查看CPU個數
并修改此文件中thread_concurrency的值為你的CPU個數乘以2,比如這里使用如下行:
thread_concurrency = 2
另外還需要在[mysqld]下添加數據文件的存放位置:
datadir = /mydata/data
6、為mysql提供sysv服務腳本
# cd /usr/local/mysql
# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
# chmod +x /etc/rc.d/init.d/mysqld
添加至服務列表:
# chkconfig --add mysqld
# chkconfig mysqld on
7、啟動mysql服務
# service mysqld start
8、修改PATH環境變量,讓系統可以直接使用mysql的相關命令
此時必須指明全路徑才可以進入mysql命令行界面,想要直接使用mysql進入命令行,需要編輯配置文件(全局有效且重啟shell后依然有效,對當前shell無效,需要登出再登入)
# vim /etc/profile.d/mysql.sh
export PATH=/usr/local/mysql/bin:$PATH
為了使用mysql的安裝符合系統使用規范,并將其開發組件導出給系統使用,這里還需要進行如下步驟:
9、輸出mysql的man手冊至man命令的查找路徑
編輯/etc/man.config,添加如下行即可:
MANPATH /usr/local/mysql/man
10、輸出mysql的頭文件至系統頭文件路徑/usr/include
# ln -sv /usr/local/mysql/include /usr/include/mysql
11、輸出mysql的庫文件給系統庫查找路徑
# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
12、系統重新載入系統庫
# ldconfig
13、創建和授權wordpress和phpMyAdmin用戶
MariaDB [(none)]> CREATE DATABASE wpdb; //創建wordpress數據庫
MariaDB [(none)]> GRANT ALL ON wpdb.* TO wpuser@'192.168.1.%' IDENTIFIED BY 'wppass'; //授權wordpress用戶
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> CREATE DATABASE pma; //創建phpMyAdmin數據庫
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> GRANT ALL ON pma.* TO pmauser@'192.168.1.%' IDENTIFIED BY 'pmapass';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
三、192.168.1.103主機,編譯安裝php-5.4.40
1、解決依賴關系
自行配置好yum源(系統安裝源及epel源)后執行如下命令:
# yum groupinstall "Server Platform Development" "Development tools" -y
# yum install bzip2-devel libmcrypt-devel libxml2-devel mhash mhash-devel libmcrypt-devel libmcrypt -y
2、編譯安裝php-5.4.40
下載源碼包至本地目錄,下載位置 http://mirrors.sohu.com/php/。
# tar xf php-5.4.40.tar.bz2
# cd php-5.4.40
# ./configure --prefix=/usr/local/php --with-openssl --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --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 --enable-maintainer-zts
要想支持fpm時,需要去掉 --with-apxs2=/usr/local/apache/bin/apxs , 添加 --enable-fpm ,注意兩者不能同時存在。
說明:如果使用PHP5.3以上版本,為了鏈接MySQL數據庫,可以指定mysqlnd,這樣在本機就不需要先安裝MySQL或MySQL開發包了。mysqlnd從php 5.3開始可用,可以編譯時綁定到它(而不用和具體的MySQL客戶端庫綁定形成依賴),但從PHP 5.4開始它就是默認設置了。
# ./configure --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd
# make -j 4 && make install
3、為php提供配置文件:
# cp php.ini-production /etc/php.ini
4、配置php-fpm
為php-fpm提供SysV init腳本,并將其添加至服務列表:
# cp sapi/fpm/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
為php-fpm提供配置文件:
# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
編輯php-fpm的配置文件:
# vim /usr/local/php/etc/php-fpm.conf
配置fpm的相關選項為你所需要的值,并啟用pid文件:
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 8
pid = run/php-fpm.pid //啟用
listen = 192.168.1.103:9000
listen.allowed_clients = 192.168.1.102
然后就可以啟動php-fpm了,查看9000端口。
# service php-fpm start
四、192.168.1.103主機,安裝xcache,為php加速:(可以支持php-5.4的xcache版本必須為2.0+)
下載地址 https://xcache.lighttpd.net/pub/Releases
1、編譯安裝
# tar xf xcache-3.2.0.tar.bz2
# cd xcache-3.2.0
# /usr/local/php/bin/phpize
# ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config
# make && make install
安裝結束時,會出現類似如下行:
2、編輯php.ini,整合php和xcache:
首先將xcache提供的樣例配置導入php.ini
# mkdir /etc/php.d
# cp /root/xcache-3.2.0/xcache.ini /etc/php.d
編輯配置文件/etc/php.d/xcache.ini
# vim /etc/php.d/xcache.ini
在[xcache-common]開下,修改為如下行:
extension = /usr/local/php/lib/php/extensions/no-debug-zts-20100525/xcache.so
注意:如果php.ini文件中有多條extension指令行,要確保此新增的行排在第一位。
五、192.168.1.102主機,配置httpd-2.4.10
1、編輯httpd主配置文件,關閉中心主機,啟用虛擬主機配置文件,啟用httpd的相關模塊
# vim /etc/httpd24/httpd.conf
#DocumentRoot "/usr/local/apache24/htdocs" //注釋掉這一行
Include /etc/httpd24/extra/httpd-vhosts.conf //找到并啟用這一行
LoadModule log_config_module modules/mod_log_config.so //確認這一行啟用,虛擬主機 配置文件中會用到mod_log_config
在Apache httpd 2.4以后已經專門有一個模塊針對FastCGI的實現,此模塊為mod_proxy_fcgi.so,它其實是作為mod_proxy.so模塊的擴充,因此,這兩個模塊都要加載
LoadModule proxy_module modules/mod_proxy.so //啟用
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so //啟用
添加如下二行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
定位至DirectoryIndex index.html
修改為:
DirectoryIndex index.php index.html
2、編輯虛擬主機的配置文件
1)配置虛擬主機的配置文件使虛擬主機支持使用fcgi
# vim /etc/httpd24/extra/httpd-vhosts.conf
修改如下
2)為虛擬主機提供默認訪問頁面和日志存放目錄
# mkdir /var/log/httpd24 //創建的日志存放位置
# mkdir /apps/vhosts/{b.net,c.org} -pv //httpd主機和php主機都需要創建訪問路徑
# vim /apps/vhosts/b.net/index.php //php主機上創建測試頁
# vim /apps/vhosts/c.org/index.php //php主機上創建測試頁
3)重啟服務,物理主機瀏覽器測試
# httpd -t //習慣做配置語法測試
Syntax OK
# service httpd24 restart
然后windows主機加192.168.1.102主機名解析
瀏覽器訪問www.b.net和www.c.og
六、192.168.1.103主機,為虛擬主機安裝配置wordpress和phpMyAdmin
1、 安裝wordpress //php主機
1)下載、配置wordpress
# cd /apps/vhosts/b.net/
# ls //下載wordpress壓縮包(下載地址:https://wordpress.org/download/ )
wordpress-4.3.1-zh_CN.zip
# unzip wordpress-4.3.1-zh_CN.zip
# cd wordpress/
# mv wp-config-sample.php wp-config.php
# vim wp-config.php
# scp -r /apps/vhosts/b.net/wordpress root@192.168.1.102:/apps/vhosts/b.net/ //此時需要把php主機的wordpress文件放到httpd主機的頁面訪問路徑下
2)httpd主機
# httpd -t //測試語法
Syntax OK
# service httpd24 restart
3)windows瀏覽器訪問 www.b.net/wordpress,按之前授權的信息填寫相關內容。
2、安裝phpMyAdmin
1)下載解壓phpMyAdmin
# cd /apps/vhosts/c.org
# ls
phpMyAdmin-4.4.14.1-all-languages.zip //下載phpMyAdmin壓縮包(https://www.phpmyadmin.net/downloads/)
# unzip phpMyAdmin-4.4.14.1-all-languages.zip
# mv phpMyAdmin-4.4.14.1-all-languages pma
# cd pma
# mv config.sample.inc.php config.inc.php
2)配置phpMyAdmin
# openssl rand -base64 18 //生成一段隨機數
fUDTA121uzwkoWMr4m4DGKQv
# vim config.inc.php //編輯配置文件
# scp -r /apps/vhosts/c.org/pma root@192.168.1.102:/apps/vhosts/c.org // 此時需要把php主機的pma文件放到httpd主機的頁面訪問路徑下
3)httpd主機
# httpd -t //測試語法
Syntax OK
# service httpd24 restart
4)windows瀏覽器訪問 www.c.org/pma,按之前授權的信息填寫相關內容。
至此看似浩瀚的lamp編譯工程結束,如果哪里有寫的不對甚至欠缺的地方,希望大牛們批評指出。之前以為一臺主機安裝lamp比較簡單,現在才明白,主要是搞清楚他們之間的關系,幾臺主機安裝都是相通的。個人總結:配置系統時,需要屢清楚各個程序之間的關系,遇到困難需要結合相應的日志文件查看哪里出錯,配置文件時需要做好必要的備份,配置完成后可以語法測試的需要測試一下,不要盲目的百度和問別人,要自己動腦筋思考。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。