构建LAMP应用平台

一、LAMP应用平台概述; 二、LAMP工作原理; 三、案例:部署LAMP应用平台;

一、LAMP应用平台概述: 1.概述:LAMP是目前最成熟的一种企业网站应用模式,可以提供动态web站点应用及开发环境,其构成linux、apache、mysql、php或python或perl等语言,优势:成本低、易于开发、方便易用、安全稳定; 2.网站分类: 静态:有纯html标签语言编写而成的页面,无论在什么环境,什么身份访问都不会发生变化; 动态:由网页的编程语言编写,例:java、php、.net、python语言,的动态页面,动态页面是由动态页面和html组成为一个网页页面,可以与数据库进行交互,可以通过动态页面对服务器构成操作; 3.php(超文本预处理语言):是一种服务器端html嵌入式语言,支持windows、linux、unix等多平台;

二、LAMP工作原理: 1.LAMP的处理流程: apache:提供web的访问,客户端和服务器之间网页的传输; php:提供.php页面的运行环境; mysql:提供.php页面或者用户数据存放和写入位置; 2.FastCGI 接口: FastCGI是一个可伸缩地、高速地在HTTP server和动态脚本语言间通信的接口。采用C/S结构,可以将HTTP服务器和脚本解析服务器分开,同时在脚本解析服务器上启动一个或者多个脚本解析守护进程。当HTTP服务器每次遇 到动态程序时,可以将其直接交付给FastCGI进程来执行,然后将得到的结果返回给浏览器。这种方式可以让HTTP服务器专一地处理静态请求或者将动态 脚本服务器的结果返回给客户端,这在很大程度上提高了整个应用系统的性能。 3.FastCGI接口与传统php-CGI接口的区别: 传统CGI程序的性能问题:"PHP解析器会解析php.ini文件,初始化执行环境",就是这里了。标准的CGI对每个请求都会执行这些步骤,所以处理每个时间的时间会比较长。这明显不合理; Fastcgi处理请求的方式:首先,Fastcgi会先启一个master,解析配置文件,初始化执行环境,然后再启动多个worker。当请求过来时,master会传递给一个worker,然后立即可以接受下一个请求。这样就避免了重复的劳动,效率自然是高。而且当worker不够用时,master可以根据配置预先启动几个worker等着;当然空闲worker太多时,也会停掉一些,这样就提高了性能,也节约了资源。这就是fastcgi的对进程的管理。 4.php-fpm管理器:管理调度php-cgi接口进程的管理程序;

三、案例:部署LAMP应用平台; 案例环境: 系统类型 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数据库服务; 配置并且启动mysql数据库; 安装php程序的依赖关系; 安装php程序; 配置并且优化php程序; 发布测试项目一:phpmyadmin; 发布测试项目二:论坛discuz; 发布测试项目三:wordpress博客系统;

安装并配置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/ ##优化执行命令的路径 [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 1111@qq.com ##修改管理员的邮箱 97 ServerName www.linuxfan.cn:80 ##添加网站的域名 104 DocumentRoot "/usr/local/httpd/htdocs" 186 ErrorLog "logs/error_log" 193 LogLevel warn 215 CustomLog "logs/access_log" common :wq [root@www ~]# cat <<END > /usr/local/httpd/htdocs/index.html 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页面; www.xiaoxue.com

安装mysql数据库服务; [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数据库; [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 ##优化mysql的命令 [root@www ~]# source /etc/profile ##执行文件 [root@www ~]# useradd -M -s /sbin/nologin mysql ##创建运行mysql服务的用户 [root@www ~]# chown -R mysql:mysql /usr/local/mysql ##将mysql的安装目录属主和数组设置为 [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/目录下产生默认的文件,初始化时,必须保证/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等支持扩展库工具,数据加密工具,安装的顺序必须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 ##开启多字符节支持 [root@www php-5.3.28]# cd [root@www ~]# ls /usr/local/php5 bin etc include lib man

配置并且优化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标记<?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基础上的一个模块,优化代码的方法来提高PHP应用程序的执行速度,优化解析速度 [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 <<END >>/usr/local/php5/php.ini
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 <<END >>/usr/local/httpd/htdocs/index.php <?php phpinfo(); ?> END [root@www ~]# /etc/init.d/mysqld restart [root@www ~]# /etc/init.d/httpd restart 访问测试: http://www.linuxfan.cn/index.php

发布测试项目一: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

发布测试项目二:论坛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/ 安装时数据库填写localhost

发布测试项目三:wordpress博客系统; [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/