配置分离式LANP源代码编译实例

分离式LAMP1    
一、php编译

配置apache-2.4.9以fpm方式的php-5.4.26(php服务器IP为172.16.3.30)    
 
    1、编译php      
        #tar xf php-5.4.26.tar.bz2      
        #cd php-5.4.26      
        # ./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      
            编译测检查环境和编译为php模块的区别在于:把指定为模块的这个信息去掉--with-apxs2=/usr/local/apache/bin/apxs换成了--enable-fpm。也不需要--enable-maintainer-zts      
        说明:      
            如果使用PHP5.3以上版本,为了链接MySQL数据库,可以指定mysqlnd,这样在本机就不需要先安装MySQL或MySQL开发包了。mysqlnd从php 5.3开始可用,可以编译时绑定到它(而不用和具体的MySQL客户端库绑定形成依赖),但从PHP 5.4开始它就是默认设置了。      
            # ./configure --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd      
        为php提供配置文件:      
        # cp php.ini-production /etc/php.ini      
    2、配置php-fpm      
        为php-fpm提供SysV init脚本,并将其添加至服务列表:      
        #cd php-5.4.26      
        # 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

        为php-fpm提供配置文件:       
            # cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

        编辑php-fpm的配置文件:  
        # vim /usr/local/php/etc/php-fpm.conf    
            配置fpm的相关选项为你所需要的值,并启用pid文件(如下最后一行):    
            pm = dynamic-------------------------动态来管理以下进程的    
            pm.max_children = 50----------------指定最大进程数    
            pm.start_servers = 5---------------服务器启动时启动几个空闲进程    
            pm.min_spare_servers = 2------------指定最小空闲进程    
            pm.max_spare_servers = 8-------------指定最大空闲进程    
            pid = /usr/local/php5/var/run/php-fpm.pid -------找到后启用起来并指明路径pid路径    
            listen = 172.16.3.30:9000-------------修改监听地址端口(注意这个端口不允许其他人访问,影响速度)    
    3、启动下即可    
        接下来就可以启动php-fpm了:    
        # service php-fpm start

        使用如下命令来验正(如果此命令输出有中几个php-fpm进程就说明启动成功了):  
        # ps aux | grep php-fpm

        查看监听接口  
        # netstat -tnlp | grep php-fpm    
            tcp        0      0 172.16.3.30:9000            0.0.0.0:*                   LISTEN      24543/php-fpm  

 


二、mariadb编译安装(数据库服务器IP:172.16.3.40)    
mariadb-5.5.36:    
        通过二进制格式安装:    
        编译好的二进制程序:(安装平台是有关系的,32位的操作系统,只能安装32位数据库)    
1、下载安装包,展开程序    
    mariadb-5.5.36-linux-x86_64.tar.gz    
    (1)mariadb安装目录必须是mysqld9(否则一些默认的程序无法运行)    
        #tar xf  mariadb-5.5.36-linux-x86_64.tar.gz -C /usr/local------指定解压目录    
    (2)查看软件包提示怎么安装的    
        #ls /usr/local/mariadb-5.5.36-linux-x86_64    
             INSTALL-BINARY---------这个文件当中说明了怎么安装

    (3)数据库的数据我们一般存储在和系统不在同一个磁盘上指定的LVM的单独逻辑卷中(方便以后管理扩展、快照备份等),以保重数据不丢失。  
         创建个逻辑卷    
            #fdisk /dev/sda (创建/dev/sda3,类型为8e)    
            #kpartx -af /dev/ada----加载磁盘分区信息    
            #partx -a /dev/sda    
            #pvcreate /dev/sda3    
            #vgcreate myvg /dev/sda3    
            #lvcreate -L 3G -n mydata myvg    
            #mke2fs -t ext4 -L MYDATA -b 4096 -m 3 /dev/myvg/mydata    
            #mkdir /mydata    
            #echo "LABEL=MYDATA      /mydata        ext4    defaults        0 0 >> /etc/fstab    
            #mount -a---立即生效挂载分区    
            #mkdir /mydata/data----创建个子目录来存放数据    
    (4)创建数据库的用户和组为mysql用户    
            #groupadd -r mysql    
            #useradd -r -g mysql mysql    
    (5)设置存放数据目录的属组和属主    
            #chown  -R mysql.mysql /mydata/data    
    2、安装mariadb    
        # ln -sv  mariadb-5.5.36-linux-x86_64/ mysql---方便以后升级安装重名问题,我们在这里创建链接,下次在安装的时候就直接删除连接即可。    
        #cd /usr/local/mysql    
        #chown -R root.mysql ./*    
        (1)初始化修改配置文件    
            配置文件:/usr/local/mysql/support-files    
            在这里我们说下配置文件:    
                my-small.cnf--可用内存的不同的配置文件(小)    
                my-large.cnf----(大)    
                    my-huge.cnf    ------(巨大)   
                由于这里提供的配置文件与物理机配置不同,选择不同的配置文件。    
                我们这里使用的是虚拟机做实验,用my-large.cnf足够了    
            复制配置文件,以my-large.cnf为模版    
            #mkdir /etc/mysql(默认情况下有rpm -ql mysql-libs查看下,默认提供mysql客户端包)    
            #cp /usr/local/mysql/support-files/my-large.cnf /etc/mysql/my.cnf    
            #vim /etc/mysql/my.cnf    
                在配置文件中必须加上指明数据存储的目录datadir = /mydata/data这个目录必须放定义mysqld属性下    
                    [client]    
                        #password       = your_password    
                        port            = 3306    
                        socket          = /tmp/mysql.sock

                        # Here follows entries for some specific programs

                        # The MariaDB server  
                    [mysqld]    
                        port            = 3306    
                        socket          = /tmp/mysql.sock    
                        skip-external-locking    
                        key_buffer_size = 256M    
                        max_allowed_packet = 1M    
                        table_open_cache = 256    
                        sort_buffer_size = 1M    
                        read_buffer_size = 1M    
                        read_rnd_buffer_size = 4M    
                        myisam_sort_buffer_size = 64M    
                        thread_cache_size = 8    
                        query_cache_size= 16M    
                        # Try number of CPU's*2 for thread_concurrency    
                        thread_concurrency = 8    
                        datadir = /mydata/data-----在这个配置文件 中只需要添加这条信息即可指定数据的存储目录    
        (2)执行初始化脚本;    
                由于mysql_install_db需要/usr/local/mysql/目录下的bin文件的信息,指明路径执行

            #cd /usr/local/mysql    
            #scripts/mysql_install_db --datadir=/mydata/data --user=mysql      
                    命令解释:--datadir=/mydata/data:指定数据库存放的目录      
                              --user=mysql:必须用mysql用户运行      
        (3)查看初始化是否成功      
            # ls /mydata/data(主要查看我们存放数据的目录下是否生成数据库信息。)      
            aria_log.00000001  mysql             mysql-bin.000002  performance_schema      
            aria_log_control   mysql-bin.000001  mysql-bin.index   test      
        (4)启动服务这里需要启动脚本      
                在安装目录下/usr/local/mysql/support-files/      
                #ls /usr/local/mysql/support-files/      
                    [root@ning mysql]# ls support-files/(中的mysql.server)      
                    binary-configure   magic                   my-medium.cnf        mysql.server      
                    config.huge.ini    my-huge.cnf             my-small.cnf         ndb-config-2-node.ini      
                    config.medium.ini  my-innodb-heavy-4G.cnf  mysqld_multi.server  SELinux      
                    config.small.ini   my-large.cnf            mysql-log-rotate     solaris      
                只要是安装目录没有改动(/usr/local/mysql下),复制过去就能启动      
                # cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld(注意下,要是你的虚拟机上还装有不同版本的mysql,在启动脚本下有服务启动脚本,你只需要复制过去叫,mysqld55起个名字即可,在以后使用时记得即可)      
                #chkconfig --add mysqld      
                #chkcofnig --list      
                #service mysqld start

        (5)测试:安装的结果,由于是我们编译安装还需要提供,启动命令的修改  
                    导出:命令    
                        # vim /etc/profile.d/mysql.sh    
                                export PATH=/usr/local/mysql/bin:$PATH----指定路径    
                        # source /etc/profile.d/mysql.sh    
                    导出:帮助信息    
                        #vim /etc/man.config    
                             MANPATH /usr/local/mysql/man    
                    导出:头信息文件    
                        #ln -sv /usr/local/mysql/include/ /usr/include/mysql    
                    导出:库文件    
                        #ldconfig -v |grep mysql- --查看以下库文件版本    
                        # vim /etc/ld.so.conf.d/mysql.conf--创建配置文件并添加以下内容即可    
                            usr/local/mysql/lib    
            成功的结果:    
            [root@ning mysql]# mysql    
                Welcome to the MariaDB monitor.  Commands end with ; or \g.    
                Your MariaDB connection id is 4    
                Server version: 5.5.36-MariaDB-log MariaDB Server-----查看版本是否正确

                Copyright (c) 2000, 2014, Oracle, Monty Program Ab and others.

                Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

                MariaDB [(none)]> Ctrl-C -- exit!  
                Aborted    
                [root@ning mysql]# vim /etc/profile.d/mysql.sh    
                [root@ning mysql]# mysql    
                Welcome to the MariaDB monitor.  Commands end with ; or \g.    
                Your MariaDB connection id is 5    
                Server version: 5.5.36-MariaDB-log MariaDB Server

                Copyright (c) 2000, 2014, Oracle, Monty Program Ab and others.

                Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

                MariaDB [(none)]>    
    授权远程连接用户:    
        #mysql    
        >create database mysdb-------创建库    
        >show databases;-----查看下有多少个库    
        >grant all on mydb.* to 'root'@'172.16.3.%' identified by 'ning';(授权帐号为root,密码为ning)    
        > flush privileges;-----刷新数据库修改    
        > select Host,User from mysql.user\w;---------查看下授权状态

 

三、配置httpd-2.4.9(为apache服务器IP为172.16.3.1)

httpd的编译安装在这里不在提供编译说明,上篇博客中有详细解释

    1、启用httpd的相关模块  
        在启用之前我们先查看下模块信息ls /usr/local/apache/modules/是否有mod_proxy.so和mod_proxy_fcgi.so

        在Apache httpd 2.4以后已经专门有一个模块针对FastCGI的实现,此模块为mod_proxy_fcgi.so,它其实是作为mod_proxy.so模块的扩充,因此,这两个模块都要加载(去掉注释启用就行了)  
        在apache的配置文件中启动以下两个模块让它支持fcgi    
        LoadModule proxy_module modules/mod_proxy.so------fcgi的代理模块    
        LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so-----fcgi模块    
               0.0.0.0:*                   LISTEN      689/php-fpm    
    2、编辑apache配置文件httpd.conf,让apache能识别php格式的页面,并支持php格式的主页    
         # vim /etc/httpd/httpd.conf    
         (1)、添加如下二行(让apache支持php)    
           AddType application/x-httpd-php  .php    
           AddType application/x-httpd-php-source  .phps

         (2)、定位至DirectoryIndex index.html    
            修改为:    
            DirectoryIndex  index.php  index.html(支持,index.php)

    补充:Apache httpd 2.4以前的版本中,要么把PHP作为Apache的模块运行,要么添加一个第三方模块支持PHP-FPM实现。

    3、配置虚拟主机支持使用fcgi

        在相应的虚拟主机中添加类似如下两行。  
        <VirtualHOST 172.16.3.1:80>    
            DocumentRoot "/usr/local/host1"    
            ServerName www.centos.com    
            ErrorLog /usr/local/host1/error_log    
            CustomLog /usr/local/host1/access_log common    
            ProxyRequests Off------------关闭正向代理功能    
            ProxyPassMatch ^/(.*\.php)$ fcgi://172.16.3.30:9000/usr/local/host1/$1---指定php服务器的fcgi监听的地址,IP为:php服务器的地址,路径为:apache网站根目录下:    
                <Directory  "/usr/local/host1">    
                Require all granted    
                </Directory>    
        </VirtUalHOST>    
          <VirtualHOST 172.16.3.1:80>    
            documentroot "/usr/local/host2/php"    
            servername www.apache.com    
            ErrorLog /usr/local/host2/error_log    
            CustomLog /usr/local/host2/access_log common    
            ProxyRequests Off    
            ProxyPassMatch ^/(.*\.php)$ fcgi://172.16.3.30:9000/usr/local/host2/php/$1    
                <Directory  "/usr/local/host2/php">    
                Require all granted    
                </Directory>    
        </VirtUalHOST>    
            命令解释:    
                ProxyRequests Off:关闭正向代理    
                ProxyPassMatch:把以.php结尾的文件请求发送到php-fpm进程,php-fpm至少需要知道运行的目录和URI,所以这里直接在fcgi://127.0.0.1:9000后指明了这两个参数,其它的参数的传递已经被mod_proxy_fcgi.so进行了封装,不需要手动指定。    
        网站站点配置;(测试主机的连通性)    
            路径在/usr/local/host1/index.php    
            <html> <body><h>ninghongliang </h>    
                    <?php    
                    $link = mysql_connect('172.16.3.1','root','ning');----这里连接的数据库地址信息:IP:172.16.3.1是数据库服务器的IP,root为帐号,ning为密码(这里的地址账户和密码需要mysql授权的账户和密码)    
                    if ($link)    
                            echo "Success...";    
                    else    
                            echo "Failure";    
                            phpinfo();    
                    ?>

            </body></html   
        路径在/usr/local/host2/php/index.php    
                我在这里真是的安装了一个图像化的数据库管理网站phpMyAdmin    
                    源包phpMyAdmin-3.5.1-all-languages.tar.bz2    
                    #tar xf phpMyAdmin-3.5.1-all-languages.tar.bz2    
                    #mv phpMyAdmin-3.5.1-all-languages php    
                    #cd php    
                    #cp config.sample.inc.php config.inc.php (复制这个网站的主配置文件为config.inc.php)    
                    需要修改里面的连接数据库的IP地址,    
                    #vim config.inc.php    
                    $cfg['Servers'][$i]['host'] = 'localhost';修改为$cfg['Servers'][$i]['host'] = '172.16.3.30';

    我们这里为了实验分离式结构测试结果,没有做其他一些真正的分离式结构,所以需要在php服务器上还要创建,网站根目录和apache一样的站点,,复制过来即可。  
    否则测试的时候显示服务器不可达,,明白    
    4、测试:    
http://www.centos.com    
            有图有真相分离式测试结果    
http://www.apache.com    
            有图有真相

 

phpmyadmin测试结果图

你可能感兴趣的:(源码编译,lanp)