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://apache.dataguru.cn//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依赖包
[[email protected]lab05 ~]# yum -y pcre-devel && yum -y groupinstall Development\ tools
添加用户apache用来启动apache
[[email protected] ~]# useradd -M -s /sbin/nologin apache
解压源码安装包,将解压后的apr和apr-util移动到http的srclib目录,因我后面编绎要用到--with-included-apr选项,安装apr库。
[[email protected] ~]# 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
[[email protected] ~]# cd http-2.4.16
[[email protected] ~]# 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。
[[email protected] ~]# ./configure --with-included-apr --enable-so
[[email protected] ~]# make
[[email protected] ~]# make install
#默认apache启动用户为daemon,编辑http.conf,修改User和Group为apache用户
[[email protected] ~]# vim /usr/local/apache2/conf/httpd.conf
[[email protected] ~]# /usr/local/apache2/bin/apachectl start #直接启动方式
开机启动设置:
复制安装包中 /httpd-2.4.16/build/rpm/httpd.init 到 /etc/init.d 目录,
修改http.init中
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下有没错误
[[email protected] ~]# logrotate -d /etc/logrotate.conf
执行logrotate 使日志轮循生效
[[email protected] ~]# 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
[[email protected] ~]# yum -y install autoconf automake make gcc gcc-c++ cmake ncurses-devel libaio libaio-devel
因为mysql启动时,会默认查找/etc/my.cnf.
[[email protected] ~]# mv /etc/my.cnf /etc/my.cnf.bak
[[email protected] ~]# groupadd mysql
[[email protected] ~]# useradd -r -g mysql mysql
# Beginning of source-build specific instructions
[[email protected] ~]# tar zxvf mysql-5.6.24.tar.gz ;mkdir /usr/local/mysql
[[email protected] ~]# cd mysql-5.6.24
[[email protected] ~]# cmake .
# 注意下 cmake是一个跨平台安装编译工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile(在Unix like系统下)或者project文件(指定用window下的相应编程工具编译时),能测试编译器所支持的C++特性,类似UNIX下的automake,还会产生CMakeCache.txt文件,当你想再次使用cmake时,要删除CMakeCache.txt ,否则可能会出错。
[[email protected] ~]# make
默认安装在 /usr/local/mysql
[[email protected] ~]# make install
# End of source-build specific instructions
# Postinstallation setup初始化data目录,系统数据库等设置
[[email protected] ~]# cd /usr/local/mysql
[[email protected] ~]# chown -R mysql .
[[email protected] ~]# chgrp -R mysql .
mysql_install_db为perl写的程序,以mysql用户进行安装,默认还会生my.cnf文件在安装目录
[[email protected] ~]# scripts/mysql_install_db --user=mysql
也可以加--basedir 和 --datadir更改默认安装目录和默认数据库安装目录
scripts/mysql_install_db --user=mysql --basedir=/opt/mysql/mysql --datadir=/opt/mysql/mysql/data
[[email protected] ~]# chown -R root .
默认安装后mysql数据库目录/usr/local/mysql/data,改变其拥有者为mysql用户。
[[email protected] ~]# chown -R mysql data
直接启动以mysql用户身份启动mysql的方式
[[email protected] ~]# bin/mysqld_safe --user=mysql &
开机启动设置:
# Next command is optional 开机启动mysql
[[email protected] ~]# 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/
[[email protected] ~]# 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下有没错误
[[email protected] ~]# logrotate -d /etc/logrotate.conf
执行logrotate 使日志轮循生效
[[email protected] ~]# logrotate /etc/logrotate.conf
到些mysql安装完成。
php安装
下载地址:http://cn2.php.net/distributions/php-5.6.12.tar.gz
php安装方法
[[email protected] ~]# yum -y install autoconf automake libtool re2c flex bison libxml2-devel gd-devel
[[email protected] ~]# 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支持。
[[email protected] ~]# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql
注意,在有些发行版本中,可能将 apxs 更名为 apxs2。
[[email protected] ~]# make
[[email protected] ~]# make test
[[email protected] ~]# make install
[[email protected] ~]# cp php.ini-development /usr/local/lib/php.ini
或者,当php.ini不在标准目录/usr/local/lib时,可用下面方法安装
[[email protected] ~]# yum -y install autoconf automake libtool re2c flex bison libxml2-devel
[[email protected] ~]# tar -zxvf php-5.6.9.tar.gz ;cd php-5.6.9 ; mkdir /usr/local/php
[[email protected] ~]# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql= /usr/local/mysql/bin/mysql_config --with-config-file-path=/usr/local/php
[[email protected] ~]# make
[[email protected] ~]# make test
[[email protected] ~]# make install
[[email protected] ~]# 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
<FilesMatch \.php$>
etHandler application/x-httpd-php
</FilesMatch>
如果想要 .php , .php2,.php3, .php4, .php5, .php6, .phtml 结尾的文件使apache,
当作php执行的话,方法二可以这样写:
<FilesMatch "\.ph(p[2-6]?|tml)$">
SetHandler application/x-httpd-php
</FilesMatch>
别外关于phps 源码
And to allow .phps files to be handled by the php source filter,
and displayed as syntax-highlighted source code, use this:
<FilesMatch "\.phps$">
SetHandler application/x-httpd-php-source
</FilesMatch>
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 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文件