web服务作为互联网的支柱及应用,在各种场合应用广泛.官方提供的rpm包由于要面对的是所有用户,把有些我们不需要的功能编译进去了,某些需要的功能又没编译进去.且官方提供的rpm版本通常都比较老旧,在实际应用中大多数情况都要使用源码来安装lamp平台.

环境:

 操作系统:CentOs6.4

 软件安装包:

      APR:apr-1.5.2.tar.gz、apr-util-1.5.4.tar.gz

      Apache:httpd-2.4.12.tar.gz

      Mysql:mysql-5.6.24.tar.gz

      PHP:php-5.6.8.tar.gz

一.安装Apache

   1.安装开发工具包,使用

       yum groupinstall "Development tools"

       yum -y install openssl-devel

       yum -y install pcre-devel

   2.安装apr

       ./configure  --prefix=/usr/local/apr

       make && make install

   3.安装apr-util

      ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr

       make && make install

   4.安装httpd

     ./configure --prefix=/usr/local/httpd  --sysconfdir=/etc/httpd --enable-so --enable-rewirte --enable-ssl --enable-cgi --enable-cgid --enable-modules=most --enable-mods-shared=most --enable-mpms-shared=all --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util

     make && make install

   5.给Apache提供服务脚本

    编辑配置文件/etc/httpd/httpd.conf

    增加一行指定pid文件路径:PidFile "/var/run/httpd.pid"

    增加一行指定ServerName:ServerName localhost:80

  找台安装了默认httpd版本的服务器找到/etc/init.d/httpd这个文件,复制过来改下

   运维必会LAMP平台源码安装_运维

 改完保存,然后把脚本复制到当前服务器的/etc/init.d目录下.就可以使用service httpd start等命令来控制httpd服务器了

 6.把httpd脚本加到服务列表中去

      chkconfig --add httpd

      chkconfig --level 35 httpd on

运维必会LAMP平台源码安装_LAMP_02

 7.增加环境变量路径

  vi /etc/profile.d/httpd.sh

在里面输入:export PATH=$PATH:/usr/local/httpd/bin

至此Apache服务器安装完成,可以在浏览器中输入地址测试下.

运维必会LAMP平台源码安装_httpd_03

二.安装mysql

  1.下载安装cmake

      yum -y insatll cmake  ncurses-devel libtool-ltdl-devel

  2.添加mysql用户mysql组

    groupadd -r mysql

    useradd -g mysql mysql

 3. 在/下面创建data目录用来放置mysql的数据文件

    mkdir data

    chown mysql /data

    chgrp mysql /data 

 4.编译安装

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci

    make && make install

 漫长的等待.....

 5.初始化mysql

    chgrp mysql /usr/local/mysql

    在mysql目录里找到scripts目录执行里面的脚本

    /usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/data --basedir=/usr/local/mysql
    (ps:如果直接到scripts里面用相对路径执行的话会报错 FATAL ERROR: Could not find ./bin/my_print_defaults,找不到当前目录下./bin/目录里面的my_print_defaults文件_论使用绝对路径的重要性)

 6.编辑配置文件/usr/local/mysql/

   指定pid文件目录:pid-file=/data

   指定data目录:datadir=/data

 7.给mysql提供服务脚本

   cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

 8.把httpd脚本加到服务列表中去

      chkconfig --add mysqld

      chkconfig --level 35 mysqld on

 9.增加环境变量路径

  vi /etc/profile.d/mysqld.sh

 运维必会LAMP平台源码安装_httpd_04 



三.安装PHP

  1.解决各种坑人的依赖关系,记不住等预编译报错然后一个个的解决

    yum -y install libxml2-devel.i686 libxml2.i686

  2.编译 

    ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbsting --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-sockets --with-apxs2=/usr/local/httpd/bin/apxs --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bzip2 --enable-maintainer-zts

    make && make install

  3.给php提供配置文件

   cp php.ini-production /etc/php.ini

  4.编辑Apache的配置文件让其支持php

     在AddType后面增加两行

     AddType application/x-httpd-php .php

     AddType application/x-httpd-php-source .phps

    在DirectoryIndex index.html后面添上index.php

     运维必会LAMP平台源码安装_httpd_05

     在LoadModule 后面增家一行开启php模块

     LoadModule php5_module  modules/libphp5.so

至此LAMP平台安装完成.


四.测试

  1.测试是否能解析php文件,在apache的网站目录下放个index.php文件

   运维必会LAMP平台源码安装_httpd_06

   结果如下:

  运维必会LAMP平台源码安装_LAMP_07


   2.测试php能否连接mysql

     运维必会LAMP平台源码安装_LAMP_08

    测试结果就不上图了...


附:

1:Apache编译参数

--prefix=/usr/local/apache :指定安装目标路径
--sysconfdir=/etc/httpd :指定配置文件安装位置
--enable-so :支持动态共享模块,如果没有这个模块PHP将无法与apache结合工作
--enable-rewirte :支持URL重写
--enable-ssl :启用支持ssl
--enable-cgi :启用支持cgi
--enable-cgid :启用支持带线状图形的CGI脚本 MPMs
--enable-modules=most :安装大多数模块
--enable-modules-shared=most :安装大多数共享模块
--enable-mpms-shared=all :支持全部多道处理方式
--with-apr=/usr/local/apr :指定apr路径
--with-apr-util=/usr/local/apr-util :指定apr-util路径


2:mysql编译参数

  http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html


3:PHP编译参数

--prefix=/usr/local/php
       指定 php 安装目录
--with-apxs2=/usr/local/apache/bin/apxs
       整合 apache,apxs功能是使用mod_so中的LoadModule指令,加载指定模块到 apache,要求 apache 要打开SO模块
--with-config-file-path=/usr/local/php/etc               
指定php.ini位置
--with-MySQL=/usr/local/mysql
       mysql安装目录,对mysql的支持
--with-mysqli=/usr/local/mysql/bin/mysql_config            
       mysqli扩展技术不仅可以调用MySQL的存储过程、处理MySQL事务,而且还可以使访问数据库工作变得更加稳定。
--enable-safe-mode        打开安全模式
--enable-ftp              打开ftp的支持
--enable-zip              打开对zip的支持
--with-bz2                打开对bz2文件的支持        
--with-jpeg-dir           打开对jpeg图片的支持
--with-png-dir            打开对png图片的支持
--with-freetype-dir       打开对freetype字体库的支持
--without-iconv           关闭iconv函数,种字符集间的转换
--with-libXML-dir         打开libxml2库的支持
--with-XMLrpc             打开xml-rpc的c语言
--with-zlib-dir           打开zlib库的支持
--with-gd                 打开gd库的支持
--enable-gd-native-ttf    支持TrueType字符串函数库
--with-curl               打开curl浏览工具的支持
--with-curlwrappers       运用curl工具打开url流
--with-ttf                打开freetype1.*的支持,可以不加了
--with-xsl                打开XSLT 文件支持,扩展了libXML2库 ,需要libxslt软件
--with-gettext            打开gnu 的gettext 支持,编码库用到
--with-pear               打开pear命令的支持,PHP扩展用的
--enable-calendar         打开日历扩展功能
--enable-mbstring         多字节,字符串的支持
--enable-bcmath           打开图片大小调整,用到zabbix监控的时候用到了这个模块
--enable-sockets          打开 sockets 支持
--enable-exif             图片的元数据支持
--enable-magic-quotes     魔术引用的支持
--disable-rpath           关闭额外的运行库文件
--disable-debug           关闭调试模式
--with-mime-magic=/usr/share/file/magic.mime      魔术头文件位置
     CGI方式安装才用的参数
--enable-fpm                      
     打上PHP-fpm 补丁后才有这个参数,CGI方式安装的启动程序
--enable-fastCGI                  
     支持fastcgi方式启动PHP
--enable-force-CGI-redirect        
     重定向方式启动PHP
--with-ncurses                    
      支持ncurses 屏幕绘制以及基于文本终端的图形互动功能的动态库
--enable-pcntl                     freeTDS需要用到的,可能是链接mssql 才用
       mhash和mcrypt算法的扩展
--with-mcrypt                     算法
--with-mhash                      算法
以上函数库需要安装
--enable-inline-optimization       优化线程
--with-openssl                     openssl的支持,加密传输时用到的
--enable-dbase                     建立DBA 作为共享模块
--with-pcre-dir=/usr/local/bin/pcre-config      perl的正则库案安装位置
--disable-dmalloc
--with-gdbm                         dba的gdbm支持
--enable-sigchild
--enable-sysvsem
--enable-sysvshm
--enable-zend-multibyte              支持zend的多字节
--enable-mbregex
--enable-wddx
--enable-shmop
--enable-soap