LApacheMP基础环境搭建

一、安装前准备

1.下载所需软件包:
apr             | http://apache.etoak.com/apr/
apr-util        | http://apache.etoak.com/apr/ 
autoconf        | http://ftp.gnu.org/gnu/autoconf/
curl            | http://curl.haxx.se/download/
freetype        | http://download.savannah.gnu.org/releases/freetype/
httpd           | http://httpd.apache.org/download.cgi
jpegsrc         | http://www.ijg.org/files/
libgd           | http://www.libgd.org
libmcrypt       | http://sourceforge.net/projects/mcrypt/files/Libmcrypt/ 
libpng          | ftp://ftp.simplesystems.org/pub/libpng/png/src/
libxml          | ftp://xmlsoft.org/libxml2/  
mysql           | ftp://mirror.switch.ch/mirror/mysql/Downloads/
pcre            | http://pcre.org/ 
php             | http://www.php.net/downloads.php 
zlib            | http://www.zlib.net


2.暂关闭SELinux和防火墙(Netfilter/iptables)
  A.暂关闭SELinux
    # vi /etc/selinux/config 或vi其软链接文件(# vi /etc/sysconfig/selinux)
      在约第6行,设置为禁用,即:SELINUX=disabled
      修改后重启linux方可生效!

  B.暂关闭防火墙(Netfilter/iptables),有些Linux系统防火墙对80端口可能默认禁止访问,参考命令:    
    查看一下开启情况:
    # chkconfig --list iptables

    将启动级别235关闭防火墙的启动
    # chkconfig --levels 235 iptables off
    
    或执行取消防火墙
    # iptables -F


3.【可选】如果无法使用网络yum源,也可尝试使用本地光盘作为yum源,方法: 
   A.进入 /etc/yum.repos.d/ 目录,此目录内存放有两个重要文件: CentOS-Base.repo 和 CentOS-Media.repo
     这个CentOS-Base.repo是配置网络yum源文件,也是yum命令优先查找的文件,将此文件更名让yum命令找不到此配置文件,而放弃使用网络yum源:
     # cd /etc/yum.repos.d/
     # mv CentOS-Base.repo BAK.CentOS-Base.repo
  
   B.vi编辑修改CentOS-Media.repo配置文件,此文件是能指引yum命令在本地寻找yum源的配置文件:
     # vi CentOS-Media.repo
       参考约第18行,为baseurl再添加一行备选项:file:///mnt/cdrom/
       在约第20行,设置使rpm验证不生效,更改为:gpgcheck=0
       在约第21行,设置本地yum源为启动,更改为:enabled=1
     
     # yum clean all                    清除原有的yum信息
     # pkill -9 yum-updatesd            如果yum报错正在升级,执行此命令,强制杀死升级进程
     # /etc/init.d/yum-updatesd restart 如果需要重启yum服务

   C.挂载光盘:# mount /dev/cdrom /media/

   D.卸载光盘:# umount /media/

   小结: 这样光盘既可以挂载到/media/下,也可以挂载到/mnt/cdrom/下;
         如果以后再想使用网络yum源,只需再将 BAK.CentOS-Base.repo 的名字改回来即可;


4.分别为 apache / mysql 创建执行用户组和用户
  A.创建 apache 组,添加 apache 用户并指定其缺省所属 apache 组  
    # groupadd apache                                创建组
    # useradd -M -g apache -s /sbin/nologin apache   添加用户(不创建家目录、指定所属组、非登录用户)
    # cat /etc/passwd | grep apache                  查看添加情况-用户
    # cat /etc/group | grep apache                   查看添加情况-组

  B.创建mysql组,添加mysql用户并指定其缺省所属mysql组  
    # groupadd mysql                                 创建组
    # useradd -M -g mysql -s /sbin/nologin mysql     添加用户(不创建家目录、指定所属组、非登录用户)
    # cat /etc/passwd | grep mysql                   查看添加情况-用户
    # cat /etc/group | grep mysql                    查看添加情况-组



二、检查安装环境,安装必要编译工具

1.查看或卸载已安装的二进制包apache和mysql(如果是源码包安装的直接删除安装目录即可)
  A.查看apache和mysql是否已安装,以下命令均可:
    # rpm -qa | grep httpd
    # rpm -qa | grep mysql
    # httpd -v
    # mysql -V
  B.卸载二进制包安装的apache和mysql,若报有依赖关系提示可加--nodeps选项:
    # rpm -e --nodeps httpd
    # rpm -e --nodeps mysql
    # yum remove httpd
    # yum remove mysql


2.安装或升级必需的编译工具 gcc  gcc-c++  libstdc++-devel 至少v4.4或更高版本:      
  # rpm -qa | grep "gcc*"
  # rpm -qa | grep make
  # rpm -qa | grep "libstdc++*"

  如果没有安装,推荐yum安装(确保gcc gcc-c++安装v4.4版本以上),参考命令:
  # yum install -y gcc gcc-c++
  # yum install -y make
  # yum install -y gcc44 gcc44-c++    //注:如果gcc gcc-c++安装v4.4版本以上此步可跳过
  # yum install -y libstdc++44-devel  //注:如果libstdc++-devel安装v4.4版本以上此步可跳过


3.检查编译libgd库需要的软件包: libXpm 和 libXpm-devel
  Xpm是linux下常用的图像处理软件,可以程序具有读取xpm格式图像的功能。
  检查是否已安装,如没有安装,推荐yum安装:
  # rpm -qa | grep "libXpm*"
  # rpm -qa | grep libXpm-devel
  -------------------------------
  # yum install -y libXpm libXpm-devel


4.检查编译 libevent
  libevent是一个事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue等系统调用管理事件机制。
  检查是否已安装,如没有安装,推荐yum安装:
  # rpm -qa | grep libevent
  -------------------------------
  # yum install -y libevent


5.检查编译apache/nginx所需软件包: openssl 和 openssl-devel
  OpenSSL 是一个支持加密术的工具包。openssl-devel软件包包括开发支持多种加密算式和协议的程序所需的静态库和包含文件。
  检查是否已安装,如没有安装,推荐yum安装:
  # rpm -qa | grep "openssl*"
  # rpm -qa | grep openssl-devel
  -------------------------------
  # yum install -y openssl openssl-devel


6.检查编译MySQL所需软件包:
  A.检查 ncurses 和 ncurses-devel 否已安装,如没有安装可使用yum安装:
    Ncurses 提供字符终端处理库,包括面板和菜单。
    # rpm -qa | grep "ncurses*"
    # rpm -qa | grep ncurses-devel
    -------------------------------
    # yum install -y ncurses
    # yum install -y ncurses-devel

  B.检查 cmake 和 bison 否已安装,如没有安装可使用yum安装:
    CMake 是一个跨平台的自动化建构系统,它使用一个名为 CMakeLists.txt 的文件来描述构建过程,可以产生标准的构建文件,如 Unix 的 Makefile 或Windows Visual C++ 的 projects/workspaces 。
    GNU bison 是属于 GNU 项目的一个语法分析器生成器。Bison 把一个关于“向前查看 从左到右 最右”(LALR) 上下文无关文法的描述转化成可以分析该文法的 C 或 C++ 程序。它也可以为二义文法生成 “通用的 从左到右 最右” (GLR)语法分析器。
    # rpm -qa | grep cmake
    # rpm -qa | grep bison
    -------------------------------
    # yum install -y cmake
    # yum install -y bison


7.检查编译PHP需要的软件包: libtool 和 libtool-ltdl 和 libtool-ltdl-devel
  GNU libtool 是一个通用库支持脚本,将使用动态库的复杂性隐藏在统一、可移植的接口中。用来生成动态库和静态库,可以直接用,也可以和automake和autoconf一起用,生成后缀是la的库文件,被程序调用,生成Makefile不可少的工具
  检查是否已安装,如没有安装,推荐yum安装:
  # rpm -qa | grep "libtool*"
  # rpm -qa | grep libtool-ltdl  
  -------------------------------
  # yum install -y libtool
  # yum install -y libtool-ltdl
  # yum install -y libtool-ltdl-devel

  ★ 至此安装前的准备工作基本完成,建议重启一下系统,再安装!


三、开始安装

1.安装zlib -- 是apache/nginx和PHP编译所必需
  zlib是提供数据压缩用的函式库,由Jean-loup Gailly与Mark Adler所开发,初版0.9版在1995年5月1日发表。zlib使用DEFLATE算法,最初是为libpng函式库所写的,后来普遍为许多软件所使用。此函式库为自由软件,使用zlib授权
  注:若不指定安装路径,以后可以通过使用命令: # rpm -ql zlib 查看其安装位置(通常是安装在 /usr/lib/ 目录内) 
  # tar -zxvf zlib-1.2.8.tar.gz && cd zlib-1.2.8
  # ./configure --prefix=/usr/local/zlib/
  # make
  # make install


2.安装 pcre 软件包 -- 是apache/nginx编译所必需
  PCRE(Perl Compatible Regular Expressions中文含义:perl语言兼容正则表达式)是一个用C语言编写的正则表达式函数库,由菲利普.海泽(Philip Hazel)编写。PCRE是一个轻量级的函数库,比Boost之中的正则表达式库小得多。PCRE十分易用,同时功能也很强大,性能超过了POSIX正则表达式库和一些经典的正则表达式库。
  # tar -zxvf pcre-8.32.tar.gz && cd pcre-8.32
  # ./configure --prefix=/usr/local/pcre/
  # make
  # make install


3.安装 libxml2 (libxml2安装PHP必须软件包)
  libxml2 是一个xml c语言版的解析器,本来是为Gnome项目开发的工具,是一个基于MIT License的免费开源软件。它除了支持c语言版以外,还支持c++、PHP、Pascal、Ruby、Tcl等语言的绑定,能在Windows、Linux、Solaris、MacOsX等平台上运行。功能还是相当强大的,相信满足一般用户需求没有任何问题。

  A.检查 libxml2-devel 软件包是否已安装: 
    查看命令: # rpm -qa | grep libxml2-devel
    安装命令: # yum install -y libxml2-devel
    升级命令: # yum update libxml2-devel

  B.执行安装 libxml
    # tar -zxvf libxml2-2.8.0.tar.gz && cd libxml2-2.8.0
    # ./configure --prefix=/usr/local/libxml/
    # make 
    # make install


4.安装 libmcrypt
  libmcrypt是加密算法扩展库。支持DES, 3DES, RIJNDAEL, Twofish, IDEA, GOST, CAST-256, ARCFOUR, SERPENT, SAFER+等算法。

  A.先安装libmcrypt包
    # tar -zxvf libmcrypt-2.5.8.tar.gz && cd libmcrypt-2.5.8
    # ./configure --prefix=/usr/local/libmcrypt/
    # make 
    # make install

  B.再进入libltdl目录,安装libltdl工具(也在libmcrypt源码包目录中,非新软件)
    # cd libltdl
    # ./configure --enable-ltdl-install
    # make
    # make install


5.安装libpng(若版本过高反而可能报错)
  libpng 软件包包含libpng库,这些库被其他程式用于解码png图片。

  A.检查编译libpng编译需要的工具: zlib-devel
    查看命令: # rpm -qa | grep zlib-devel
    安装命令: # yum install -y zlib-devel
    升级命令: # yum update zlib-devel

  B.执行安装libpng
    # tar -zxvf libpng-1.4.12.tar.gz && cd libpng-1.4.12
    # ./configure --prefix=/usr/local/libpng/
    # make
    # make install


6.安装jpeg
  jpeg用于解码.jpg和.jpeg图片。这个程序安装时并不会自动创建安装目录,需要人工事先帮其创建。
  注:--enable-shared 与 --enable-static参数分别表示为建立共享库和静态库使用的 libtool
  # tar -zxvf jpegsrc.v8d.tar.gz && cd jpeg-8d
  # ./configure --prefix=/usr/local/jpeg/ --enable-shared --enable-static
  # make
  # make install


7.安装freetype
  FreeType库是一个完全免费(开源)的、高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件,包括TrueType, OpenType, Type1, CID, CFF, Windows FON/FNT, X11 PCF等。支持单色位图、反走样位图的渲染。FreeType库是高度模块化的程序库,虽然它是使用ANSI C开发,但是采用面向对象的思想,因此,FreeType的用户可以灵活地对它进行裁剪。
  # tar -zxvf freetype-2.4.12.tar.gz && cd freetype-2.4.12
  # ./configure --prefix=/usr/local/freetype/
  # make
  # make install


8.安装autoconf
  autoconf 是一个用于生成可以自动地配置软件源代码包以适应多种Unix类系统的shell脚本的工具。此程序最好不指定安装路径,原因是有些文件安装可能会报告找不到autoconf路径文件。
  # tar -zxvf autoconf-2.68.tar.gz && cd autoconf-2.68
  # ./configure
  # make
  # make install


9.安装GD库
  GD库,是PHP处理图形的扩展库,GD库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片。 在网站上GD库通常用来生成缩略图,或者用来对图片加水印,或者用来生成汉字验证码,或者对网站数据生成报表等。
  # tar -zxvf libgd-2.1.0.tar.gz && cd libgd-2.1.0
  # ./configure --prefix=/usr/local/libgd/ --with-png=/usr/local/libpng/ --with-jpeg=/usr/local/jpeg/ --with-freetype=/usr/local/freetype/
  
     -------------------------------------------------------------------------------------------------------
      注:如果在后面的PHP安装有报Xpm找不到错误,用命令查询一下上面由yum安装的 libXpm-devel 的位置,查询命令:
      # rpm -ql libXpm-devel
      ......
      /usr/lib/libXpm.so    //32位系统
      /usr/lib64/libXpm.so  //64位系统
      ......
      通常是安装在 /usr/lib/ 或 /usr/lib64/ 目录内,重新安装GD库,并加上 --with-xpm=/usr/lib/ 或 --with-xpm=/usr/lib64/ 这个配置选项
     -------------------------------------------------------------------------------------------------------

  # make
  # make install


10.安装curl
  curl是利用URL语法在命令行方式下工作的开源文件传输工具。它被广泛应用在Unix、多种Linux发行版中,并且有DOS和Win32、Win64下的移植版本。
  # tar -zxvf curl-7.16.0.tar.gz && cd curl-7.16.0
  # ./configure --prefix=/usr/local/curl/
  # make
  # make install


11.安装apr软件包(apache2.4以上版本需要)
   APR(Apache portable Run-time libraries,Apache可移植运行库)的目的如其名称一样,主要为上层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库。
   先安装apr
   # tar -zxvf apr-1.4.8.tar.gz && cd apr-1.4.8
   # ./configure --prefix=/usr/local/apr-httpd/
   # make
   # make install


12.安装apr-util软件包(apache2.4以上版本需要)
   APR(Apache portable Run-time libraries,Apache可移植运行库)的目的如其名称一样,主要为上层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库。
   # tar -zxvf apr-util-1.5.2.tar.gz && cd apr-util-1.5.2
   # ./configure --prefix=/usr/local/apr-util-httpd/ --with-apr=/usr/local/apr-httpd/
   # make
   # make install


13.安装apache服务器
  A.执行安装
    # tar -zxvf httpd-2.4.6.tar.gz && cd httpd-2.4.6
    # ./configure --prefix=/usr/local/apache/ --sysconfdir=/usr/local/apache/etc/ --with-z=/usr/local/zlib/ --with-pcre=/usr/local/pcre/ --with-apr=/usr/local/apr-httpd/ --with-apr-util=/usr/local/apr-util-httpd/ --enable-mods-shared=all --enable-deflate --enable-speling --enable-cache --enable-file-cache --enable-disk-cache --enable-mem-cache --enable-so --enable-expires=shared --enable-rewrite=shared --enable-static-support --disable-userdir
      
      选项解析:
        --prefix=/usr/local/apache/                 指定安装目录
        --sysconfdir=/usr/local/apache/etc/         指定配置文件httpd.conf存放目录
        --with-z=/usr/local/zlib/                   指定去哪儿找zlib
        --with-pcre=/usr/local/pcre/                指定去哪儿找pcre
        --with-apr=/usr/local/apr-httpd/            指定去哪儿找apr(在编译时强制使用当前源代码中绑定的APR版本)
        --with-apr-util=/usr/local/apr-util-httpd/  指定去哪儿找apr-util
        --enable-mods-shared=all                    指定动态加载所有模块(如果去掉-shared话,是静态加载所有模块)
        --enable-deflate                            支持网页压缩传输
        --enable-speling                            支持更正普通的URL拼写错误
        --enable-cache                              支持缓存
        --enable-file-cache                         支持文件缓存
        --enable-disk-cache                         支持磁盘缓存
        --enable-mem-cache                          支持记忆缓存
        --enable-so                                 指定允许DSO(动态共享对像)
        --enable-expires=shared                     设置客户端缓存过期时间
        --enable-rewrite=shared                     支持 URL 重写
        --enable-static-support                     支持静态连接
        --disable-userdir                           禁止映射用户目录

    # make
    # make install


  B.启动apache测试:
    # /usr/local/apache/bin/apachectl start         启动
    # netstat -tunpl | grep 80                      查看状态
    # ps -le | grep httpd                           查看状态
    # vi /usr/local/apache/htdocs/index.html        默认首页 

    注1: 如果启动时报警告:
         AH00557: httpd: apr_sockaddr_info_get() failed for ...(主机名)
         AH00558: httpd: Could not reliably determine the server fully qualified domain name, using 127.0.0.1 ......
         是因为 httpd.conf 配置文件中的 ServerName 项没有配置为你的主机名,这个没有关系,暂时不用理会它,待稍后再一同配置。

    注2: 如果确认 httpd 已经启动,但通过浏览器就是无法访问到首页,确认服务器防火墙是否屏蔽了80端口访问,解决办法: # iptables -F 关闭防火墙

    注3: 若启动时提示 /usr/local/apache/modules/mod_deflate.so 无权限,可关闭SELinux,或者执行命令:
         # chcon -t texrel_shlib_t /usr/local/apache/modules/mod_deflate.so    
         类似情况 xxx.so 文件不能载入或没有权限的问题,多是SELinux问题,使用命令: “chcon -t texrel_shlib_t {文件名}”即可解决,MySQL也可能有类似问题,解决方法相似。

    如果没有报错,通过浏览器输入地址访问:http://{你Linux的IP地址} 如果显示 It works! 那么恭喜你apache安装成功!

  C.设置apache随系统自启动(用vi编辑 /etc/rc.d/rc.local 添加也可):
    # echo "# Apache随系统自启动:" >> /etc/rc.d/rc.local
    # echo "/usr/local/apache/bin/apachectl start" >> /etc/rc.d/rc.local


14.1安装MySQL
    A.执行安装(确认ncurses 和 ncurses-devel已安装)
      # tar -zxvf mysql-5.5.34.tar.gz && cd mysql-5.5.34 【MySQL5.5.xx】
      # tar -zxvf mysql-5.6.15.tar.gz && cd mysql-5.6.15 【MySQL5.6.xx】
        ---------------------------------------------------------------------------------
       【如需安装 SphinxSE 引擎插件,目前仅支持到MySQL5.5.xx (MySQL5.6.xx暂不支持)】
         解压coreseek源码包
         # tar -zxvf coreseek-4.1-beta.tar.gz

         拷贝mysqlse到MySQL源码包相应目录,并更名为sphinx
         # cp -Rv /root/sphinx-coreseek/coreseek-4.1-beta/csft-4.1/mysqlse ./storage/sphinx
        ---------------------------------------------------------------------------------
      # cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS:STRING=utf8,gbk -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_USER=mysql -DMYSQL_TCP_PORT=3306 -DWITH_DEBUG=0 -DCMAKE_BUILD_TYPE=Release -DWITH_SPHINX_STORAGE_ENGINE=1

        选项解析:
        -DCMAKE_INSTALL_PREFIX=/usr/local/mysql  指定安装目录
        -DSYSCONFDIR=/usr/local/mysql            指定配置文件my.cnf存放目录
        -DMYSQL_DATADIR=/usr/local/mysql/data    指定用户数据库文件存放目录
        -DMYSQL_UNIX_ADDR=/tmp/mysql.sock        支持使用unix套接字提高性能,指定sock文件存放路径
        -DDEFAULT_CHARSET=utf8                   默认字符集
        -DDEFAULT_COLLATION=utf8_general_ci      默认校对字符集
        -DWITH_EXTRA_CHARSETS:STRING=utf8,gbk    指定也支持扩展字符集:utf8和gbk
        -DWITH_INNOBASE_STORAGE_ENGINE=1         支持InnoDB引擎    
        -DWITH_READLINE=1                        readline库
        -DENABLED_LOCAL_INFILE=1                 启用加载本地数据
        -DMYSQL_USER=mysql                       mysqld运行用户
        -DMYSQL_TCP_PORT=3306                    指定TCP/IP监听端口
        -DWITH_DEBUG=0                           去除调试模式
        -DCMAKE_BUILD_TYPE=Release              【如需 SphinxSE 引擎插件】
        -DWITH_SPHINX_STORAGE_ENGINE=1          【如需 SphinxSE 引擎插件】

      # make
      # make install

    B.进入安装目录 ★
      # cd /usr/local/mysql/

    C.对mysql安装目录更改权限
      方法一:用acl来让mysql用户对/usr/local/mysql有所有权限
      # setfacl -m u:mysql:rwx -R /usr/local/mysql
      # setfacl -m d:u:mysql:rwx -R /usr/local/mysql

      方法二:   
      # chown -R mysql /usr/local/mysql   将数据库文件目录及其所有子文件,所有者改mysql用户

    E.初始化数据库(创建数据库授权表)
      注意1:当启动MySQL服务时,会按照一定次序搜索配置文件my.cnf,先找/etc/my.cnf,找不到则会继续搜索当前安装目录"$basedir/my.cnf",这是新版MySQL5.6+以后版本的配置文件的默认位置!
      注意2:在CentOS 6.x版操作系统的最小安装完成后,在/etc目录下会确实存在一个my.cnf,需要将此文件更名为其他的名字或将其直接删除掉,否则,该文件会干扰源码安装的MySQL的正确配置,造成无法启动,参考命令:    
      # mv /etc/my.cnf /etc/my.cnf.fuck

      执行初始化数据库
      # ./scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql

      注1:在 MySQL5.6 以后版本,初始化完成后会自动在安装根目录生成配置文件 my.cnf    
  
      注2:在 MySQL5.5 版本及以下版本需手工拷贝my.cnf配置文件到指定目录并更名,参考命令:
           # cp ./support-files/my-huge.cnf /usr/local/mysql/my.cnf


14.2启动MySQL服务,并设置root密码:
    # /usr/local/mysql/bin/mysqld_safe --user=mysql &           启动mysql并放入后台运行
    # netstat -tunpl | grep 3306                                查看启动情况
    # /usr/local/mysql/bin/mysqladmin -uroot password '123456'  设置mysql的root密码
    # /usr/local/mysql/bin/mysqladmin version -uroot -p123456   查看mysql版本信息
    -----------------------------------------------------------------------------------------------
    # /usr/local/mysql/bin/mysql -uroot -p123456                              客户端登录
    mysql>s;                                                                 查看字符集是否改为utf8   
    mysql> grant all privileges  on *.* to 'root'@'%' identified by '123456'; 授权开启支持远程连接
    mysql> select host,user,password from mysql.user;                         查询用户表
    mysql> flush privileges;                                                  刷新授权表使之立即生效
    -----------------------------------------------------------------------------------------------
    mysql> set password for 'root'@'localhost'=password('root123');           为某个已存在的用户设置密码
    -----------------------------------------------------------------------------------------------
    mysql> install plugin sphinx soname 'ha_sphinx.so';                       安装Sphinx引擎插件
    mysql> show engines;                                                      查看安装结果(列出SPHINX表示安装成功)    
    -----------------------------------------------------------------------------------------------
    # pkill mysqld                                                            停止mysqld服务


14.3设置MySQL随系统自启动
    方法一: chkconfig管理法
    # cp -v ./support-files/mysql.server /etc/rc.d/init.d/mysqld  将mysql源码目录support-files/mysql.server拷贝到系统启动加载目录并更名
    # chmod 0755 /etc/rc.d/init.d/mysqld                          权限改为只有所有者root有全部权限,所属组、其它人有读、执行权限
    # chkconfig --add mysqld                                      把此mysqld脚本加入chkconfig管理体系(前提是此脚本已在/etc/rc.d/init.d/目录了)
    # chkconfig --list mysqld                                     查看mysqld脚本各系统运行级别的启动状态
    # chkconfig --levels 235 mysqld on                            再指定mysqld脚本在系统235级别自动启动

    这样以后就可以使用:# service mysqld {start|stop|restart|reload|force-reload|status} 命令了...

    方法二: 编辑 /etc/rc.d/rc.local 自启动脚本法
    # echo "# MySQL随系统自启动:" >> /etc/rc.d/rc.local
    # echo "/usr/local/mysql/bin/mysqld_safe --user=mysql &" >> /etc/rc.d/rc.local


15.安装PHP
  A.CentOS 6.x 以上版本在 ./configure 时 可能出错: configure: error: Don’t know how to define struct flock on this system, set –enable-opcache=no
    解决方案,如下在系统的 /etc/ld.so.conf.d/ 目录中创建一个 xxxxxx.conf 的文件,比如:local.conf,名称可以随便取只要以.conf为后缀即可。

    根据你操作系统不同,选择向local.conf文件添加如下其中一行内容:
      /usr/local/lib       //for 32位系统
      /usr/local/lib64     //for 64位系统

    参考命令(根据你的操作系统选其一):
    # echo '/usr/local/lib' > /etc/ld.so.conf.d/local.conf    //for 32位系统
    # echo '/usr/local/lib64' > /etc/ld.so.conf.d/local.conf  //for 64位系统

    # ldconfig -v  //★ :wq保存退出后,再执行此命令使之立即生效

  B.执行安装
    # tar -zxvf php-5.5.6.tar.gz && cd php-5.5.6
    # ./configure --prefix=/usr/local/php/ --with-config-file-path=/usr/local/php/etc/ --with-zlib-dir=/usr/local/zlib/ --with-libxml-dir=/usr/local/libxml/ --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql/ --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-mysql=/usr/local/mysql/ --with-mcrypt=/usr/local/libmcrypt/ --with-png-dir=/usr/local/libpng/ --with-jpeg-dir=/usr/local/jpeg/ --with-freetype-dir=/usr/local/freetype/ --with-gd=/usr/local/libgd/ --with-curl=/usr/local/curl/ --enable-soap --enable-mbstring=all --enable-sockets --enable-zip --enable-opcache --enable-gd-native-ttf --enable-maintainer-zts
     
      选项解析:
        --prefix=/usr/local/php/                        指定PHP安装位置
        --with-config-file-path=/usr/local/php/etc/     指定php.ini配置文件目录
        --with-zlib-dir=/usr/local/zlib/                指定去哪儿找zlib
        --with-libxml-dir=/usr/local/libxml/            指定去哪儿找libxml
        --with-apxs2=/usr/local/apache/bin/apxs         指定去哪儿找apache动态模块源码,即:
                                                        1.PHP安装时会将libphp5.so文件安装到apache目录下的modules目录中
                                                        2.并向配置文件httpd.conf中写入“LoadModule php5_module modules/libphp5.so”配置项
        --with-mysql=/usr/local/mysql/                  指定去哪儿找mysql
        --with-mysqli=/usr/local/mysql/bin/mysql_config 指定去哪儿找mysqli
        --with-pdo-mysql=/usr/local/mysql/              指定去哪儿找pdo-mysql
        --with-mcrypt=/usr/local/libmcrypt/             指定去哪儿找libmcrypt
        --with-png-dir=/usr/local/libpng/               指定去哪儿找libpng
        --with-jpeg-dir=/usr/local/jpeg/                指定去哪儿找jpeg
        --with-freetype-dir=/usr/local/freetype/        指定去哪儿找freetype
        --with-gd=/usr/local/libgd/                     指定去哪儿找GD库
        --with-curl=/usr/local/curl/                    指定去哪儿找curl      
        --enable-soap                                   支持soap
        --enable-mbstring=all                           支持多字节,字符串
        --enable-sockets                                支持套接字
        --enable-zip                                    打开对zip的支持
        --enable-opcache                                支持Zend OPcache缓存加速
        --enable-gd-native-ttf                          支持TrueType字符串函数库
        --enable-maintainer-zts                         允许线程安全(使用多线程此项必选)

    # make
    # make install



四、配置篇

1.拷贝生成PHP配置文件php.ini,并简单配置    
  将php源码包中的 php.ini-development 拷贝到 /usr/local/php/etc/ 中,并更名为php.ini
  # cp php.ini-development /usr/local/php/etc/BAK.php.ini
  # cp php.ini-development /usr/local/php/etc/php.ini

  vi编辑打开php.ini文件
  # vi /usr/local/php/etc/php.ini

  找到约第923行,设置时区为中国时区:
  date.timezone = PRC


2.编辑Apache服务器的配置文件 httpd.conf
  A.配置httpd.conf文件
    # cp /usr/local/apache/etc/httpd.conf /usr/local/apache/etc/BAK.httpd.conf   备份
    # vi /usr/local/apache/etc/httpd.conf                                        编辑
    
    在约第176 177行,找到User和Group,这里指定Apache以哪个组、用户身份运行,将其修改为:
    User apache  
    Group apache

    参考约第207行,指定服务器主机名ServerName(前文提到过),如下: 
    ServerName localhost:80

    在约第231行,找到默认站点根目录(DocumentRoot "/usr/local/apache//htdocs"),改为自己的站点目录:
    DocumentRoot "/wwwroot"

    在约第232行,找到默认站点根目录访问规则配置(<Directory "/usr/local/apache//htdocs">),改为自己的站点目录:
    <Directory "/wwwroot">

    参考约第265行,添加apache默认索引文件名,如下:
    DirectoryIndex index.html index.htm index.php index.phtml

    参考约第393行,添加apache支持文件类型app,使其支持PHP,如下:
    AddType application/x-httpd-php .php .phtml .phps            # 注: .phtml为将.phps做为PHP源文件语法高亮显示

  B.创建自己的站点目录,并设置用户apache对站点目录的操作权限
    # mkdir /wwwroot
    # setfacl -m u:apache:rwx -R /wwwroot
    # setfacl -m d:u:apache:rwx -R /wwwroot

  C.重启Apache服务器: # /usr/local/apache/bin/apachectl stop
                      # /usr/local/apache/bin/apachectl start

  D.在自己站点目录下写一个phpinfo.php文件测试效果: 
    # echo '<?php phpinfo();?>' > /wwwroot/phpinfo.php


3.编辑MySQL数据库的配置文件 my.cnf
  # vi /usr/local/mysql/my.cnf

   [mysqld] 区块修改(或末尾添加)

   # 开启慢查询日志
   slow_query_log = 1

   # 设置慢查询日志文件路径
   slow_query_log_file = /usr/local/mysql/data/slow_query_log_file.log

   # 设置慢查询最小时间(单位:秒)
   long_query_time = 0.5

   # 开启 bin-log 日志(名称为mysql-bin.00000x)
   log_bin = mysql-bin

   # 忽略主机名的方式访问
   skip_name_resolve = 1

   #【可选】设置默认表引擎类型
   default_storage_engine = MyISAM

   #【可选】设置innodb引擎使用独立表空间(从v5.6版本起默认是开启的)
   innodb_file_per_table = 1

   #【可选】设置字符集
   character_set_client=utf8        # 客户端字符集
   character_set_connection=utf8    # 连接字符集
   character_set_database=utf8      # 数据库存字符集
   character_set_server=utf8        # 服务器字符集

   注意:my.cnf是MySQL的全局配置文件,其实每个数据库还有自己的单独配置文件db.opt(存于每个数据库目录中),理论上说本数据库的配置文件会继承全局,但保不齐也会有本数据库的配置文件与my.cnf冲突的时候,这时此数据库会以自己这个db.opt配置选项优先(换句话说,数据库的配置信息是可以单独指定的)。所以有时即便你无论怎样修改my.cnf配置,当前数据库都不会生效,如果要使当前数据库生效就需要修改其目录内的db.opt配置文件。比如,系统默认创建的test数据库,数据库存字符集可能就是latin1,要想改变此数据库的字符集就需要修改其自身的专属配置文件,如下:
   # vi /usr/local/mysql/data/test/db.opt
default-character-set=latin1
     default-collation=latin1_swedish_ci
     修改为:
     default-character-set=utf8
     default-collation=utf8_general_ci
原文地址:https://www.cnblogs.com/martinzhang/p/3457226.html