• LAMP: 分布式 HTTP 2.4.25 + PHP 5.4.13 + MySQL 5.5.28 分离部署


    目录

    A. 环境说明: 
    B. 效果截图:
    C. HTTP编译安装
    D. MySQL二进制安装
    E. PHP源码编译安装
    F. PHP连接HTTP
    G. PHP支持扩展功能xcache
    H. PHP连接MySQL
    I. 部署phpMyAdmin

    A.环境说明:

    • 系统: CentOS 6.6 x32
    • 部署模式: 分离式(三个服务部署到三台服务器上)
    • 版本: HTTP 2.4.25 + PHP 5.4.13 + MySQL 5.5.28
    • IP规划: HTTP: 192.168.205.116    PHP: 192.168.205.117  MySQL: 192.168.205.115

    B.效果截图:

    C.HTTP编译安装:

    1.编译安装apr 

    1) wget http://mirrors.hust.edu.cn/apache//apr/apr-1.5.2.tar.gz
    2) tar xf apr-1.5.2.tar.gz
    3) cd apr-1.5.2
    4) ./configure
    5) make && make install

    2.编译安装apr-util

    1) wget http://mirrors.hust.edu.cn/apache//apr/apr-util-1.5.4.tar.gz
    2) cd apr-util-1.5.4
    3) tar xf apr-util-1.5.4.tar.gz
    4) ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
    5) make && make install

    3.编译安装httpd

    1) yum install pcre-devel -y
    2) yum install openssl-devel -y
    3) wget http://mirrors.tuna.tsinghua.edu.cn/apache//httpd/httpd-2.4.25.tar.bz2
    4) tar xf httpd-2.4.25.tar.bz2
    5) cd httpd-2.4.25
    6) ./configure
      --prefix=/usr/local/httpd
      --sysconfdir=/etc/httpd
      --enable-so
      --enable-rewrite
      --enable-ssl --enable-cgi
      --enable-cgid --enable-modules=most
      --enable-mpms-shared=all
      --with-apr=/usr/local/apr
      --with-apr-util=/usr/local/apr-util
      --with-ssl=/usr/local/openssl
      --enable-proxy
      --enable-proxy-fcgi
    7) make && make install

    4.关闭selinux和防火墙

    1) setenforce 0
    2) vim /etc/selinux/config
      SELINUX=enforcing
    3) getenforce
    4) iptables -F && service iptables save

    5.修改配置文件

    1) vim /etc/httpd/httpd.conf
    2) 添加 PidFile "/var/run/httpd.pid": 修改pid进程文件位置

    6.服务启动验证

    1) /usr/local/httpd/apachectl start
    2) netstat -tnlp

    7.创建启动文件

    1) vim /etc/init.d/httpd

     1 . /etc/rc.d/init.d/functions
     2 #chkconfig: 2345 10 90
     3 #
     4 
     5 # pull in sysconfig settings
     6 [ -f /etc/sysconfig/httpd ] && . /etc/sysconfig/httpd
     7 HTTPD_LANG=${HTTPD_LANG-"C"}
     8 INITLOG_ARGS=""
     9 #apachectl=/usr/local/apache/bin/apachctl
    10 #httpd=${HTTPD-/usr/local/apache/bin/httpd}
    11 httpd=${HTTPD-/usr/local/httpd/bin/apachectl}
    12 prog=httpd
    13 pidfile=${PIDFILE-/var/run/httpd.pid}
    14 lockfile=${LOCKFILE-/var/lock/subsys/httpd}
    15 RETVAL=0
    16 
    17 
    18 start()
    19 {
    20     echo -n $"Starting $prog: "
    21     LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS
    22     RETVAL=$?
    23     echo
    24     [ $RETVAL -eq 0 ] && touch $lockfile
    25     return $RETVAL
    26 }
    27 
    28 stop()
    29 {
    30     echo -n $"Stopping $prog: "
    31     killproc -p ${pidfile} -d 10 $httpd
    32     RETVAL=$?
    33     # if we are in halt or reboot runlevel kill all running sessions
    34     # so the TCP connections are closed cleanly
    35     echo
    36     [ $RETVAL -eq 0 ] && rm -f ${lockfile} ${pidfile} 
    37 }
    38 
    39 reload()
    40 {
    41     echo -n $"Reloading $prog: "
    42     if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then
    43         RETVAL=$?
    44         echo $"not reloading due to configuration syntax error"
    45         failure $"not reloading $httpd due to configuration syntax error"
    46     else 
    47         killproc -p ${pidfile} $httpd -HUP
    48         RETVAL=$?
    49     fi
    50     echo
    51 }
    52 
    53 restart() {
    54     stop
    55     start
    56 }
    57 
    58 case "$1" in
    59     start)
    60         start
    61         ;;
    62     stop)
    63         stop
    64         ;;
    65     status)
    66         status -p ${pidfile} $httpd
    67         RETVAL=$?
    68         ;;
    69     restart)
    70         restart
    71         ;;
    72     condrestart)
    73         if [ -f ${pidfile} ]; then
    74             stop
    75             start
    76         fi
    77         ;;
    78     reload)
    79         reload
    80         ;;
    81     graceful|help|configtest|fullstatus)
    82         $apachectl $@
    83         RETVAL=$?
    84         ;;
    85     *)
    86         echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}"
    87         exit 1
    88 esac
    89 
    90 exit $RETVAL
    httpd

    2) 添加执行权限
      a) chmod +x /etc/init.d/httpd
    3) 加入到启动服务列表中
      a) chkconfig --add httpd
      b) chkconfig httpd on
      c) chkconfig --level 35 httpd on
    4) 处理报错信息
      a) vim /etc/httpd/httpd.conf
        ServerName localhost:80

    8.添加环境变量

    1) vim /etc/profile.d/httpd.sh
        export PATH=$PATH:/usr/local/httpd/bin/
    2) . /etc/profile.d/httpd.sh #读取环境变量

    D.MySQL二进制安装:

    1.下载安装

      a) wget https://downloads.mysql.com/archives/get/file/mysql-5.5.28-linux2.6-i686.tar.gz (32位系统)
      b) wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.37-linux-glibc2.12-x86_64.tar.gz (64位系统)
    1) 解压到指定目录
      a) tar xf mysql-5.5.28-linux2.6-i686.tar.gz -C /usr/local/
    2) 切换到该目录下
      a) cd /usr/local/
    3) 做链接
      a) ln -sv mysql-5.5.28-linux2.6-i686/ mysql
    4) 添加用户, 修改属主, 属组
      a) groupadd -r -g 306 mysql
      b) useradd -g 306 -r -u 306 mysql
      c) chown -R root.mysql /usr/local/mysql/*

    2.制作逻辑卷并将数据库文件指定至逻辑卷

    1) 制作逻辑卷
      a) fdisk /dev/sdb
      b) pvcreate /dev/sdb5
      c) vgcreate myvg /dev/sdb5
      d) lvcreate -n mydata -L 5G myvg
      e) lvs
      f) mke2fs -j /dev/myvg/mydata
    2) 数据库数据存放至逻辑卷
      a) mkdir /mydata/
      b) mount /dev/myvg/mydata /mydata/
    3) 修改/etc/fstab文件
      a) /dev/myvg/mydata /mydata ext3 defaults 0 0
      b) mount -a
    4) 修改数据存储文件夹权限
      a) chown -R mysql.mysql data/
      b) chmod o-x /mydata/data/

    3.初始化数据库

    1) yum install -y libaio: 初始化时报错的解决办法
    2) cd /user/local/mysql
    3) scripts/mysql_install_db --user=mysql --datadir=/mydata/data/

    4.创建开机自启

    1) 修改启动文件
      a) cp support-files/mysql.server /etc/init.d/mysqld
    2) 添加入开机启动
      a) chkconfig --add mysqld
      b) chkconfig mysqld on

    5.添加配置文件

    1) cp /usr/local/mysql-5.5.28-linux2.6-i686/support-files/my-huge.cnf /etc/my.cnf
    2) vim /etc/my.cnf
      a) datadir = /mydata/data/mysql
      b) thread_concurrency = 8
      c) mysql中一个cpu提供2个线程
        i) 查看当前系统有几个cpu:cat /proc/cpuinfo
        ii) 所以这里最多有2个线程,修改为2

    6.添加PATH环境变量执行mysql命令

    1) vim /etc/profile.d/mysqld.sh
      a) export PATH=$PATH:/usr/local/mysql/bin
    2) . /etc/profile.d/mysqld.sh #读取环境变量

    7.开启服务测试

    1) service mysqld start

    E.PHP源码编译安装:

    1.编译安装libmcrypt

    1) wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.6.tar.gz
    2) tar xf libmcrypt-2.5.6.tar.gz
    3) cd libmcrypt-2.5.6
    4) ./configure --prefix=/usr/local/libmcrypt
    5) make && make install

    2.编译安装PHP

    1) wget http://museum.php.net/php5/php-5.4.13.tar.bz2
    2) yum install gcc openssl-devel libxml2-devel bzip2-devel -y
    3) cd php-5.4.13

    4) 编译安装
      ./configure
      --prefix=/usr/local/php
      --enable-fpm
      --with-config-file-path=/etc
      --with-config-file-scan-dir=/etc/php.d
      --with-libxml-dir=/usr
      --with-openssl
      --with-zlib
      --with-bz2
      --with-jpeg-dir
      --with-png-dir
      --with-freetype-dir
      --enable-mbstring
      --with-mcrypt
      --enable-sockets
      --with-mysql=mysqlnd
      --with-mysqli=mysqlnd
      --with-pdo-mysql=mysqlnd
      --enable-maintainer-zts
      --with-mcrypt=/usr/local/libmcrypt
    5) make && make install

    3.设置启动项

    1) cp php.ini-production /etc/php.ini
    2) 为php-fpm提供Sysv init脚本, 并将其添加至服务列表
      a) cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
      b) chmod +x /etc/init.d/php-fpm
      c) chkconfig --add php-fpm
      d) chkconfig php-fpm on

    4.为php-fpm提供配置文件

    1) cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
    2) 编辑php-fpm的配置文件
      a) vim /usr/local/php/etc/php-fpm.conf
      b) 配置fpm的相关选项为你所需要的值, 并启用pid文件
        i) pm.max_children = 50
        ii) pm.start_servers = 5
        iii) pm.min_spare_servers=2
        iv) pm.max_spare_servers=8
        v) pid=/usr/local/php/var/run/php-fpm.pid

    5.启动服务

    1) service php-fpm start
    2) netstat -tnlp

    F.PHP连接HTTP:

    1) 修改php服务器配置php-fpm的文件vim /usr/local/php/etc/php-fpm 定位到listen =192.168.205.117:9000
    2) 在该主机上新建虚拟主机目录用于存放网页文件
      mkdir -pv /www/glinux
    3) 配置http服务器Apache虚拟主机使用php
    4) 在httpd主机上, 192.168.205.116, 建立一个目录作为虚拟主机的家目录
      mkdir -pv /www/glinux

    1.编辑主配置文件(关闭中心主机, 开启虚拟主机)

    1) vim /etc/httpd/httpd.conf
      a) 注释 #DocumentRoot "/usr/local/apache/htdocs" 
      b) 并打开启用 Include /etc/httpd/extra/httpd-vhosts.conf
      c) 同时定位 AddType;添加下面两行
        AddType application/x-httpd-php .php
        AddType application/x-httpd-php-source .phps
      d) 并且定位至DirectoryIndex
        <IfModule dir_module>
          DirectoryIndex index.php index.html #添加index.php(最好添加在最前面)
        </IfModule>
      e) 启动模块, 还要启用proxy_module proxy-fcgi_module等
        LoadModule proxy_module modules/mod_proxy.so #开启
        LoadModule proxy_connect_module modules/mod_proxy_connect.so
        LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
        LoadModule proxy_http_module modules/mod_proxy_http.so
        LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so #开启

    2.编辑虚拟主机配置文件vim /etc/httpd/extra/httpd-vhosts.conf 

    <VirtualHost *:80>
      DocumentRoot "/www/glinux"
        ServerName www.glinux.com
        ServerAlias glinux.com
        ErrorLog "/usr/local/httpd/logs/glinux.error_log"
        CustomLog "/usr/local/httpd/logs/glinux.access_log" combined
        ProxyRequests off
        ProxyPassMatch ^/(.*.php)$ fcgi://192.168.205.117:9000/www/glinux/$1
      <Directory "/www/glinux">
        Options none
        AllowOverride None
        Require all granted
      </Directory>
    </VirtualHost>

    3.在php服务器上的/www/glinux目录下分别建立网页文件, 重启服务即可

    vim /www/glinux/index.php
    <?php
    phpinfo();
    ?>

    4.测试phpinfo成功      

    浏览器里输入: http://192.168.205.116

    G.PHP支持扩展功能xcache:

    1) wget http://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz
    2) 安装xcache
      a) tar xf xcache-3.2.0.tar.gz
      b) cd xcache-3.2.0
      c) 安装依赖关系
        i) yum -y install m4 autoconf
      d) /usr/local/php/bin/phpize
      e) ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config
      f) make && make install
    3) 安装完毕后会出现这么一行 Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20131226/
    4) 编辑php.ini,整合php和xcache:
      a) 首先将xcache提供的样例配置导入php.ini
        i) # mkdir /etc/php.d
        ii) # cp xcache.ini /etc/php.d
        iii) 说明:xcache.ini文件在xcache的源码目录中。
    5) 接下来编辑/etc/php.d/xcache.ini,找到extension开头的行,修改为如下行:
      extension = /usr/local/php/lib/php/extensions/no-debug-zts-20131226/xcache.so
    6) 注意:如果php.ini文件中有多条zend_extension指令行,要确保此新增的行排在第一位。
    7) 然后重启服务即在phpinfo的页面中就可看见xcache的选项了。
    8) 关闭xcache方法
      a) vim /etc/php.d/xcache.ini
        xcache.size = 0 :设置为0是关闭xcache

    H.PHP连接MySQL:

    1.mysql数据库修改 

    use mysql;
    grant all privileges on *.* to 'root'@'192.9.205.105' identified by 'william';
    select Host,User,Password from user where User='root';
    flush privileges;

    2.进入php主机编辑index.php文件内容

    <?php
    $link=mysql_connect('192.168.205.115','root','william');
    if($link){
          echo "success..william!";
        }else{
          echo "failed..frank!".mysql_error();
        }
    mysql_close($link);
    phpinfo();
      ?>

    3.测试连接情况切记,要将防火墙关闭!

    浏览器里输入: http://192.168.205.116

    I.部署phpMyAdmin:

    1.下载phpMyAdmin

    wget https://files.phpmyadmin.net/phpMyAdmin/4.7.0/phpMyAdmin-4.7.0-all-languages.tar.gz

    2.配置phpmyadmin

    1) 在php 主机和http主机上分别在/www目录建立一个文件夹glinux, 并同样执行下面操作
    2) tar xf phpMyAdmin-4.7.0-all-languages.zip
    3) cd /www/glinux
    4) mv /root/phpMyAdmin-4.7.0/* ./
    5) 接下来在php主机上进行对phpmyadmin的配置。
    6) cp config.sample.inc.php config.inc.php
    7) vim config.inc.php
       $cfg['Servers'][$i]['host']=‘192.168.205.115’  #数据库服务器的IP地址
       $cfg['blowfish_secret'] = 'william'; #这里的字符随意,这个主要是为了区分cookie。
    8) 然后重启三台主机上的服务即可测试。

  • 相关阅读:
    客商支付明细SQL_billdate
    两张表判断赋值,都是NULL惹的祸…
    DataGridView使用初步
    在SQL Server 2005中启用“SQL Server”身份验证
    .Net学习笔记——细节问题
    C#调用带返回值的存储过程
    利用ASP.NET一般处理程序动态生成Web图像
    Windows Forms数据绑定技术
    C#中产生SQL语句的几种方式
    风讯dotNETCMS源码分析—数据存取篇
  • 原文地址:https://www.cnblogs.com/William-Guozi/p/Linux_LAMP.html
Copyright © 2020-2023  润新知