概述
Lamp架构是目前成熟的网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态web站点服务及其应用开发环境。
组成:Linux 、Apache、MySQL、php/perl/pytho
优势:成本低廉、可定制、易于开发、方便易用、安全和稳定
(1)准备工作
[root@crushlinux ~]# service iptables stop //关闭防火墙
[root@crushlinux ~]# setenforce 0 //关闭seLinux
(2)确认没有使用以rpm方式安装的httpd、MySQL及PHP
[root@crushlinux ~]# rpm -e httpd httpd-manual webalizer subversion mod_python mod_ssl mod_perl system-config-httpd php php-cli php-ldap php-common php-mysql mysql-server mysql dovecot –nodeps
安装
安装httpd
1、下载apache
wget http://archive.apache.org/dist/httpd/httpd-2.2.17.tar.gz
2、解压压缩包
tar xf httpd-2.2.17.tar.gz
3、编译源码包,并且安装
(1)cd httpd-2.2.17
(2)./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi
编译完成后,如上图,说明已经编译成功
如果出现以下错误
则在编译时加入–with-included-apr即可。
--prefix=:指定安装目录
--enable-so:启用动态加载模块支持,使httpd具备进一步扩展功能的能力
--enable-rewrite::启用网页地址重写功能,用于网站优化及目录迁移维护。(如果访问网站未找到,将自动跳转到其他网页)
--enable-charset-lite:启动字符集支持,以便支持使用各种字符集编码的网页。
--enable-cgi:启用CGI脚本程序支持,以便于网站的应用访问能力
--help:帮助信息
4.安装
make && make install
5.优化执行路径
[root@crushlinux local]# ln -s /usr/local/httpd/bin/* /usr/local/bin/
注:在任意目录下。都可以使用httpd下的命令,为命令路径添加一条软连接。
添加httpd为系统服务并重命名为httpd
cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd(将服务控制工具复制到init.d下)
vi /etc/init.d/httpd #编辑启动脚本,增加红色部分内容,以便通过chkconfig管理
#!/bin/sh
#chkconfig:345 66 88
#description:Startup script for the Apache HTTP Server
解释:
345 66 88表示:345运行级别是开启的,66为服务启动顺序,88服务为停止顺序。
chmod +x /etc/init.d/httpd
chkconfig --add httpd //将httpd服务添加为系统服务
chkconfig --list httpd
启动服务
service httpd start
报错1:httpd: Could not reliably determine the server's fully qualified domain name, using ::1 for ServerName 不能找到完全合格的域名
解决:vim /usr/local/httpd/conf/httpd.conf
97 #ServerName www.example.com:80
98 ServerName localhost:80
报错2:
/usr/local/apache/bin/httpd: error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory
有很多so模块在/usr/local/lib目录下,所以在/etc/ld.so.conf中加入/usr/local/lib这一行
[root@crushlinux conf]# vi /etc/ld.so.conf
/usr/local/lib
[root@crushlinux conf]# /sbin/ldconfig -v
现在您已经将 Apach源代码安装在 /usr/local/apache。本源代码安装支持可装载模块
和标准的 MPM prefork。之后,可以使用如下命令启动 Apache 服务器:
/usr/local/httpd/bin/apachectl start
二.安装MySQL
1.准备工作
(1)查看是否使用以rpm包安装的mysql-server-mysql软件,如果有,将其卸载。
[root@crushlinux ~]# rpm -qa | grep mysql
mysql-libs-5.1.71-1.el6.x86_64
rpm -ivh /mnt/Packages/ncurses-devel-5.7-3.20090208.el6.x86_64.rpm
(2)mysql5.5以上的版本都需要cmake编译。而不是./configure
所以需要安装cmake
tar xf cmake-2.8.6.tar.gz
cd cmake-2.8.6
./configure
gmake && gmake install
或这是
yum -y install cmake
2.源码编译及安装。
(1)
[root@crushlinux ~]#groupadd mysql
[root@crushlinux ~]# useradd -M -s /sbin/nologin mysql -g mysql
(2)解包
tar xf mysql-5.5.22.tar.gz -C /usr/src/
cd /usr/src/mysql-5.5.22/
(3)配置
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all
-DCMAKE_INSTALL-PREFIX=/usr/local/mysql :指定安装目录
-DSYSCONFDIR=/etc :指定初始化参数文件目录
-DDEFAULT_CHARSET=utf8 :指定默认的字符编码集,如utf8
-DDEFAULT_COLLATION=utf8_general_ci :指定默认使用的字符集校对规则。Utf8_general_ci是适用于utf-8字符集的通用规则
-DWITH_EXTRA_CHARSETS=all :指定额外支持的其他字符集编码(默认支持所有)
如报以下错误:解决方法如下:
rpm -ivh /mnt/Packages/ncurses-devel-5.7-3.20090208.el6.x86_64.rpm
[root@crushlinux mysql-5.5.22]# rm CMakeCache.txt
4)安装
make && make install
5).安装后的其他调整
chown -R mysql:mysql /usr/local/mysql/
6)建立配置文件
[root@crushlinux mysql]#rm -fr /etc/my.cnf
[root@crushlinux mysql]#cp support-files/my-medium.cnf /etc/my.cnf
7)初始化数据库
/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql
--datadir=/usr/local/mysql/data/
8)设置环境变量
[root@crushlinux mysql]# ln -s /usr/local/mysql/bin/* /usr/local/bin/
9)添加系统服务
[root@crushlinux mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@crushlinux mysql]# chmod +x /etc/init.d/mysqld
启动服务
[root@crushlinux mysql]# service mysqld start
Starting MySQL.. [ OK ]
5.登录验证
[root@crushlinux mysql] mysql
三.安装PHP
1.源码包安装libmcript
[root@crushlinux ~]# tar zxf libmcrypt-2.5.8.tar.gz [root@crushlinux ~]# cd libmcrypt-2.5.8/
[root@crushlinux libmcrypt-2.5.8]# ./configure
[root@crushlinux libmcrypt-2.5.8]# make && make install
[root@crushlinuxlibmcrypt-2.5.8]#ln -s /usr/local/lib/libmcrypt.* /usr/lib/
2.源代码安装mhash
[root@crushlinux ~]# tar zxf mhash-0.9.9.9.tar.gz
[root@crushlinux ~]# cd mhash-0.9.9.9/
[root@crushlinux mhash-0.9.9.9]# ./configure
[root@crushlinux mhash-0.9.9.9]# make && make install
[root@crushlinux mhash-0.9.9.9]# ln -s /usr/local/lib/libmhash* /usr/lib/
3、源代码安装mcrypt
[root@crushlinux ~]# tar zxf mcrypt-2.6.8.tar.gz
[root@crushlinux ~]# cd mcrypt-2.6.8/
[root@crushlinux mcrypt-2.6.8]# ./configure
[root@crushlinux mcrypt-2.6.8]# make && make install
编译时候报错:
configure: error: *** libmcrypt was not found
解决办法:
第一步:ln -s
/usr/local/bin/libmcrypt_config /usr/bin/libmcrypt_config
第二步:
export LD_LIBRARY_PATH=/usr/local/lib: LD_LIBRARY_PATH
4、编译php
[root@crushlinux ~]# tar zxf php-5.3.6.tar.gz
[root@crushlinux ~]# cd /php-5.3.6
[root@crushlinux php-5.3.6]# ./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
编译参数解释:
--prefix=/usr/local/php5 //指定安装目录
--with-mcrypt //加载扩展工具支持
--with-apxs2=/usr/local/httpd/bin/apxs //设置Apache提供的apxs模块 程序文件位置
--with-mysql=/usr/local/mysql //指定mysql服务的安装路径
--with-config-file-path=/usr/local/php5 //指定php配置文件“php.ini” 的存放路径
--enable-mbstring //启用多字节字符串功能
如报以上错误,解决方法如下
[root@crushlinux php-5.6.30]# rpm -ivh /media/cdrom/Packages/libxml2-2.7.6-14.el6.x86_64.rpm
[root@crushlinux php-5.6.30]# rpm -ivh /media/cdrom/Packages/zlib-devel-1.2.3-29.el6.x86_64.rpm
[root@crushlinux php-5.6.30]# rpm -ivh /media/cdrom/Packages/libxml2-devel-2.7.6-14.el6.x86_64.rpm
5.安装
make && make install
四.整合lamp组件环境
php.ini配置文件
安装好PHP软件包以后,服务器并不会自动创建php.ini配置文件,在源码包目录下提供了两个样例配置文件。
[root@crushlinux php-5.3.6]# cd php-5.3.6
[root@crushlinux php-5.3.6]# ls php.ini-*
/usr/src/php-5.3.6/php.ini-development //开发版样例文件,用户学习,测试
/usr/src/php-5.3.6/php.ini-production//生产版样例文件,用户实际运用
1)复制样例文件
[root@crushlinux php-5.3.6]#
cp php.ini-development /usr/local/php5/php.ini
2)php.ini配置调整
[root@crushlinux php-5.3.6]# vi /usr/local/php5/php.ini
773 default_charset = "utf-8" //设置默认字符集为utf-8
871 file_uploads = On //允许通过PHP网页上传文件
880 upload_max_filesize = 2M //允许上传的文件大小限制
883 max_file_uploads = 20 //每个HTTP请求最多允许上传的文件数
728 post_max_size = 8M //每次通过表单POST提交的数据量限制
226 short_open_tag = On //允许识别PHP短语法标记,即<? … ?>
3)调整Apache配置
[root@crushlinux ~]# vim /usr/local/httpd/conf/httpd.conf
53 LoadModule php5_module modules/libphp5.so
配置加载PHP程序的模块文件php5_module模块名称
modules/libphp5.so 模块位置
54 AddType application/x-httpd-php .php .phtml
添加对“.php”类型网页支持
169 DirectoryIndex index.php index.html
识别常见的php首页文件
[root@crushlinux ~]# /usr/local/httpd/bin/apachectl restart
五、测试
1)测试PHP能否正常提供服务
[root@crushlinux ~]# vim /usr/local/httpd/htdocs/test1.php
<?php
phpinfo(); 内建函数用于显示PHP环境信息
?>
[root@crushlinux ~]# /usr/local/httpd/bin/apachectl restart
浏览器输入:http://10.3.0.209/test1.php
有如上信息为正确
2)测试PHP能否正常访问mysql数据库
[root@crushlinux ~]# vi /usr/local/httpd/htdocs/test2.php
<?php
$link=mysql_connect('localhost','root',''); //连接的数据库
if($link) echo "OK!!"; // 连接成功时的反馈
else echo "FAILD!!"; // 失败时的反馈
?>
七.Lamp架构应用实例
部署phpMyAdmin系统:
- phpMyAdmin是一个使用PHP语言编写,用来管理MySQL数据库的Web应用系统。
- 通过该套件的网页界面对MySQL数据库进行管理和维护。
实验环境依托于:http://www.linuxidc.com/Linux/2013-07/87644.htm
1.解包并复制到网站目录:
Eg:将phpMyAdmin套件部署到网站根目录下,以便通过地址http://www.benet.com/phpMyAdmin/访问:
[root@crushlinux~]# tar zxf phpMyAdmin-3.3.10-all-languages.tar.gz
[root@crushlinux~]# mv phpMyAdmin-3.3.10-all-languages/ /usr/local/httpd/htdocs/phpMyAdmin
2.建立配置文件config.inc.php:
默认提供的样例配置文件为config.sample.inc,以此建立config.inc.php配置文件,查找并修改配置文件中的“blowfish_secret”行,并设置一个短语密钥(此密钥用于网页cookie认证,不需要用户记忆)
[root@crushlinux~]# cd /usr/local/httpd/htdocs/phpMyAdmin/
[root@crushlinuxphpMyAdmin]# cp config.sample.inc.phpconfig.inc.php
[root@crushlinuxphpMyAdmin]# vim config.inc.php
$cfg['blowfish_secret'] = '123.asd';
3.访问phpMyAdmin的Web管理界面:
在浏览器中访问http://www.benet.com/phpMyAdmin/:
授权配置操作:
phpMyAdmin主页面:
phpMyAdmin系统默认使用cookie认证方式,在首次访问时页面下方会提示“必须启用Cookies才能登录”,要求在客户机的浏览器启用cookies机制。【直接F5刷新就ok了】