LAMP(Linux-Apache-MySQL-PHP)网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网络服务器,MySQL数据库,Perl、PHP或者Python编程语言,所有组成产品均是开源软件,是国际上成熟的架构框架,很多流行的商业应用都是采取这个架构,和 Java/J2EE架构相比,LAMP具有Web资源丰富、轻量、快速开发等特点,与微软的.NET架构相比,LAMP具有通用、跨平台、高性能、低价格的优势,因此LAMP无论是性能、质量还是价格都是企业搭建网站的首选平台。 适用环境 系统支持:CentOS-5 (32bit/64bit)、CentOS-6 (32bit/64bit)等linux系统 内存要求:≥256M (1)、使用yum安装nginx所需要支持的软件,分别是pcre-devel和zlib-devel。 [iyunv@localhost ~]# yum -y install pcre-devel zlib-devel (2)、创建运行用户和组 [iyunv@localhost ~]# useradd -M -s /sbin/nologin nginx (3)、编译安装nginx [iyunv@localhost ~]# tar zxf nginx-1.0.8.tar.gz [iyunv@localhost ~]# cd nginx-1.0.8 [iyunv@localhost nginx]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_status_modult [iyunv@localhost ~]#make && make install 为了使nginx服务器运行方便,可以为主程序nginx创建链接文件。 [iyunv@localhost ~]# ln -s /usr/local/nginx/sbin/nginx /usr/login/sbin 附加: 如有想让对nginx服务启动、关闭方便的话,建议编写下面的脚本。 [iyunv@localhost ~]#vim /etc/init.d/nginx #!/bin/bash
# chkconfig: - 9920
# description:Nginx Service Control Script
PROG=“/usr/local/nginx/sbin/nginx”
PIDF= “/usr/local/nginx/logs/nginx.pid”
case “$1” in
start)
$PROG
;;
stop) kill -s QUIT$(cat $PIDF) ;; restart) $0 stop $0 start ;; reload) kill -s HUP $(cat $PIDF) ;; *)
echo “Usage: $0 {start|stop|restart|reload}” exit 1 esac
exit 0
[iyunv@localhost ~]# chmod +x /etc/init.d/nginx
[iyunv@localhost ~]# chkconfig --add nginx
(1)、编译安装MySQL数据库 [iyunv@localhost ~]# tar zxf mysql-5.1.55.tar.gz [iyunv@localhost ~]# cd mysql-5.1.55 [root@localhostmysql-1.5.55]# ./configure --prefix=/usr/local/mysql --with-charset=utf8 --with-collation=utf8_general_ci --with-extra-charsets=gbk,gb2312
注解:
--with-charset //默认使用的字符集编码
--with-collation //指定默认使用字符集校对规则
--with-extra-charsets //指定额外支持的其他字符集编码
Utf8_general_ci //适用于UTF-8字符集的通用原则
[iyunv@localhost ~]# make && make install
(2)、优化调整 [iyunv@localhost mysql-1.5.55]# cp support-files/my-medium.cnf /etc/my.conf
[iyunv@localhost mysql-1.5.55]# cp support-files/mysql.server /etc/init.d/mysqld
[iyunv@localhost mysql-1.5.55]# chmod a+x /etc/rc.d/init.d/mysqld
[iyunv@localhost mysql-1.5.55]# chkconfig --add mysqld
[iyunv@localhost mysql-1.5.55]# ln -s /usr/local/mysql/sbin/* /usr/local/bin/
[iyunv@localhost mysql-1.5.55]# ln -s /usr/local/mysql/lib/mysql/* /usr/lib/
[root@localhostmysql-1.5.55]#ln -s /usr/local/mysql/include/mysql/* /usr/include
(3)、初始化数据库
[iyunv@localhost~]# useradd -M -u 27 -s /sbin/nologin mysql
[iyunv@localhost~]# cd /usr/local/mysql/bin
[iyunv@localhostbin]# ./mysql_install_db --user=mysql
[iyunv@localhostbin]# chown -R root:mysql /usr/local/mysql
[iyunv@localhostbin]# chown -R mysql /usr/local/mysql/var
(4)、初始化数据库
[iyunv@localhost~]# service mysqld start
[iyunv@localhost~]# mysqladmin -u root password “pwd@123”
较新版本(如5.3)的PHP已经自带FPM(FastCGI Process Manager,FastCGI进程管理器)模块,用来对php解析实例进行管理、优化解析效率。单服务器的LEMP架构经常使用这种方式,因此在编译PHP的时候应添加“—enable-fpm”以启用此模块。 以源码包php-5.3.6为例: (1)、编译安装PHP [iyunv@localhost ~]# tar zxf php-5.3.6.tar.gz [iyunv@localhost ~]#cd php-5.3.6/ [iyunv@localhost php-5.3.6]# ./configure --prefix=/usr/local/php5 --with-gd --with-zlib --with-mysql=/usr/local/mysql --with-config-file-path=/usr/local/php5 --enable-mbstring --enable-fpm 注解: --prefix=/usr/local/php5 指定PHP安装目录 –with-config-file-path=/usr/local/php/etc 指定php.ini位置
–with-mysql=/usr/local/mysql mysql安装目录,打开对mysql的支持
–with-gd 打开gd库的支持 –enable-mbstring 多字节,字符串的支持 –enable-fpm 打上php-fpm 补丁后才有这个参数,cgi方式安装的启动程序 –with-zlib-dir 打开zlib库的支持 [iyunv@localhost php-5.3.6]#make && make intall (2)、安装后的调整 [iyunv@localhost php5-3.6]# cp php.ini-development /usr/local/php5/php.ini [iyunv@localhost php5-3.6]#ln -s /usr/local/php5/bin/* /usr/local/bin/ [iyunv@localhost php5-3.6]#ln -s /usr/local/php5/sbin/* /usr/local/sbin/ (3)、安装ZendGuardLoader [iyunv@localhost ~]#tar zxf ZendGuardLoader-php-5.3-linux-glibc23-i386.tar.gz [iyunv@localhost ~]# cd ZendGuardLoader-php-5.3-linux-glibc23-i386/php-5.3.x [iyunv@localhost php-5.3.x]#cp ZendGuardLoader.so /usr/local/php5/lib/php.ini [iyunv@localhost php-5.3.x]# vi /usr/local/php5/php.ini
添加内容:
zend_extension=/usr/local/php5/lib/php/ZenGuardLoader.so
zend_loader.enable=1
如果让nginx能够解析PHP网页,有两种方法可以选择:一种是让nginx充当中介,将访问PHP页面的web请求交给其他LEMP去处理;另一种是通过使用PHP的FPM模块来实现。 (1)、启用php-fpm进程,以便于监听PHP解析请求。建立php-fpm.conf文件,并修改其中的PID文件、运行用户、服务数(进程数量)等相关设置,然后启动php-fpm程序即可。(默认监听本机的9000端口) [iyunv@localhost ~]#cd /usr/loca/php5/etc/ [iyunv@localhost etc]# cp php-fpm.conf.default php-fpm.conf [iyunv@localhost etc]# vi php-fpm.conf …….省略部分信息 pid = run/php-fpm.pid //确认pid文件位置 user = nginx //运行用户 group = nginx //运行组 pm.start_servers = 20 //启动时开启的进程数 pm.min_spare_servers = 5 //最少空闲进程数 pm.max_spare_servers = 35 //最多空闲进程数 [iyunv@localhost etc]# /usr/local/sbin/php-fpm 查看是否被监听,如被监听则会显示 [iyunv@localhost etc]# netstat -anpt | grep php-fpm (2)、修改nginx服务脚本,以便于在启动/停止nginx服务器时php-fpm进程也会自动启动/停止。 [iyunv@localhost ~]# vi /etc/init.d/nginx ……省略部分信息 PROG_FPM=“/usr/local/sbin/php-fpm” PIDF_FPM=“/usr/local/php5/” case “$1” in start) $PROG -c $CONF $PROG_FPM ;; stop) kill -s QUIT $(can $PIDF) //根据PID杀死进程 kill -s QUIT $(cat $PIDF_FPM) //根据PID终止pid-fpm进程 ;; (3)、配置nginx支持PHP解析 无论是将PHP页面交给LAMP解析,还是调用本机的php-fpm进程进行解析,都需要在“server { }”配置段中添加location设置,以便于指定当访问.php网页时采取何种操作。 [iyunv@localhost ~]#vi /usr/local/nginx/conf/nginx.conf server { …… location ~ \.php$ { //访问.php页面的配置段 proxy_pass IP地址:80; //Apache服务器的监听地址 } } 第二种方法(调用本机的php-fpm进程),使用的配置语句如下所示。在conf/目录下的fastcgi.conf文件中已经包含必需的设置,可通过include语句添加进来。 server {
……
location ~ \.php$ { //访问php页面的配置段
root /var/www/benet; //PHP网页文档根目录
fastcgi_pass 127.0.0.1:9000; //php-fpm的监听地址
fastcgi_index index.php; //PHP首页文件
include fastcgi.conf; //包括fastcgi.conf样本配置
}
}
[iyunv@localhost ~]#vi /var/www/benet/test.php <?php $link=mysql_connect(‘localhost’ , ‘root’, ‘pwd123’ ); //连接MySQL数据库 If ($link) echo “<h1>successful</h1>”; //连接成功时的反馈消息 Mysql_close( ); //关闭数据库连接 ?> LEMP平台与LAMP平台是非常相似的,区别主要在于所用WEB服务软件的不同, 而这与使用PHP开发的WEB应用程序并无太大关系,因此PHP应用的部署方法也是类似的, 下面以“天空网络电影系统(简称SKYUC)”为例介绍在LEMP平台中的部署过程。 释放并部署程序代码: [iyunv@localhost ~]#tar jxf SKYUC_Free_For_PHP5.3.tar.bz2 [iyunv@localhost ~]#mv SKYUC_Free_For_PHP5.3/wwwroot /var/www/benet/skyuc/ [iyunv@localhost ~]#cd /var/www/benet/skyuc/ [iyunv@localhost ~]#chown -R nginx:nginx admincp/ data/ templates/ upload/ 新建数据库skyucdb,授权用户runskyuc。 [iyunv@localhost ~]#mysql -u root -p Enter password: //验证root用户密码 mysql>create database skyucdb; mysql>grant all on skyucdb.* to runskyuc@localhost identified by “sky@uc123”; [iyunv@localhost ~]#cd /var/www/benet./skync/ [iyunv@localhost skync]# mv install install.lock [iyunv@localhost ~]#chmod 600 install.lock
|