項目實施(如圖所示):
用項目實現LAMP
1、Web1上配置NFS服務,導出/www/htdocs以讀寫方式給Web2訪問;(不能給其它主機以訪問權限)
解說:web1的ip是:172.16.7.1 web2的ip是172.16.7.2
安裝:
#yum install nfs-utils-1.0.9-42.el5
開啓服務:
#service nfs start
# vim /etc/exports
/www/htdocs 172.16.7.2(rw)
保存退出。
mkdir -pv /www/htdocs 創建/www/htdocs 目錄
給這個目錄的其他用戶寫權限,以讓web2可以進行操作:
#chmod +w /www/htdocs
#service nfs restart
172.16.7.2:
showmount -e 172.16.7.1 //查看對應服務器上共享了哪些服務
mkdir /www/htdcs
service nfs restart
2、Web1上配置MySQL-5.5.20,要求:
配置mysql-5.5.20
準備數據存放的文件系統
(1)新建一個邏輯卷,並將其掛載至特定目錄即可。大致過程爲大家簡說一下:
fdisk /dev/sda 建一個分區,大概2G 即可,類型要是8e的。如 /dev/sda5
先創建物理卷: pvcreate /dev/sda5
再創建物理卷組: vgcreate myvg /dev/sda5
最後創建邏輯卷: lvcreate -L 1G -n lv1 /dev/myvg //指定大小爲1G,名字爲lv1
然後格式化: mke2fs -j /dev/myvg/lv1
這裏假設其邏輯卷的掛載目錄爲/www/htdocs,則# mount /dev/myvg/lv1 /mydata/htdocs 如果想開機自啓動,則可在/etc/fstab內添加內容。
而後需要創建/www/htdocs/mysql目錄做爲mysql數據的存放目錄。
# mkdir /www/htdocs/mysql
(2)、新建系統用戶以安全方式運行進程:
# groupadd -r mysql
# useradd -g mysql -r -s /sbin/nologin -M -d /www/htdocs/mysql mysql
# chown -R mysql:mysql /www/htdocs/mysql 將/www/htdocs/mysql目錄的屬主屬組改爲 mysql
(3)、安裝並初始化mysql-5.5.20
首先下載平臺對應的mysql版本至本地,這裏是32位平臺,因此,選擇的爲mysql-5.5.20-linux2.6-i686.tar.gz,
# tar xf mysql-5.5.20-linux2.6-i686.tar.gz -C /usr/local //指定解壓至 /usr/local目錄下。
# cd /usr/local/
# ln -sv mysql-5.5.20-linux2.6-i686 mysql //爲mysql-5.5.20-linux2.6-i686創建一個軟鏈接
# cd mysql
# chown -R mysql:mysql . //將/mysql 目錄下的所有文件及目錄的屬主及屬組均改爲mysql.
# scripts/mysql_install_db --user=mysql --datadir=/www/htdocs/mysql // 指定其數據存放目錄和使用的用戶
# chown -R root . //將/mysql 目錄下的所有文件及目錄的屬主改回爲root
(4)、爲mysql提供主配置文件:
# cd /usr/local/mysql
# cp support-files/my-large.cnf /etc/my.cnf //爲mysql提供配置文件
並修改此文件中thread_concurrency的值爲你的CPU個數乘以2,比如這裏使用如下行:
# vim /etc/my.cnf
添加thread_concurrency = 2
另外還需要添加如下行指定mysql數據文件的存放位置:
datadir = /www/htdocs/mysql
(5)、爲mysql提供sysv服務腳本:
# cd /usr/local/mysql
# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
添加至服務列表:
# chkconfig --add mysqld
# chkconfig mysqld on //開機自啓動服務
而後就可以啓動服務測試使用了。
# service mysqld start
爲了使用mysql的安裝符合系統使用規範,並將其開發組件導出給系統使用,這裏還需要進行如下步驟:
(6)、輸出mysql的man手冊至man命令的查找路徑:
編輯/etc/man.config,添加如下行即可:
MANPATH /usr/local/mysql/man
(7)、輸出mysql的頭文件至系統頭文件路徑/usr/include:
這可以通過簡單的創建鏈接實現:
# ln -sv /usr/local/mysql/include /usr/include/mysql
(8)、輸出mysql、httpd的庫文件給系統庫查找路徑:
# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
而後讓系統重新載入系統庫:
# ldconfig
(9)、修改PATH環境變量,讓系統可以直接使用mysql和httpd的相關命令。
# vim /etc/profile
添加 PATH=$PATH:/usr/local/mysql/bin
# export PATH=$PATH:/usr/local/mysql/bin
# source /etc/profile
1)新建dzuser用戶,使其通過Web1或Web2主機都可以訪問此數據庫,並且其對discuz數據庫中的所有對象有全部訪問權限;
mysql -p
123456
grant all privileges on discuz.* to dzuser@localhost identified by 'ling'; //新建一個本地的dzuser用戶
grant all privileges on discuz.* to [email protected] identified by 'ling'; //新建一個web2的dzuser用戶
2)刪除兩個匿名用戶,併爲所有名稱爲root的用戶設置密碼;
use mysql
select * from user\G;
drop user ''@localhost;
drop user ''@localhost.localdomain;
set password for [email protected]=password('123456');
set password for [email protected]=password('123456');
set password for root@'::1'=password('123456');
3、Web1上編譯安裝httpd-2.4.1和php-5.3.10,並配置LAMP平臺可以正常工作;要求:
編譯安裝httpd-2.4.1
(1)、首先要解決依賴關係
httpd-2.4.1需要較新版本的apr和apr-util,因此需要事先對其進行升級。升級方式有兩種,一種是通過源代碼編譯安裝,一種是直接升級rpm包。這裏選擇使用後一種方式進行。
我們學習時使用的rpm包的下載路徑爲ftp://172.16.0.1/pub/Sources/new_lamp,而如果有需要的話,可以在rpmfind.net和rpm.pbone.net等rpm包的免費網站下載。共需要如下4個軟件包:
apr-1.4.6-1.i386.rpm
apr-devel-1.4.6-1.i386.rpm
apr-util-1.4.1-1.i386.rpm
apr-util-devel-1.4.1-1.i386.rpm
下載完成之後,使用“rpm -Uvh”進行升級即可。
如:# rpm -Uvh apr-1.4.6-1.i386.rpm
# rpm -Uvh apr-devel-1.4.6-1.i386.rpm
# rpm -Uvh apr-util-1.4.1-1.i386.rpm
# rpm -Uvh apr-util-devel-1.4.1-1.i386.rpm
另外,httpd-2.4.1編譯過程也要依賴於pcre-devel軟件包,需要事先安裝。此軟件包是系統光盤自帶的,因此,找到並安裝即可。
如:# yum install pcre-devel -y (首先要配置好yum源,並安裝好“Development Tools” “Development Libraries”包組。)
(2)、編譯安裝httpd-2.4.1
首先下載httpd-2.4.1到本地,而後執行如下命令進行編譯安裝過程:
# tar xf httpd-2.4.1.tar.bz2 將其解壓至本目錄,也可以用-C 指定其他目錄。
# cd httpd-2.4.1
# ./configure --prefix=/usr/local/apache \ //指定其安裝的路徑
--sysconfdir=/etc/httpd \ //指定其配置文件所在路徑
--enable-so --enable-ssl \ //支持ssl,啓用dso功能動態模塊的裝載能力
--enable-cgi --enable-rewrite \ //支持cgi功能,支持重寫
--with-zlib
# make && make install
(3)、修改httpd的主配置文件,設置其Pid文件的路徑
編輯/etc/httpd/httpd.conf,添加如下行即可:
# vim /etc/httpd/httpd.conf
PidFile "/var/run/httpd.pid"
(4)、提供SysV服務腳本/etc/rc.d/init.d/httpd,內容如下:
# vim /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
而後爲此腳本賦予執行權限:
# chmod +x /etc/rc.d/init.d/httpd
加入服務列表:
# chkconfig --add httpd
開機自動啓動:
# chkconfig httpd on
接下來就可以啓動服務進行測試了。
# service httpd start //啓動httpd 服務
若是此時出現啓動失敗的提示,則有可能是SELinux的關係,
用getenforce 查看,若是Enforcing,只要用# setenforce 0 命令將其置爲Permissive即可。
如 我的ip地址是172.16.7.1,則在地址欄輸入ip,就會顯示“It works!”,表明編譯安裝成功。
1)php能使用mcrypt擴展;
(1)、解決依賴關係:
執行如下命令:
# yum -y groupinstall "X Software Development"
如果想讓編譯的php支持mcrypt擴展,此處還需要下載如下兩個rpm包並安裝之:
libmcrypt-2.5.7-5.el5.i386.rpm
libmcrypt-devel-2.5.7-5.el5.i386.rpm
然後,需要安裝:
# rpm -ivh libmcrypt-2.5.7-5.el5.i386.rpm
# rpm -ivh libmcrypt-devel-2.5.7-5.el5.i386.rpm
(2)、編譯安裝php-5.3.10
首先下載源碼包至本地目錄,
# tar xf php-5.3.10.tar.bz2
# cd php-5.3.10
# ./configure --prefix=/usr/local/php \ //指定其安裝目錄
--with-mysql=/usr/local/mysql --with-openssl \ // 因爲要依賴與mysql,所以也要知道mysql的安裝路徑
--with-mysqli=/usr/local/mysql/bin/mysql_config \ //是一種接口
--enable-mbstring --with-freetype-dir \ //可對多字節 字符語言編碼提供支持
--with-jpeg-dir --with-png-dir --with-zlib \ // 支持jpeg、png格式的文件
--with-libxml-dir=/usr --enable-xml \ // 支持xml文件
--with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt // 支持mcrypt擴展
# make
# make test
# make intall
爲php提供配置文件:
# cp php.ini-production /usr/local/php/lib/php.ini
(3)、 編輯apache配置文件httpd.conf,以apache支持php
# vim /etc/httpd/httpd.conf
添加如下二行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
定位至DirectoryIndex index.html
修改爲:
DirectoryIndex index.php index.html
(4)、測試php安裝是否成功。
# cd /usr/local/apache/htdocs
# mv index.html index.php
# vim index.php
<?php
phpinfo();
?>
保存退出後,將httpd服務重新啓動: service httpd restart或者 reload讓其重新載入配置文件即可測試php是否已經可以正常使用。
(5)、或者重新編輯/usr/local/apache/index.php文件,如下所示:
<?php
$link=mysql_connect('localhost','root',''); //與mysql數據庫連接
if ($link)
echo "Successful!";
else
echo "Failure...";
mysql_close(); //關閉數據庫連接
?>
而後重新啓動httpd,並且重新啓動mysqld服務。這時輸入ip地址查看信息。
可以把mysqld服務關閉,在查看一下連接信息,測試是否連接mysqld服務成功。
2)Web使用中心主機,其網頁文件目錄爲/www/htdocs;
# vim /etc/httpd/httpd.conf
定位至DocumentRoot:修改爲DocumentRoot "/www/htdocs"
3)此Web也能基於https協議工作;
# cd /etc/pki/CA
# (umask 077;openssl genrsa 1024 > private/cakey.pem)
# ll private/cakey.pem
# openssl req -new -x509 -key private/cakey.pem > cacert.pem
# ls
# mkdir certs newcerts
# touch index.txt serial crlnumber
# echo 01 > serial
# echo 01 > crlnumber
# cat serial
# cat crlnumber
以上就是 建立我們自己的CA,然後自己給自己發證,實現安全傳輸:
# cd /etc/httpd
# (umask 077;openssl genrsa 1024 > server.key)
# ls
# openssl req -new -key server.key > server.csr
# openssl ca -in server.csr > server.crt
這個過程是給httpd服務頒發證書。
# vim httpd.conf
LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so ,將這兩句的#註釋去掉。
再將/etc/pki/CA下的cacert.pem 複製到桌面windows,並將後綴改爲".crt",加進瀏覽器的安全認證證書
# service httpd restart
https://172.16.7.1
4、Web2上編譯安裝httpd-2.4.1和php-5.3.10,讓其使用Web1的mysql做爲數據庫服務器,配置LAMP平臺可以正常工作,要求
web2上的httpd-2.4.1 和 php-5.3.10編譯及安裝與web1一樣,在此不再贅述。
由於將web1的mysql服務掛載至/www/htdocs下,而web1將/www/htdocs共享了,所以web2可以與web1共用。
但是,web2也必須編譯安裝mysql-5.5.20,只是不用啓動mysql服務而已。過程不再贅述。
1) php能使用mcrypt擴展;
2)掛載Web1上的nfs目錄/www/htdocs至本地的/www/htdocs;
# mount -t nfs 172.16.7.1:/www/htdocs /www/htdocs //將web1上的共享目錄掛載至web2上相同的目錄下。
3)Web使用中心主機,其網頁文件目錄爲/www/htdocs;
4)此Web也能基於https協議工作;(提示:Web2需要使用發頒發給Web1的證書和Web1的私鑰文件。請思考爲什麼。)
提示:Web2上也需要事先安裝mysql,因爲php的configure腳本需要用到mysql的頭文件等;但Web2的mysql不需要啓動;
# scp 172.16.7.1:/etc/httpd/server.key /etc/httpd/
# scp 172.16.7.1:/etc/httpd/server.csr /etc/httpd/
# scp 172.16.7.1:/etc/httpd/server.crt /etc/httpd/z
# vim /etc/httpd/httpd.conf
以上三句就是將web1上的密鑰和證書等複製到web2上,使用相同的https.
啓用mod_ssl:
#LoadModule ssl_module modules/mod_ssl.so 的註釋去掉,再把CA證書cacert.pem拷貝到要訪問web服務的主機上,改後綴名爲.crt,即是cacert.crt,導入到可信任站點。
此時基於https的web訪問就實現了。
在web2上可使用 https://dz.magedu.com
5、在Web1的LAMP平臺上安裝配置discuz-7.2,要求:
在web1上/www/htdocs下建一個新的目錄,# mkdir /www/htdocs/discuz.
首先下載源碼包至本地目錄,下載位置ftp://172.16.0.1/pub/Sources/LAMP。
# unzip Discuz-7.2_FULL_SC_GBK.zip
# cd Discuz-7.2
# mv upload /www/htdocs/discuz //將解壓後的Discuz目錄下的upload目錄移動到/www/htdocs/discuz
#vim config.inc.php
修改:
$dbhost = 'localhost';
$dbuser = 'dzuser';
$dbpw = 'lee';
$dbname = 'discuz';
#vim /usr/local/php/lib/php.ini
更改:short_open_tag = On
# vim /etc/httpd/httpd.conf
將/etc/httpd/extra/httpd-vhosts.conf前的#註釋去掉,說明啓用虛擬主機功能。
# vim /etc/httpd/extra/httpd-vhosts.conf
添加:<VirtualHost 172.16.7.1:80>
DocumentRoot "/www/htdocs/discuz"
ServerName dz.magedu.com
</VirtualHost>
保存退出後,並在hosts文件下寫入 172.16.7.1 dz.magedu.com。重啓httpd服務。
在瀏覽器輸入dz.magedu.com/install,然後根據提示進入安裝嚮導,一步步安裝discuz.
此時,可能界面出現亂碼,則將/etc/httpd/httpd.conf下的 AddDefaultCharset UTF-8註釋掉即可。並且再重啓一下服務。<font style="background-color: #070205"></font>
1)在Web1上安裝完成後,此dz論壇也能夠通過Web2被正常訪問;
安裝完成後,可以在web2上輸入dz.magedu.com,也可以訪問discuz網站。
對了,要在web2的/www/htdocs下也應該創建一個目錄discuz.
2)通過任一臺主機登錄的用戶都能上傳的文件或發的帖子等,而且通過另一臺主機也可以訪問到;
此時,由於web2已經將web1的共享目錄掛載至本地,所以web1的共享目錄有任何改變,web2均可同時得到相應的改變。
即在任意一臺主機上發帖或上傳文件都可以被另一臺主機訪問。
6、在Web1上的/www/phpmyadmin目錄中安裝phpMyAdmin-3.4.10.1,要求:
首先下載源碼包至本地目錄,下載位置ftp://172.16.0.1/pub/Sources/new_lamp。
# tar xvf phpMyAdmin-3.4.10.1.tar.gz
# cd phpMyAdmin-3.4.10.1
# mkdir /www/htdocs/pma
# mv * /www/htdocs/pma
# cd /www/htdocs/pma
# cp config.sqmple.inc.php config.inc.php //php的配置文件
# vim config.inc.php
把$cfg[‘blowfish_secret’]=’’改爲$cfg[‘blowfish_secret’]=’dfaiofagzlvlgb’即可。
基於https訪問web2的pma: https://172.16.7.2/pma
1)其能夠通過https://web1_ip/dma路徑訪問到;
2)僅能夠通過https協議訪問,不能通過http協議訪問到此應用;
思考:(1)能不能將phpMyAdmin-3.4.10.1安裝到Web2上對Web1上的mysql進行管理?如果能,請實現之;
(2)通過https://www.magedu.com/pma訪問phpMyAdmin行不行,爲什麼?如果期望其可以,如何解決?
7、在Web2上的/www/wordpress目錄中安裝wordpress-3.3.1,要求:
1)其能夠通過http://web2_ip/blog訪問,或通過https://web2_ip/blog訪問;
思考:(1)能不能直接使用http://www.magedu.com/blog訪問此博客,爲什麼?如果期望其可以,如何實現?
172.16.7.1:下載wordpress-3.3.1.zip到本地
# mv wordpress-3.3.1.zip /www
# cd /www
# mkdir htdocs/blog
# unzip wordpress-3.3.1.zip
# mv wordpress/* htdocs/blog/
# cd htdocs/blog
# cp wp-config-sample.php wp-config.php
# vim wp-config.php
把define('DB_NAME', 'database_name_here')改爲define('DB_NAME', 'mysql');
把define('DB_USER', 'username_here');改爲 define('DB_USER', 'ling');
把define('DB_PASSWORD', 'password_here')改爲define('DB_PASSWORD', 'ling');
然後將httpd服務重新啓動一下,打開https://172.16.7.2/blog,查看wordpress博客。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.