今天我来介绍一下linux下lamp(apache+php+mysql)的环境配置,我将把apache+mysql+php分别安装在redhat下的opt目录下的httpd、mysql及php目录中,以达到可以通过浏览器访问phpinfo以及phpmyadmin页面的最终目的。
名词解释:
lamp是linux+apache+mysql+php的缩写,它指一组常用来搭建动态网站或者服务器的开源软件:
* linux,操作系统;
* apache,网页服务器;
* mysql,数据库管理系统(或者数据库服务器);
* php 和有時 perl 或 python,脚本语言。
以下为lamp的在wikipedia中的解释:http://en.wikipedia.org/wiki/lamp_%28software_bundle%29
环境准备:
*redhat操作系统(需要安装gcc和g++)-> rhel-server-5.3-x86_64
* mysql源码包 -> mysql-5.1.57.tar.gz
* apache源码包 -> httpd-2.2.21.tar.gz
* php源码包 -> php-5.2.17.tar.gz
* phpmyadmin源码包 à phpmyadmin-3.4.7.1-english.tar.gz
以上为我做实验的环境版本,大家可以根据自己的需要,到官网下载自己所需,不过不同版本可能会遇到不同问题,可能需要大家自己去搜索解决方案。
安装:
本次安装使用的都是源码编译安装,首先请将全部源码包复制到/usr/local/src下。安装之前,如果安装过其他版本的linux、mysql、apache和php,要先卸载。使用rpm包安装的用删除rpm包语句:[rpm -e 包名],查询包名用语句:[rpm -qa | grep 包名]。有依赖关系的包也要一次删除,这样才能成功的删除这些rpm包。
1. 安装及配置mysql
步骤一:编译安装
#cd /usr/local/src
#tar -zxvf mysql-5.1.57.tar.gz
#cd mysql-5.1.57
#groupadd -r mysql //创建mysql用户组
#useradd -m -r -g mysql -d /var/lib/mysql -s /bin/bash
>-c mysql server mysql //加入用户
#./configure --prefix=/opt/mysql //指定mysql安装目录
>--sysconfdir=/etc //指定mysql配置文件存放目录
>--localstatedir=/var/lib/mysql //指定mysql数据库存放目录
>--enable-local-infile //激活load data local infile语句,使mysql支持使用该语句 //等待,no news is good news
#make //编译(需较长时间),直到出现making install in win
#make install //安装,直到出现making install in win
#make clean
#make distclean
步骤二:初始化数据库
#cd /opt/mysql
#/bin/mysql_install_db//初始化系统数据库
#ls /var/lib/mysql //查看存放数据库中的目录内容
#chown -r mysql:mysql /var/lib/mysql //修改数据库所有者
步骤三:复制linux mysql配置文件到/etc目录中,并更名为my.cnf
#cp /opt/mysql/share/mysql/my-large.cnf /etc/my.cnf
步骤四:复制生成linux mysql服务器的自动与停止脚本
#cp /opt/mysql/share/mysql/mysql.server /etc/rc.d/init.d/mysql
步骤五:将linux mysql服务添加到服务器管理中,并设置自启动状态:
#chkconfig --list | grep mysql //查询当前是否有mysql服务
#chkconfig --add mysql //添加mysql服务到服务器管理中
#chkconfig --list | grep mysql //查询此时mysql服务器的启动状态
#chkconfig --level 35 mysql on //设置在3、5运行级别也自启动
步骤六:启动并测试linux mysql服务器
#service mysql start 或 /etc/rc.d/init.d/mysql start //启动mysql服务器
#/opt/mysql/bin/mysqladmin version //测试服务器是否已启动
#/opt/mysql/bin/mysqladmin ping
步骤七:将mysql加入环境变量
#export path=/opt/mysql/bin:$path
步骤八:修改root密码
#mysqladmin -u root password aha
最后,由于在编译php源码时,会使用到部分mysql的库文件和头文件,若服务器还需提供php动态网页服务,会导致找不到相应的文件,解决办法是为目录创建一个符号连接,其实现的操作命令如下:
#ln -s /opt/mysql/lib/mysql /usr/lib/mysql
#ln -s /opt/mysql/include/mysql /usr/include/mysql
至此,mysql安装完毕
2. 安装apache
步骤一:安装
#cd /usr/local/src
#tar -zxvf httpd-2.2.21.tar.gz
#cd httpd-2.2.21
#./configure --prefix=/opt/httpd //指定apache安装目录
>--enable-so //声明使用动态函数库
>--with-mpm=prefork
>--enable-modules=setenvif rewrite deflate vhost_alias
#make
#make install
#/opt/httpd/bin/apachectl start
步骤二:设置apache自启动
#echo /opt/httpd/bin/apachectl start>> /etc/rc.d/rc.local
#echo / opt/httpd /bin/apachectl start /opt/httpd /bin/apachectl start
步骤三:确定启动状态
#netstat –utl
tcp 0 0 *:http *:* listen
如果出现以上信息,则证明启动成功
3. 安装并配置php
步骤一:安装
#tar -zxvf php-5.2.17.tar.gz
#cd php-5.2.17
#./configure --prefix=/opt/php --with-mysql=/opt/mysql \
>--with-apxs2=/opt/httpd/bin/apxs //通俗易懂,不解释
#make
#make install
#make clean
#make distclean
步骤二:apache中加载php模块
#cp php.ini-dist /usr/local/lib/php.ini
#vim httpd.conf
查看是否有下面这句话,没有则添加
loadmodule php5_module modules/libphp5.so
找到“#addtype application/x-gzip .gz .tgz”添加
addtype application/x-httpd-php .php .phtml
addtype application/x-httpd-php-source .phps
步骤三:建立php测试文件
# vi /opt/httpd/htdocs/test.php
:wq
4. 配置并部署phpmyadmin
# tar zxvf phpmyadmin-3.4.7.1-english.tar.gz
# mv phpmyadmin-3.4.7.1- english /opt/httpd/htdocs/phpmyadmin
# cd /opt/httpd/htdocs/phpmyadmin
# cp ./libraries/config.default.php ./config.inc.php
#vi config.inc.php
$cfg['pmaabsoluteuri'] = ‘http://localhost/phpmyadmin';
$cfg['servers'][$i]['auth_type'] = 'http';
测试
重启apache服务器
# /opt/httpd/bin/apachectl restart
浏览器中输入:http://127.0.0.1/test.php,出现如下页面
浏览器中输入:http://127.0.0.1 /phpmyadmin ,出现如下页面
ok,大功告成
结束语
至此,lamp的安装及简单配置过程已经介绍完毕,有兴趣的朋友可以深入研究一下lamp的详细配置过程。当然,由于源码版本及硬件存在差异性,过程中也许会出现各种各样奇怪的问题,大家可以根据系统给出的提示信息去查找解决方案。解决问题的能力以及“抗摧残”能力是搞linux的人的必备基本素质。
希望能够多多交流,祝你成功!
ps:如果你觉得用lamp开发web项目已经过时,你还会有更多的选择,writing a web application is not just lamp any more!