构建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页面或者用户数据存放和写入位置;

构建LAMP应用平台

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;

[[email protected] ~]# rpm -e httpd --nodeps

[[email protected] ~]# wget http://archive.apache.org/dist/httpd/httpd-2.2.17.tar.gz

[[email protected] ~]# tar zxvf httpd-2.2.17.tar.gz -C /usr/src/

[[email protected] ~]# cd /usr/src/httpd-2.2.17/

[[email protected] httpd-2.2.17]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-cgi  &&  make  &&make install

[[email protected] httpd-2.2.17]# ls /usr/local/httpd/   ##安装成功

bin    cgi-bin  error   icons    lib   man     modules

build  conf     htdocs  include  logs  manual

[[email protected] httpd-2.2.17]# cd

[[email protected] ~]# ln -s /usr/local/httpd/bin/* /usr/local/bin/    ##优化执行命令的路径

[[email protected] ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd

[[email protected] ~]# 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

[[email protected] ~]# chmod +x /etc/init.d/httpd 

[[email protected] ~]# chkconfig --add httpd

[[email protected] ~]# chkconfig --list httpd

httpd           0:关闭 1:关闭 2:关闭 3:启用 4:关闭 5:启用 6:关闭

[[email protected] ~]# 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 [email protected]       ##修改管理员的邮箱

 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

[[email protected] ~]# cat <<END > /usr/local/httpd/htdocs/index.html

www.linuxfan.cn

END

[[email protected] ~]# /etc/init.d/httpd start

httpd is start complete.

[[email protected] ~]# netstat -utpln |grep httpd

tcp        0      0 :::80                       :::*                        LISTEN      73341/httpd

 

  • 客户端验证访问httpd页面;

构建LAMP应用平台

 

  • 安装mysql数据库服务;

[[email protected] ~]# yum -y remove mysql mysql-server   ##卸载mysql的rpm包

[[email protected] ~]# yum -y install ncurses ncurses-devel

[[email protected] ~]# tar zxvf /root/cmake-2.8.6.tar.gz -C /usr/src/

[[email protected] ~]# cd /usr/src/cmake-2.8.6

[[email protected] cmake-2.8.6]# ./configure &&gmake &&gmake install

[[email protected] cmake-2.8.6]# cd

[[email protected] ~]# tar zxvf /root/mysql-5.5.22.tar.gz -C /usr/src/

[[email protected] ~]# cd /usr/src/mysql-5.5.22/

[[email protected] 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   #编译安装

[[email protected] mysql-5.5.22]# cd

[[email protected] ~]# ls  /usr/local/mysql

bin      data  include         lib  mysql-test  scripts  sql-bench

COPYING  docs  INSTALL-BINARY  man  README      share    support-files

 

  • 配置并且启动mysql数据库;

[[email protected] ~]# cp -rf /usr/src/mysql-5.5.22/support-files/my-medium.cnf /etc/my.cnf ##复制主配置文件

[[email protected] ~]# cp /usr/src/mysql-5.5.22/support-files/mysql.server /etc/init.d/mysqld ##复制服务器控制脚本

[[email protected] ~]# chmod +x /etc/init.d/mysqld

[[email protected] ~]# chkconfig --add mysqld

[[email protected] ~]# chkconfig mysqld  on

[[email protected] ~]# echo 'export PATH=$PATH:/usr/local/mysql/bin'  >>/etc/profile ##优化mysql的命令

[[email protected] ~]# source /etc/profile   ##执行文件

[[email protected] ~]# useradd -M -s /sbin/nologin mysql ##创建运行mysql服务的用户

[[email protected] ~]# chown -R mysql:mysql /usr/local/mysql ##将mysql的安装目录属主和数组设置为

[[email protected] ~]# /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

[[email protected] ~]# /etc/init.d/mysqld start

[[email protected] ~]# netstat -utpln |grep mysqld

tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      22177/mysqld

[[email protected] ~]# mysqladmin -u root password '123123' ##设置mysql的root管理员密码为

[[email protected] ~]# 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;

[[email protected] ~]# rpm -e php php-mysql --nodeps

[[email protected] ~]# tar zxvf /root/libmcrypt-2.5.8.tar.gz -C /usr/src/

[[email protected] ~]# cd /usr/src/libmcrypt-2.5.8/

[[email protected] libmcrypt-2.5.8]# ./configure &&make &&make install

[[email protected] libmcrypt-2.5.8]# cd

[[email protected] ~]# ln -s /usr/local/lib/libmcrypt.* /usr/lib64/

[[email protected] ~]# tar zxvf /root/mhash-0.9.9.9.tar.gz -C /usr/src/

[[email protected] ~]# cd /usr/src/mhash-0.9.9.9/

[[email protected] mhash-0.9.9.9]# ./configure &&make &&make install

[[email protected] mhash-0.9.9.9]# cd

[[email protected] ~]# ln -s /usr/local/lib/libmhash* /usr/lib64/

[[email protected] ~]# tar zxvf /root/mcrypt-2.6.8.tar.gz -C /usr/src/

[[email protected] ~]# cd /usr/src/mcrypt-2.6.8/

[[email protected] mcrypt-2.6.8]# ./configure &&make &&make install

[[email protected] mcrypt-2.6.8]# cd

[[email protected] ~]# yum -y install libxml2-devel zlib-devel gd

 

  • 安装php程序;

[[email protected] ~]# tar zxvf /root/php-5.3.28.tar.gz -C /usr/src/

[[email protected] ~]# cd /usr/src/php-5.3.28/

[[email protected] 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 ##开启多字符节支持

[[email protected] php-5.3.28]# cd

[[email protected] ~]# ls  /usr/local/php5

bin  etc  include  lib  man

 

  • 配置并且优化php程序;

[[email protected] ~]# cp /usr/src/php-5.3.28/php.ini-development /usr/local/php5/php.ini

[[email protected] ~]# sed -i 's/short_open_tag = Off/short_open_tag = On/g' /usr/local/php5/php.ini  #修改配置项支持php标记<?php ?>

[[email protected] ~]# echo "default_charset = "utf8" " >>/usr/local/php5/php.ini  ##设置默认字符集utf8

[[email protected] ~]# tar zxvf /root/ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz -C /root/   ##添加zend模块,建立在PHP基础上的一个模块,优化代码的方法来提高PHP应用程序的执行速度,优化解析速度

[[email protected] ~]# cp -rf /root/ZendGuardLoader-php-5.3-linux-glibc23-x86_64/php-5.3.x/ZendGuardLoader.so /usr/local/php5/lib/php/

[[email protected] ~]# cat <<END >>/usr/local/php5/php.ini   

zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so

zend_enable=1   

END

 

  • 配置httpd服务,使其支持php界面,并且测试php页面;

[[email protected] ~]# sed -i '310a\AddType application/x-httpd-php .php' /usr/local/httpd/conf/httpd.conf

[[email protected] ~]# sed -i 's/DirectoryIndex index.html/DirectoryIndex index.html index.php/g' /usr/local/httpd/conf/httpd.conf

[[email protected] ~]# cat <<END >>/usr/local/httpd/htdocs/index.php

<?php
phpinfo();
?>

END

[[email protected] ~]# /etc/init.d/mysqld restart

[[email protected] ~]# /etc/init.d/httpd restart

访问测试:

http://www.linuxfan.cn/index.php

构建LAMP应用平台

 

  • 发布测试项目一:phpmyadmin;

[[email protected] ~]# tar zxvf /root/phpmyadmin-3.3.10-all-languages.tar.gz

[[email protected] ~]# mkdir /usr/local/httpd/htdocs/linuxfan

[[email protected] ~]# mv /root/phpMyAdmin-3.3.10-all-languages/ /usr/local/httpd/htdocs/linuxfan/pmyadm

 [[email protected] ~]# cd /usr/local/httpd/htdocs/linuxfan/pmyadm

[[email protected] pmyadm]# cp config.sample.inc.php config.inc.php

[[email protected] pmyadm]# cd

[[email protected] ~]# /etc/init.d/httpd restart

访问测试(登录使用mysql的账户密码):

http://www.linuxfan.cn/linuxfan/pmyadm

构建LAMP应用平台

构建LAMP应用平台

 

  • 发布测试项目二:论坛discuz;

[[email protected] ~]# mysql -uroot -p123123

mysql> create database bbsdb;

mysql> grant all on bbsdb.* to 'runbbs'@'localhost' identified by '123123';

mysql> flush privileges;

mysql> quit

[[email protected] ~]# unzip discuz_7.2_full_sc_utf8.zip -d discuz

[[email protected] ~]# cp -rf discuz/upload/ /usr/local/httpd/htdocs/linuxfan/bbs

[[email protected] ~]# cd /usr/local/httpd/htdocs/linuxfan/bbs/

[[email protected] bbs]# chown daemon forumdata/ attachments/ uc_client/data/cache/ templates/ config.inc.php -R

[[email protected] bbs]# cd

[[email protected] ~]# /etc/init.d/httpd restart

访问测试:

http://www.linuxfan.cn/linuxfan/bbs/install/

安装时数据库填写localhost

构建LAMP应用平台

构建LAMP应用平台

  • 发布测试项目三:wordpress博客系统;

[[email protected] ~]# mysql -uroot -p123123

mysql> create database wpdb;

mysql> grant all on wpdb.* to 'wpadm'@'localhost' identified by '123123';

mysql> quit

[[email protected] ~]# unzip wordpress-4.4.1-zh_CN.zip

[[email protected] ~]# cp -rf wordpress /usr/local/httpd/htdocs/linuxfan/

[[email protected] ~]# cd /usr/local/httpd/htdocs/linuxfan/wordpress/

[[email protected] wordpress]# cp wp-config-sample.php wp-config.php

[[email protected] wordpress]# sed -i 's/database_name_here/wpdb/g' wp-config.php

[[email protected] wordpress]# sed -i 's/username_here/wpadm/g' wp-config.php

[[email protected] wordpress]# sed -i 's/password_here/123123/g' wp-config.php

 [[email protected] wordpress]# cd

[[email protected] ~]# /etc/init.d/httpd restart

访问测试:

http://www.linuxfan.cn/linuxfan/wordpress/

构建LAMP应用平台