一、LAMP應用平臺概述;
二、LAMP工作原理;
三、案例:部署LAMP應用平臺;
一、LAMP應用平臺概述:
1.概述:LAMP是目前最成熟的一種企業(yè)網(wǎng)站應用模式,可以提供動態(tài)web站點應用及開發(fā)環(huán)境,其構成linux、apache、mysql、php或python或perl等語言,優(yōu)勢:成本低、易于開發(fā)、方便易用、安全穩(wěn)定;
2.網(wǎng)站分類:
靜態(tài):有純html標簽語言編寫而成的頁面,無論在什么環(huán)境,什么身份訪問都不會發(fā)生變化;
動態(tài):由網(wǎng)頁的編程語言編寫,例:java、php、.net、python語言,的動態(tài)頁面,動態(tài)頁面是由動態(tài)頁面和html組成為一個網(wǎng)頁頁面,可以與數(shù)據(jù)庫進行交互,可以通過動態(tài)頁面對服務器構成操作;
3.php(超文本預處理語言):是一種服務器端html嵌入式語言,支持windows、linux、unix等多平臺;
二、LAMP工作原理:
1.LAMP的處理流程:
apache:提供web的訪問,客戶端和服務器之間網(wǎng)頁的傳輸;
php:提供.php頁面的運行環(huán)境;
mysql:提供.php頁面或者用戶數(shù)據(jù)存放和寫入位置;
2.FastCGI 接口:
FastCGI是一個可伸縮地、高速地在HTTP server和動態(tài)腳本語言間通信的接口。采用C/S結構,可以將HTTP服務器和腳本解析服務器分開,同時在腳本解析服務器上啟動一個或者多個腳本解析守護進程。當HTTP服務器每次遇 到動態(tài)程序時,可以將其直接交付給FastCGI進程來執(zhí)行,然后將得到的結果返回給瀏覽器。這種方式可以讓HTTP服務器專一地處理靜態(tài)請求或者將動態(tài) 腳本服務器的結果返回給客戶端,這在很大程度上提高了整個應用系統(tǒng)的性能。
3.FastCGI接口與傳統(tǒng)php-CGI接口的區(qū)別:
傳統(tǒng)CGI程序的性能問題:"PHP解析器會解析php.ini文件,初始化執(zhí)行環(huán)境",就是這里了。標準的CGI對每個請求都會執(zhí)行這些步驟,所以處理每個時間的時間會比較長。這明顯不合理;
Fastcgi處理請求的方式:首先,F(xiàn)astcgi會先啟一個master,解析配置文件,初始化執(zhí)行環(huán)境,然后再啟動多個worker。當請求過來時,master會傳遞給一個worker,然后立即可以接受下一個請求。這樣就避免了重復的勞動,效率自然是高。而且當worker不夠用時,master可以根據(jù)配置預先啟動幾個worker等著;當然空閑worker太多時,也會停掉一些,這樣就提高了性能,也節(jié)約了資源。這就是fastcgi的對進程的管理。
4.php-fpm管理器:管理調(diào)度php-cgi接口進程的管理程序;
三、案例:部署LAMP應用平臺;
案例環(huán)境:
系統(tǒng)類型 | IP地址 | 主機名 | 所需軟件 |
Centos 6.5 64bit | 192.168.100.150 | www.linuxfan.cn | mhash-0.9.9.9.tar.gz、cmake-2.8.6.tar.gz、mysql-5.5.22.tar.gz、php-5.3.28.tar.gz、discuz_7.2_full_sc_utf8.zip、phpmyadmin-3.3.10-all-languages.tar.gz、httpd-2.2.17.tar.gz、wordpress-4.4.1-zh_CN.zip、 ZendGuardLoader-php-5.3-linux-glibc23-x86_64、 libmcrypt-2.5.8.tar.gz 、ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz、 mcrypt-2.6.8.tar.gz |
案例步驟:
?安裝并配置httpd;
?客戶端驗證訪問httpd頁面;
?安裝mysql數(shù)據(jù)庫服務;
?配置并且啟動mysql數(shù)據(jù)庫;
?安裝php程序的依賴關系;
?安裝php程序;
?配置并且優(yōu)化php程序;
?發(fā)布測試項目一:phpmyadmin;
?發(fā)布測試項目二:論壇discuz;
?發(fā)布測試項目三:wordpress博客系統(tǒng);
?安裝并配置httpd;
[root@www ~]# rpm -e httpd --nodeps
[root@www ~]# wget http://archive.apache.org/dist/httpd/httpd-2.2.17.tar.gz
[root@www ~]# tar zxvf httpd-2.2.17.tar.gz -C /usr/src/
[root@www ~]# cd /usr/src/httpd-2.2.17/
[root@www httpd-2.2.17]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-cgi && make &&make install
[root@www httpd-2.2.17]# ls /usr/local/httpd/ ##安裝成功
bin cgi-bin error icons lib man modules
build conf htdocs include logs manual
[root@www httpd-2.2.17]# cd
[root@www ~]# ln -s /usr/local/httpd/bin/* /usr/local/bin/ ##優(yōu)化執(zhí)行命令的路徑
[root@www ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
[root@www ~]# vi /etc/init.d/httpd
1 #!/bin/bash
2 # chkconfig: 35 85 15 ##在3和5運行級別開機啟動,開機啟動順序為85,關機關閉順序為15
81 $HTTPD -k $ARGV &&echo "httpd is $ARGV complete." ##第82行,添加輸出信息
:wq
[root@www ~]# chmod +x /etc/init.d/httpd
[root@www ~]# chkconfig --add httpd
[root@www ~]# chkconfig --list httpd
httpd 0:關閉 1:關閉 2:關閉 3:啟用 4:關閉 5:啟用 6:關閉
[root@www ~]# vi /usr/local/httpd/conf/httpd.conf ##修改主配置文件
:set nu ##打印出行號
29 ServerRoot "/usr/local/httpd"
40 Listen 80
65 User daemon
66 Group daemon
88 ServerAdmin admin@linuxfan.cn ##修改管理員的郵箱
97 ServerName www.linuxfan.cn:80 ##添加網(wǎng)站的域名
104 DocumentRoot "/usr/local/httpd/htdocs"
186 ErrorLog "logs/error_log"
193 LogLevel warn
215 CustomLog "logs/access_log" common
:wq
[root@www ~]# cat <
www.linuxfan.cn
END
[root@www ~]# /etc/init.d/httpd start
httpd is start complete.
[root@www ~]# netstat -utpln |grep httpd
tcp 0 0 :::80 :::* LISTEN 73341/httpd
?客戶端驗證訪問httpd頁面;
?安裝mysql數(shù)據(jù)庫服務;
[root@www ~]# yum -y remove mysql mysql-server ##卸載mysql的rpm包
[root@www ~]# yum -y install ncurses ncurses-devel
[root@www ~]# tar zxvf /root/cmake-2.8.6.tar.gz -C /usr/src/
[root@www ~]# cd /usr/src/cmake-2.8.6
[root@www cmake-2.8.6]# ./configure &&gmake &&gmake install
[root@www cmake-2.8.6]# cd
[root@www ~]# tar zxvf /root/mysql-5.5.22.tar.gz -C /usr/src/
[root@www ~]# cd /usr/src/mysql-5.5.22/
[root@www mysql-5.5.22]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DSYSCONFDIR=/etc/ &&make &&make install
注解:
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql #指定安裝目錄\
-DDEFAULT_CHARSET=utf8 #指定字符集為utf8 \
-DDEFAULT_COLLATION=utf8_general_ci ##指定字符校驗 \
-DWITH_EXTRA_CHARSETS=all ##支持額外字符集\
-DSYSCONFDIR=/etc/ ##指定配置文件位置
make &&make install #編譯安裝
[root@www mysql-5.5.22]# cd
[root@www ~]# ls /usr/local/mysql
bin data include lib mysql-test scripts sql-bench
COPYING docs INSTALL-BINARY man README share support-files
?配置并且啟動mysql數(shù)據(jù)庫;
[root@www ~]# cp -rf /usr/src/mysql-5.5.22/support-files/my-medium.cnf /etc/my.cnf ##復制主配置文件
[root@www ~]# cp /usr/src/mysql-5.5.22/support-files/mysql.server /etc/init.d/mysqld ##復制服務器控制腳本
[root@www ~]# chmod +x /etc/init.d/mysqld
[root@www ~]# chkconfig --add mysqld
[root@www ~]# chkconfig mysqld on
[root@www ~]# echo 'export PATH=$PATH:/usr/local/mysql/bin' >>/etc/profile ##優(yōu)化mysql的命令
[root@www ~]# source /etc/profile ##執(zhí)行文件
[root@www ~]# useradd -M -s /sbin/nologin mysql ##創(chuàng)建運行mysql服務的用戶
[root@www ~]# chown -R mysql:mysql /usr/local/mysql ##將mysql的安裝目錄屬主和數(shù)組設置為
[root@www ~]# /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql ##初始化mysql服務,會在/usr/local/mysql/data/目錄下產(chǎn)生默認的文件,初始化時,必須保證/tmp目錄777+t
[root@www ~]# /etc/init.d/mysqld start
[root@www ~]# netstat -utpln |grep mysqld
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 22177/mysqld
[root@www ~]# mysqladmin -u root password '123123' ##設置mysql的root管理員密碼為
[root@www ~]# mysql -uroot -p123123 ##登錄,也可以用-h選項指定服務器的ip地址進行遠程登錄
quit
?安裝php程序的依賴關系;
下載 libmcrypt-2.5.8.tar.gz mhash-0.9.9.9.tar.gz mcrypt-2.6.8.tar.gz php-5.3.28.tar.gz ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz 并且使用xftp上傳到服務器中,安裝mcrypt等支持擴展庫工具,數(shù)據(jù)加密工具,安裝的順序必須libmcrypt-->mhash-->mcrypt;
[root@www ~]# rpm -e php php-mysql --nodeps
[root@www ~]# tar zxvf /root/libmcrypt-2.5.8.tar.gz -C /usr/src/
[root@www ~]# cd /usr/src/libmcrypt-2.5.8/
[root@www libmcrypt-2.5.8]# ./configure &&make &&make install
[root@www libmcrypt-2.5.8]# cd
[root@www ~]# ln -s /usr/local/lib/libmcrypt.* /usr/lib64/
[root@www ~]# tar zxvf /root/mhash-0.9.9.9.tar.gz -C /usr/src/
[root@www ~]# cd /usr/src/mhash-0.9.9.9/
[root@www mhash-0.9.9.9]# ./configure &&make &&make install
[root@www mhash-0.9.9.9]# cd
[root@www ~]# ln -s /usr/local/lib/libmhash* /usr/lib64/
[root@www ~]# tar zxvf /root/mcrypt-2.6.8.tar.gz -C /usr/src/
[root@www ~]# cd /usr/src/mcrypt-2.6.8/
[root@www mcrypt-2.6.8]# ./configure &&make &&make install
[root@www mcrypt-2.6.8]# cd
[root@www ~]# yum -y install libxml2-devel zlib-devel gd
?安裝php程序;
[root@www ~]# tar zxvf /root/php-5.3.28.tar.gz -C /usr/src/
[root@www ~]# cd /usr/src/php-5.3.28/
[root@www php-5.3.28]# ./configure --prefix=/usr/local/php5 --with-mcrypt --with-apxs2=/usr/local/httpd/bin/apxs --with-mysql=/usr/local/mysql/ --with-config-file-path=/usr/local/php5 --enable-mbstring && make &&make install
注解:
--prefix=/usr/local/php5 ##安裝位置
--with-mcrypt ##加載依賴的擴展工具
--with-apxs2=/usr/local/httpd/bin/apxs ##加載apache的連接模塊
--with-mysql=/usr/local/mysql/ ##指定mysql的安裝位置
--with-config-file-path=/usr/local/php5 ##指定php的主配置文件存放位置
--enable-mbstring ##開啟多字符節(jié)支持
[root@www php-5.3.28]# cd
[root@www ~]# ls /usr/local/php5
bin etc include lib man
?配置并且優(yōu)化php程序;
[root@www ~]# cp /usr/src/php-5.3.28/php.ini-development /usr/local/php5/php.ini
[root@www ~]# sed -i 's/short_open_tag = Off/short_open_tag = On/g' /usr/local/php5/php.ini #修改配置項支持php標記
[root@www ~]# echo "default_charset = "utf8" " >>/usr/local/php5/php.ini ##設置默認字符集utf8
[root@www ~]# tar zxvf /root/ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz -C /root/ ##添加zend模塊,建立在PHP基礎上的一個模塊,優(yōu)化代碼的方法來提高PHP應用程序的執(zhí)行速度,優(yōu)化解析速度
[root@www ~]# cp -rf /root/ZendGuardLoader-php-5.3-linux-glibc23-x86_64/php-5.3.x/ZendGuardLoader.so /usr/local/php5/lib/php/
[root@www ~]# cat <
zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so
zend_enable=1
END
?配置httpd服務,使其支持php界面,并且測試php頁面;
[root@www ~]# sed -i '310a\AddType application/x-httpd-php .php' /usr/local/httpd/conf/httpd.conf
[root@www ~]# sed -i 's/DirectoryIndex index.html/DirectoryIndex index.html index.php/g' /usr/local/httpd/conf/httpd.conf
[root@www ~]# cat <
phpinfo();
?>
END
[root@www ~]# /etc/init.d/mysqld restart
[root@www ~]# /etc/init.d/httpd restart
訪問測試:
http://www.linuxfan.cn/index.php
?發(fā)布測試項目一:phpmyadmin;
[root@www ~]# tar zxvf /root/phpmyadmin-3.3.10-all-languages.tar.gz
[root@www ~]# mkdir /usr/local/httpd/htdocs/linuxfan
[root@www ~]# mv /root/phpMyAdmin-3.3.10-all-languages/ /usr/local/httpd/htdocs/linuxfan/pmyadm
[root@www ~]# cd /usr/local/httpd/htdocs/linuxfan/pmyadm
[root@www pmyadm]# cp config.sample.inc.php config.inc.php
[root@www pmyadm]# cd
[root@www ~]# /etc/init.d/httpd restart
訪問測試(登錄使用mysql的賬戶密碼):
http://www.linuxfan.cn/linuxfan/pmyadm
?發(fā)布測試項目二:論壇discuz;
[root@www ~]# mysql -uroot -p123123
mysql> create database bbsdb;
mysql> grant all on bbsdb.* to 'runbbs'@'localhost' identified by '123123';
mysql> flush privileges;
mysql> quit
[root@www ~]# unzip discuz_7.2_full_sc_utf8.zip -d discuz
[root@www ~]# cp -rf discuz/upload/ /usr/local/httpd/htdocs/linuxfan/bbs
[root@www ~]# cd /usr/local/httpd/htdocs/linuxfan/bbs/
[root@www bbs]# chown daemon forumdata/ attachments/ uc_client/data/cache/ templates/ config.inc.php -R
[root@www bbs]# cd
[root@www ~]# /etc/init.d/httpd restart
訪問測試:
http://www.linuxfan.cn/linuxfan/bbs/install/
安裝時數(shù)據(jù)庫填寫localhost
?發(fā)布測試項目三:wordpress博客系統(tǒng);
[root@www ~]# mysql -uroot -p123123
mysql> create database wpdb;
mysql> grant all on wpdb.* to 'wpadm'@'localhost' identified by '123123';
mysql> quit
[root@www ~]# unzip wordpress-4.4.1-zh_CN.zip
[root@www ~]# cp -rf wordpress /usr/local/httpd/htdocs/linuxfan/
[root@www ~]# cd /usr/local/httpd/htdocs/linuxfan/wordpress/
[root@www wordpress]# cp wp-config-sample.php wp-config.php
[root@www wordpress]# sed -i 's/database_name_here/wpdb/g' wp-config.php
[root@www wordpress]# sed -i 's/username_here/wpadm/g' wp-config.php
[root@www wordpress]# sed -i 's/password_here/123123/g' wp-config.php
[root@www wordpress]# cd
[root@www ~]# /etc/init.d/httpd restart
訪問測試:
http://www.linuxfan.cn/linuxfan/wordpress/