Lamp最新源码包一般安装过程及常见问题

 

 

Lamp简介

Apache安装

Mysql安装

Php安装

测试lamp

常见问题

参考资料

 

Lamp简介

LampLinux+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

安装方法:

     安装准备工作,安装编译开发工具(autoconfautomakegccgcc-c++make)和pcre依赖包

     [root@lab05 ~]# yum -y pcre-devel && yum -y groupinstall Development\ tools 

     添加用户apache用来启动apache 

     [root@lab05 ~]# useradd -M -s /sbin/nologin apache 

     解压源码安装包,将解压后的aprapr-util移动到httpsrclib目录,因我后面编绎要用到--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,修改UserGroupapache用户

     [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

     其实pidfilelockfile可以都不改的,因为其在标准目录/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 -tlunpcurl来检查有没有成功

     Lamp最新源码包一般安装过程及常见问题_第1张图片

     也可通过ps 再查看进程,发现用户为apache

     wKiom1YYvxexjvcEAAGzLC0wkCk608.jpg

     也可以用浏览器访问测试,这里就不截图了。

  日志轮循设置:

     复制安装包中 /httpd-2.4.16/build/rpm/httpd.logrotate 到 /etc/logrotate.d/ 目录 

     修改httpd.logrotate中 /var/log/httpd/*log 为 /usr/local/apache2/logs/*log

     执行logrotate -ddbug下有没错误

       [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++autoconfautomake,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_dbperl写的程序,以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 -tlunpmysql命令来检查有没有成功

    Lamp最新源码包一般安装过程及常见问题_第2张图片

   Lamp最新源码包一般安装过程及常见问题_第3张图片

也可通过ps 再查看进程,发现用户为mysql。且默认日志和pid文件都安装目录的data目录的.

 

wKioL1YYv2fz6-EdAAG2ps1vZK8944.jpg 

安装后安全设置

可以执行 /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 -ddbug下有没错误

       [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中声明。

phpapache结合

  前面我们有说过php3种应用场景,第一种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  codewithout 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();

?>

  保存后,用浏览器访问,出现如下图,说明成功:

  Lamp最新源码包一般安装过程及常见问题_第4张图片

 

常见问题

  关于测试php 浏览器访问时不显示

   不能显示,空白页一个,而  正常显示 

  为什么呢? 

  因为前面那个是短标签的的模式,你肯定是没有打开短标签模式,所以才不能正常显示,

  你可以在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文件