Lamp最新源码包一般安装过程及常见问题
l Lamp简介
l Apache安装
l Mysql安装
l Php安装
l 测试lamp
l 常见问题
l 参考资料
Lamp简介
Lamp是Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件。比较流行的是Linux+Apache+Mysql+PHP架构。
php功能很强大,安装包install文件中是这样说的:
Before starting the installation, first you need to know what do you want to use PHP for.
There are three main fields you can use PHP, as described in the What can PHP do? section:
* Websites and web applications (server-side scripting)
* Command line scripting
* Desktop (GUI) applications
翻译过可以理解为:php一般用作以下3个场景:
第一:网站和网络应用程序(服务器端脚本),做为web解析脚本,实现动态交互。
第二:命令行脚本
第三:开发桌面GUI应用
用的最多的是第一种,lamp既是第一种的应用,下面我们开始一步一步源码安装lamp
Apache安装
首先,安装apache,其下载地址为:
http://mirror.bit.edu.cn/apache/httpd/httpd-2.4.16.tar.gz
http://mirror.bit.edu.cn/apache/apr/apr-1.5.2.tar.gz
http://mirror.bit.edu.cn/apache/apr/apr-util-1.5.4.tar.gz
http://mirror.bit.edu.cn/apache/apr/apr-iconv-1.2.1.tar.gz
安装方法:
安装准备工作,安装编译开发工具(autoconf、automake、gcc、gcc-c++、make)和pcre依赖包
[root@lab05 ~]# yum -y pcre-devel && yum -y groupinstall Development\ tools
添加用户apache用来启动apache
[root@lab05 ~]# useradd -M -s /sbin/nologin apache
解压源码安装包,将解压后的apr和apr-util移动到http的srclib目录,因我后面编绎要用到--with-included-apr选项,安装apr库。
[root@lab05 ~]# tar -zxvf apr-1.5.2.tar.gz;tar -zxvf apr-util-1.5.4.tar.gz; tar -zxvf httpd-2.4.16.tar.gz
[root@lab05 ~]# cd http-2.4.16
[root@lab05 ~]# mv ../apr-1.5.2 ./srclib/apr;mv ../apr-util-1.5.4 ./srclib/apr-util
注意./configure没有用--prefix参数,那么默认安装目录为 /usr/local/apache2 ,--enable-so为支持DSO,更多可以用./configure --help,如果要启用重定向可以用--enable-rewrite,代理用--enable-proxy。
[root@lab05 ~]# ./configure --with-included-apr --enable-so
[root@lab05 ~]# make
[root@lab05 ~]# make install
#默认apache启动用户为daemon,编辑http.conf,修改User和Group为apache用户
[root@lab05 ~]# vim /usr/local/apache2/conf/httpd.conf
[root@lab05 ~]# /usr/local/apache2/bin/apachectl start #直接启动方式
开机启动设置:
复制安装包中 /httpd-2.4.16/build/rpm/httpd.init 到 /etc/init.d 目录,并改名为httpd
修改httpd中
httpd=${HTTPD-/usr/sbin/httpd} 为 httpd=${HTTPD-/usr/local/apache2/bin/httpd}
CONFFILE=/etc/httpd/conf/httpd.conf为 CONFFILE=/usr/local/apache2/conf/httpd.conf
其实pidfile和lockfile可以都不改的,因为其在标准目录/var没什么不好。
pidfile=${PIDFILE-/var/run/${prog}.pid}为 pidfile=${PIDFILE- /usr/local/apache2/logs/${prog}.pid}
lockfile=${LOCKFILE-/var/lock/subsys/${prog} 为lockfile=${LOCKFILE-/usr/local/apache2/logs/subsys/${prog}}
最后执行命令:chkconfig --add httpd.init && chkconfig httpd.init on
测试apache安装成功:
可以用netstat -tlunp和curl来检查有没有成功
也可通过ps 再查看进程,发现用户为apache。
也可以用浏览器访问测试,这里就不截图了。
日志轮循设置:
复制安装包中 /httpd-2.4.16/build/rpm/httpd.logrotate 到 /etc/logrotate.d/ 目录
修改httpd.logrotate中 /var/log/httpd/*log 为 /usr/local/apache2/logs/*log
执行logrotate -d来dbug下有没错误
[root@lab05 ~]# logrotate -d /etc/logrotate.conf
执行logrotate 使日志轮循生效
[root@lab05 ~]# logrotate /etc/logrotate.conf
到些apache安装完成。
Mysql安装:
下载地址:http://mirror.bit.edu.cn/mysql/Downloads/MySQL-5.6/mysql-5.6.26.tar.gz
Mysql安装方法
安装前需要安装cmake,gcc,make,gcc-c++,autoconf,automake,ncurses-devel,libaio,libaio-devel perl等编译开发工具和依赖包
# Preconfiguration setup
[root@lab05 ~]# yum -y install autoconf automake make gcc gcc-c++ cmake ncurses-devel libaio libaio-devel
因为mysql启动时,会默认查找/etc/my.cnf.
[root@lab05 ~]# mv /etc/my.cnf /etc/my.cnf.bak
[root@lab05 ~]# groupadd mysql
[root@lab05 ~]# useradd -r -g mysql mysql
# Beginning of source-build specific instructions
[root@lab05 ~]# tar zxvf mysql-5.6.24.tar.gz ;mkdir /usr/local/mysql
[root@lab05 ~]# cd mysql-5.6.24
[root@lab05 ~]# cmake .
# 注意下 cmake是一个跨平台安装编译工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile(在Unix like系统下)或者project文件(指定用window下的相应编程工具编译时),能测试编译器所支持的C++特性,类似UNIX下的automake,还会产生CMakeCache.txt文件,当你想再次使用cmake时,要删除CMakeCache.txt ,否则可能会出错。
[root@lab05 ~]# make
默认安装在 /usr/local/mysql
[root@lab05 ~]# make install
# End of source-build specific instructions
# Postinstallation setup初始化data目录,系统数据库等设置
[root@lab05 ~]# cd /usr/local/mysql
[root@lab05 ~]# chown -R mysql .
[root@lab05 ~]# chgrp -R mysql .
mysql_install_db为perl写的程序,以mysql用户进行安装,默认还会生my.cnf文件在安装目录
[root@lab05 ~]# scripts/mysql_install_db --user=mysql
也可以加--basedir 和 --datadir更改默认安装目录和默认数据库安装目录
scripts/mysql_install_db --user=mysql --basedir=/opt/mysql/mysql --datadir=/opt/mysql/mysql/data
[root@lab05 ~]# chown -R root .
默认安装后mysql数据库目录/usr/local/mysql/data,改变其拥有者为mysql用户。
[root@lab05 ~]# chown -R mysql data
直接启动以mysql用户身份启动mysql的方式
[root@lab05 ~]# bin/mysqld_safe --user=mysql &
开机启动设置:
# Next command is optional 开机启动mysql
[root@lab05 ~]# cp support-files/mysql.server /etc/init.d/mysql.server
最后执行命令:chkconfig --add mysql.server && chkconfig mysql.server on
测试mysql安装成功:
可以用netstat -tlunp和mysql命令来检查有没有成功
也可通过ps 再查看进程,发现用户为mysql。且默认日志和pid文件都安装目录的data目录的.
安装后安全设置:
可以执行 /usr/local/mysql/bin/mysql_secure_installation,按向导进行一步一步操作,如给mysql设密码啊,删除test测试数据库等。比较简单不多说了。
日志轮循设置:
复制源码安装包,或安装目录下的support-files/mysql-log-rotate 到/etc/logrotate.d/
[root@lab05 ~]# cp /usr/local/mysql/support-files/mysql-log-rotate /etc/logrotate.d/
修改mysql-log-rotate中/usr/local/mysql/data/mysqld.log为/usr/local/mysql/data/lab05.localdomain.err
执行logrotate -d来dbug下有没错误
[root@lab05 ~]# logrotate -d /etc/logrotate.conf
执行logrotate 使日志轮循生效
[root@lab05 ~]# logrotate /etc/logrotate.conf
到些mysql安装完成。
php安装
下载地址:http://cn2.php.net/distributions/php-5.6.12.tar.gz
php安装方法
[root@lab05 ~]# yum -y install autoconf automake libtool re2c flex bison libxml2-devel gd-devel libmcrypt-devel
[root@lab05 ~]# tar -zxvf php-5.6.9.tar.gz ;cd php-5.6.9 ; mkdir /usr/local/php
告诉php,建立共享的Apache 2.0的处理器模块。Apache apxs工具APXS的路径,加入mysql支持。
[root@lab05 ~]#./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --with-mysql-sock --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-embedded-mysqli --enable-fpm --with-fpm-user=apache --with-fpm-group=apache --enable-mbstring --with-mcrypt --with-bz2 --with-curl --enable-bcmath --enable-sockets --with-gd -with-jpeg-dir -with-png-dir --with-freetype-dir --with-gettext
注意,在有些发行版本中,可能将 apxs 更名为 apxs2, --enalbe-fpm为fastcgi对于apache可以不加,--with-mcrypt为加密功能。
[root@lab05 ~]# make
[root@lab05 ~]# make test
[root@lab05 ~]# make install
[root@lab05 ~]# cp php.ini-development /usr/local/lib/php.ini
或者,当php.ini不在标准目录/usr/local/lib时,可用下面方法安装
[root@lab05 ~]# yum -y install autoconf automake libtool re2c flex bison libxml2-devel gd-devel libmcrypt-devel
[root@lab05 ~]# tar -zxvf php-5.6.9.tar.gz ;cd php-5.6.9 ; mkdir /usr/local/php
[root@lab05 ~]# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql= /usr/local/mysql --enable-embedded-mysqli --enable-fpm --with-mcrypt --with-config-file-path=/usr/local/php
[root@lab05 ~]# make
[root@lab05 ~]# make test
[root@lab05 ~]# make install
[root@lab05 ~]# cp php.ini-development /usr/local/php/php.ini
到现在php已经安装成功,但还不能用我们还要在apache中声明。
php和apache结合
前面我们有说过php有3种应用场景,第一种web applications应用最广泛,那么apache
怎么连接php呢?
当做web applications 有两种连接方式:
apcache iis Netscape and iPlanet 通过直接模块接口连接php(被叫做SAPI)
nginx 通过fastcgi 或cgi 连接php (通用网关接口)
具体操作如下:
A、编辑http.conf文件 声明php 模块
加入LoadModule php5_module modules/libphp5.so 一般情况下会自动加入
B、告诉apache 解析php 有二种方法,第一种最常用,建议用第二更安全些。
方法一:编辑http.conf文件,利用apache的 AddType
AddType application/x-httpd-php .php
方法二:编辑http.conf文件,利用apache的 FilesMatch
etHandler application/x-httpd-php
如果想要 .php , .php2,.php3, .php4, .php5, .php6, .phtml 结尾的文件使apache,
当作php执行的话,方法二可以这样写:
SetHandler application/x-httpd-php
别外关于phps 源码
And to allow .phps files to be handled by the php source filter,
and displayed as syntax-highlighted source code, use this:
SetHandler application/x-httpd-php-source
mod_rewrite may be used To allow any arbitrary .php file to be displayed as syntax-highlighted source code,without having to rename or copy it to a .phps file:
RewriteEngine On
RewriteRule (.*\.php)s$ $1 [H=application/x-httpd-php-source]
The php source filter should not be enabled on production systems, where it may expose confidential or otherwise sensitive information embedded in source code.
C、在http.conf文件中,修改 DirectoryIndex index.html 为 DirectoryIndex index.html index.php
测试lamp
1. 关闭防火墙 service iptables stop,关闭selinux保护 setenforce 0
2.在apache安装目录/usr/local/apache2/htdocs/ 中创建index.php文件,并加入如下代码;
phpinfo();
?>
保存后,用浏览器访问,出现如下图,说明成功:
常见问题
关于测试php 浏览器访问时不显示
phpinfo(); ?> 不能显示,空白页一个,而 正常显示
为什么呢?
因为前面那个?>是短标签的的模式,你肯定是没有打开短标签模式,所以才不能正常显示,
你可以在php,ini中找到short_open_tag,然后把他的值改成on就可以了.
本文是 巧妙绝情 一个字一个图打出来,参考了好多资料,感谢他们的分享,基于open source分享精神,转载请注明出出。
支持我,请点击 巧妙绝情 谢谢
参考资料:
Apache安装: http://httpd.apache.org/docs/2.4/install.html 也可以参考安装包下INSTALL文件
Mysql安装:参考安装包下INSTALL文件
php安装:http://php.net/install.unix 也可以参考安装包下INSTALL文件