43trnb 发表于 2015-10-20 08:32:14

CentOS编译安装LAMP

LAMP组合的编译安装:
    httpd+php
      modules: 把php编译成httpd的DSO对象;
            prefork: libphp5
            event, worker: libphp5-zts
                在使用event和worker模型时,在编译php时,要加入此选项--enable-maintainer-zts。
            cgi
            fpm(fastcgi):php作为独立的服务

            httpd对fastcgi协议的支持:
                httpd-2.2: 需要额外安装fcgi模块;
                httpd-2.4: 自带fcgi模块;
            安装次序:
                httpd, MariaDB, php。
编译安装httpd:
    前提:安装好Development tools、Server Platform Development这两个工具包组。在此处,编译安装的为httpd-2.4。

    第一步需要安装pcre-devel这个包,可能会有依赖关系。

1
# yum install pcre-devel




    第二步:获取apr、apr-util以及httpd这三个源代码包。
    第三步:解压并安装apr包。

1
2
3
4
# tar xf apr-1.5.0.tar.bz2 #解压该源代码包
# cd apr-1.5.0                #切换到解压之后的目录下
# ./configure --prefix=/usr/local/apr #安装目录/usr/local/apr
# make && make install #根据makefile文件,构建应用程序




    第四步:解压并安装apr-util包。

1
2
3
4
5
# tar xf apr-util-1.5.3.tar.bz2#解压该源代码包
# cd apr-util-1.5.3            #切换到解压之后的目录下
# ./configure -prefix=/usr/local/apr-util --with-apr=/usr/local/apr
#指定安装目录为/usr/local/apr-util,并且其依赖的apr包的安装位置为/usr/local/apr
# make && make install         #根据makefile文件,构建应用程序




    第五步:解压并安装httpd包。   


1
2
3
4
# tar xf httpd-2.4.10.tar.bz2
# cd httpd-2.4.10
# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=event
# make && make install         #根据makefile文件,构建应用程序




    对安装过程中个选项的解释:
      --prefix=/usr/local/apache:httpd的安装路径
      --sysconfdir=/etc/httpd24:配置文件的路径
      --enable-so --enable-ssl --enable-cgi:支持so模块,支持ssl协议,支持cgi协议
      --enable-rewrite --with-zlib --with-pcre:支持重写,支持浏览网页进行压缩传输,需要使用到pcre
      --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util:所依赖到的apr和apr-util包安装路径
      --enable-modules=most:支持大多数的模块
      --enable-mpms-shared=all --with-mpm=event:所有的mpm共享支持,默认的mpm类型为event


    第六步:安装完成,提供服务相关的配置。

      (1)将/usr/local/apache/bin/apachectl文件复制到/etc/init.d下,并且命名为httpd;

1
# cp /usr/local/apache/bin/apachectl /etc/init.d/httpd




      (2)修改/etc/init.d/httpd文件,添加如下两行;

1
2
# chkconfig: - 85 15#此处指定服务的启动顺序
# description: Apache is a World Wide Web server.It is used to serve \




      (3)添加该服务到系统服务;

1
# chkconfig --add httpd




      (4)添加PATH环境变量;
                在/etc/profile.d/目录下创建httpd.sh,内容如下:
                  export PATH=/usr/local/apache/bin/:$PATH
                添加环境变量并不是必须的,如果不添加该内容,则在运行/usr/local/apache/bin/下边的所有相关命令的时候,必须使用绝对路径运行,反之,则可以使用命令本身进行运行,不用写绝对路径。


      第七步:启动服务,并且测试。

1
2
3
# service httpd start
httpd (pid 35925) already running
# ss -tnl




      

编译安装marirdb:

    使用通用二进制包进行mariadb的安装。
    1、新建用户,创建一个数据目录/mydata/data,指定其所属的组为mysql,所用的shell为/sbin/nologin,账户登陆时所用的家目录为/mydata/data。、

1
2
3
# groupadd -r mysql
# useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql
# chown -R mysql:mysql /mydata/data




    2、解压通用二进制mrdiadb包,将其解压至/usr/local目录下。并为其创建一个软连接mysql指向解压之后的文件夹。

1
2
3
# tar xf mariadb-5.5.45-linux-x86_64.tar.gz -C /usr/local
# cd /usr/local
# ln -sv mariadb-5.5.45-linux-x86_64mysql




    3、切换至/usr/local/mysql目录下,改变当前目录的属主和属组为mysql。初始化mysql,指明其数据目录为/mydata/data,用户为mysql。

1
2
3
# cd mysql/
# chown -R mysql:mysql
# scripts/mysql_install_db --datadir=/mydata/data --user=mysql




    4、改变当前目录的属主为root,并为其提供配置文件。

1
2
# chown -R root.   #不要省略这个点号
# cp support-files/my-large.cnf/etc/my.cnf




   如果在系统上已经存在/etc/my.cnf配置文件,可以直接覆盖。当然,先备份一份,出问题可以及时修复。
    5、编辑/etc/my.cnf该配置文件时,要加入以下内容:

1
2
3
datadir=/mydata/data   #指明数据的存储目录
innodb_file_per_table=on#指明默认使用的数据引擎
skip_name_resolve=on#跳过DNS名称解析




    6、为mysql服务提供服务脚本,并且为该脚本提供执行权限。并添加至服务列表。

1
2
3
# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
# chmod +x /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld




    7、输出mysql的头文件至系统头文件路径/usr/include,输出mysql的库文件给系统库查找路径,让系统重新载入系统库。

1
2
3
# ln -sv /usr/local/mysql/include/usr/include/mysql
# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
# ldconfig




   添加PATH环境变量;

      在/etc/profile.d/目录下创建mysqld.sh,内容如下:
            export PATH=/usr/local/mysql/bin/:$PATH
      添加环境变量并不是必须的,如果不添加该内容,则在运行/usr/local/mysql/bin/下边的所有相关命令的时候,必须使用绝对路径运行,反之,则可以使用命令本身进行运行,不用写绝对路径。
    进行安全初始化:

      第一种:添加了PATH环境变量:

            直接执行mysql_secure_installation就可以,然后进行自己选择要修改的项即可。
      第二种:没有修改PATH变量:

1
# /usr/local/mysql/bin/mysql_secure_installation




    测试启动mysql服务:
      
    测试使用mysql客户端连接mysql服务器:
      
      由于当时进行了安全初始化,所以在登录的时候要指定密码才能登录。

    mysql允许远程登录:

1
2
3
4
5
6
7
MariaDB [(none)]> create user 'lcs'@'172.16.%.%' identified by 'linux';
Query OK, 0 rows affected (0.17 sec)
#创建lcs这个用户,并允许其在172.16这个网段中的主机上都可以远程登录,其登录密码为linux。

MariaDB [(none)]> grant all on *.* to 'lcs'@'172.16.%.%';
Query OK, 0 rows affected (0.05 sec)
#为lcs这个用户授权,允许其操作数据库中的所有内容。





编译安装php:
    第一种:直接当作模块编译进httpd中。   
      首先解决依赖关系,安装bzip2-devel libmcrypt-devel libxml2-devel这三个包。注意,在配置yum源的时候,要配置系统安装源及epel源。
      1、解压php源码包,同时使用configure命令,进行配置。

1
2
3
# tar xf php-5.4.40.tar.bz2
# cd php-5.4.40
# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml--enable-sockets --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt--with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2--enable-maintainer-zts




      configure命令中所使用的选项的意义为:
            --prefix=/usr/local/php#指定其安装目录
            --with-openssl --with-mysql=/usr/local/mysql #支持ssl协议,其所依赖的mysql的安装目录为/usr/local/mysql
            --with-mysqli=/usr/local/mysql/bin/mysql_config
            --enable-mbstring --with-freetype-dir #支持mbstring模块
            --with-jpeg-dir --with-png-dir --with-zlib #支持jpeg、png格式,以及页面压缩传输
            --with-libxml-dir=/usr --enable-xml #其xml库目录为/usr,支持xml格式
            --enable-sockets --with-apxs2=/usr/local/apache/bin/apxs #支持套接字
            --with-mcrypt--with-config-file-path=/etc #其配置文件的在/etc目录下
            --with-config-file-scan-dir=/etc/php.d --with-bz2
            --enable-maintainer-zts #由于在编译httpd使用了event模式,所以在此处使用此选项使得php支持event模型。   
      注:为了支持apache的worker或event这两个MPM,编译时使用了--enable-maintainer-zts选项。

    2、使用make和make install命令进行安装。
    3、编辑apache的配置文件。

1
# vim /etc/httpd/httpd.conf




      进行如下的设置。

1
2
3
AddType application/x-httpd-php.php #支持php结尾的文件
AddType application/x-httpd-php-source.phps#支持phps结尾的文件
DirectoryIndex index.php index.html




    4、通过以上配置,就将php作为模块编译进httpd了。使用命令httpd -M可查看已安装的模块。

    5、在服务器的根目录下,创建一个index.php,作为测试。127.0.0.1可用localhost代替。

1
2
3
4
5
6
7
8
9
<?php      
    phpinfo();      
    $link = mysql_connect('127.0.0.1','root','linux');      
    if ($link)      
      echo "Success...";      
    else      
      echo "Failure...";      
      mysql_close();   
?>





第二种:以fpm的方式编译php。

    首先解决依赖关系,安装bzip2-devel libmcrypt-devel libxml2-devel这三个包。注意,在配置yum源的时候,要配置系统安装源及epel源。
    1、解压php源码包,同时使用configure命令,进行配置以及安装。

1
2
3
# cd php-5.4.40
# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml--enable-sockets --enable-fpm --with-mcrypt--with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2
# make && make install




    由于要以fpm的模式运行,所以要加入--enable-fpm该选项。就是将php作为一个单独的服务运行。

   2、为php提供配置文件。


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




    3、为php-fpm提供系统启动脚本。

1
2
3
4
# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
# chmod +x /etc/rc.d/init.d/php-fpm#给该文件加执行权限
# chkconfig --add php-fpm#将其加入到服务列表中
# chkconfig php-fpm on#开启该服务




   4、为php-fpm提供配置文件,并编辑相关设置。

1
2
3
4
# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
# cd /usr/local/php/etc/
# vim php-fpm.conf   #编辑配置文件
# service php-fpm start #启动php服务




    编辑配置文件,修改如下内容:

1
2
3
4
5
pm.max_children = 50#修改
pm.start_servers = 5#修改
pm.min_spare_servers = 2#修改
pm.max_spare_servers = 8#修改
pid = /usr/local/php/var/run/php-fpm.pid#添加




    启动测试:

      1、使用# ps aux | grep php-fpm进行查看,若有几个php-fpm进程就说明编译安装成功。
      
      2、使用# netstat -tnlp | grep php-fpm查看,默认情况下,fpm监听在127.0.0.1的9000端口。
      

    5、编辑/etc/http/httpd.conf,进行修改如下内容,使httpd支持php。

1
2
3
AddType application/x-httpd-php.php
AddType application/x-httpd-php-source.phps
DirectoryIndex index.php index.html




    6、编辑/etc/http/httpd.conf,进行修改如下内容,使httpd支持fastcgi协议。在Apache httpd 2.4以后已经专门有一个模块针对FastCGI的实现,此模块为mod_proxy_fcgi.so,它其实是作为mod_proxy.so模块的扩充,因此,这两个模块都要加载。

1
2
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so




   7、配置中心主机支持FastCGI。同样的,在相对应的虚拟主机添加如下内容就可。其中,/PATH/TO/DOCUMENT_ROOT/指代的为DocumentRoot所在的目录。

1
2
ProxyRequests Off   #关闭正向代理
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/PATH/TO/DOCUMENT_ROOT/$1




   ProxyPassMatch:把以.php结尾的文件请求发送到php-fpm进程,php-fpm至少需要知道运行的目录和URI,所以这里直接在fcgi://127.0.0.1:9000后指明了这两个参数,其它的参数的传递已经被mod_proxy_fcgi.so进行了封装,不需要手动指定。

编译安装httpd配置https服务:
    在配置文件中,要把ssl模块给加入进去。同时要把ssl的配置文件以及vhosts的配置文件include进入httpd.conf文件中。   

1
2
3
LoadModule ssl_module modules/mod_ssl.so
Include /etc/httpd/extra/httpd-ssl.conf
Include /etc/httpd/extra/httpd-vhosts.conf





页: [1]
查看完整版本: CentOS编译安装LAMP