天天看点

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

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

一、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脚本,并将其添加至服务列表:      

        # 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]    

                        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    

                Your MariaDB connection id is 5    

                Server version: 5.5.36-MariaDB-log MariaDB Server

                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">    

            命令解释:    

                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';

继续阅读