设为首页 收藏本站
查看: 1057|回复: 0

LAMP分布式部署

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-11-2 11:03:35 | 显示全部楼层 |阅读模式
LAMP分布式部署
LAMP分布式部署是将数据,PHP(python,perl,这里主要说PHP)和apache分开部署在不同主机上的web架构。PHP以fpm独立守护进程的方式监听另一台apache服务器以fcgi模式发送来的请求的工作模式。
如下图:
          wKioL1YzAnaDX-XzAAERPXSSvFQ843.jpg

一、环境准备
IP地址如下:
apache服务器      172.16.1.120  172.16.1.150(其中一个接受用户请求,一个发送动态内容请求到php服务器)
php服务器               172.16.1.160
数据服务器              172.16.1.170

系统环境:
所有系统全部是最小化安装的centos6.7
1
2
3
4
5
6
7
8
# cat/etc/redhat-release
CentOS release6.7 (Final)

# uname -rm
2.6.32-573.el6.x86_64x86_64

# setenforce 0
# serviceiptables stop




需要准备的软件包
mariadb-5.5.36-linux-x86_64.tar.gz
Discuz_X3.2_SC_GBK.zip
libiconv-1.9.2.tar.gz
php-5.6.14.tar.gz
apr-1.5.2.tar.gz
apr-util-1.5.4.tar.gz
Discuz_X3.2_SC_GBK.zip
httpd-2.4.16.tar.gz


二、安装MariaDB数据库服务器
注:如果是集中式安装LAMP,应先安装apache和mysql。因为php在安装时需要指定apache和数据库的路径。
我们使用MariaDB 5.5.36通用二进制格式安装。
# mkdir /tools  把安装程序放到这个目录下。
1、解压软件包:
#tar xzvf mariadb-5.5.36-linux-x86_64.tar.gz -C /usr/src/
# ln -sv/usr/src/mariadb-5.5.36-linux-x86_64/ /usr/local/mysql
            `/usr/local/mysql'-> `/usr/src/mariadb-5.5.36-linux-x86_64/'
            # cd/usr/local/mysql
2、创建mysql用户和组:
# groupadd -r -g 306mysql
#useradd -r -g 306 -u 306 -s /sbin/nologin -M mysql
3、建立数据目录并授权:
# mkdir /data/mysql/{data,logs} -pv
mkdir: created directory `/data'
mkdir: created directory `/data/mysql'
mkdir: created directory `/data/mysql/data'
mkdir: created directory `/data/mysql/logs'
# chown -R mysql.mysql /data/mysql/
# chown -R mysql.mysql /usr/local/mysql/
    4、建立配置文件目录并创建配置文件:
            # mkdir /etc/mysql
            # cp /usr/local/mysql/support-files/my-large.cnf/etc/mysql/my.cnf       主配置文件
            # cp/usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld   启动脚本
    5、修改配置主文件:
            vim /etc/mysql/my.cnf
            添加和修改如下内容:
            [mysqld]
port    = 3306
socket  = /tmp/mysql.sock
datadir  = /data/mysql/data
pid_file  = /data/mysql/mysql.pid
log-bin  = /data/mysql/logs/mysql-bin
log-error = /data/mysql/logs/mysql.err
    6、修改启动脚本:
            vim  /etc/rc.d/init.d/mysqld
            修改如下参数:
basedir=/usr/local/mysql
datadir=/data/mysql/data
# chkconfig mysqld –add
# chkconfig mysqld on
# chmod +x /etc/rc.d/init.d/mysqld
    7、初始化数据库:
          #/usr/local/mysql/scripts/mysql_install_db --user=mysql  --datadir=/data/mysql/data/--basedir=/usr/local/mysql/ --defaults-extra-file=/etc/mysql/my.cnf
           一般看到两个OK就表示初始化成功了。
    8、启动数据库并设置数据密码:
             # service mysqld start
Starting MySQL... SUCCESS!
export PATH=$PATH:/usr/local/mysql/bin/
# mysqladmin -u root password ABCabc123
# mysql -u root -pABCabc123
    9、到这里数据库就安装完成了。三、安装PHP
在172.16.1.160上安装php服务器.版本选择PHP5.6.14
# mkdir /tools;cd /tools            创建程序包下载路径
1、安装依赖环境:
# cd /etc/yum.repos.d/
yum install  gcc  gcc-c++ autoconf automake ncurses-devel  libxml2-devel  bison  make    pcre pcre-devel  zlib-devel  libtool-ldtd-devel  libtool flex vim  openssl openssl-devel  bzip2-devel  gmp-devel openldap-devel  libxslt*  libcurl libcurl-devel   libmcrypt libmcrypt-devel  -y
# tar xzvf libiconv-1.9.2.tar.gz -C /usr/src/;cd/usr/src/libiconv-1.9.2/
# ./configure --prefix=/usr/local/libiconv
# make && make install
2、开始编译安装PHP
         # tar xzvf php-5.6.14.tar.gz -C/usr/src/;cd /usr/src/php-5.6.14
         # ./configure --prefix=/usr/local/php--with-config-file-path=/etc/php/php.ini --with-config-file-scan-dir=/etc/php.d/--enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir--with-zlib --with-libxml-dir --enable-xml --with-mcrypt --with-bz2--with-openssl --with-curl --with-xsl  --with-iconv=/usr/local/libiconv--enable-sockets --enable-short-tags --enable-static --enable-gd-native-ttf--enable-ftp --enable-maintainer-zts --with-mysql=mysqlnd--with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --enable-fpm
         # make && make install
fastcgi:php-5.3.3 之后的版本自带了fpm组件,
fpm组件能把PHP解释器工作为守护进程,并提供类似prefork模式的应用,它能够接收来自前端httpd,http-proxy-fcgi反向代理用户对动态内容请求至后端的fastcgi server
注意:把php编译为fpm工作模式时需要加一个重要的选项 --enable-fpm,而不再使用 -with-apxs2=/usr/local/apache/bin/apxs
3、为php提供主配置文件
# mkdir /etc/php/etc/php.d
# cp/usr/src/php-5.6.14/php.ini-production /etc/php/php.ini
4、配置和修改php-fpm信息      #cp /usr/src/php-5.6.14/sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
# chmod +x /etc/rc.d/init.d/php-fpm
# chkconfig php-fpm --add
# chkconfig php-fpm on

# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

# vim /usr/local/php/etc/php-fpm.conf
修改php-fpm配置文件,添加和修改如下信息
listen= 192.168.1.160:9000
pm.max_children= 50   ###静态方式下开启的php-fpm进程数量
pm.start_servers= 5   ###动态方式下的起始php-fpm进程数量
pm.min_spare_servers= 2   ###动态方式下的最小php-fpm进程数量
pm.max_spare_servers= 8   ###动态方式下的最大php-fpm进程数量
pid =/usr/local/php/var/run/php-fpm.pid    ###PID文件路径
启动php-fpm
#service php-fpm start
Startingphp-fpm  done
到这里,PHP服务器安装完成!


四、安装Apache         mkdir  /tools  创建包下载目录
         cd  /tools
1、装依赖环境:
# yum groupinstall "Development Tools" "Server PlatformDevelopment" -y
# yum install pcre-devel zlib-devel –y
2、apr
# tar xzvf apr-1.5.2.tar.gz -C /usr/src/
# cd /usr/src/apr-1.5.2/
# ./configure --prefix=/usr/local/apr
#  make&& make install
3、apr-util
# tar xzvf apr-util-1.5.4.tar.gz -C /usr/src/
# cd /usr/src/apr-util-1.5.4/
# ./configure --prefix=/usr/local/apr-util  --with-apr=/usr/local/apr/
#  make && makeinstall

4、安装 apache         cd  /tools
# tar xzvf httpd-2.4.16.tar.gz -C /usr/src/
# cd /usr/src/httpd-2.4.16/
# ./configure --prefix=/usr/local/apache  --with-apr=/usr/local/apr/--with-apr-util=/usr/local/apr-util/ --enable-so --enable-ssl --enable-cgi--enable-rewrite --with-zlib --with-pcre --enable-deflate --enable-expires--enable-headers --enable-modules=most --enable-mpms-shared=all--with-mpm=event
# make && make install

编译参数说明:
--prefix   ###安装路径
--sysconfdir   ###指定配置文件路径
--with-apr   ###指定apr安装路径
--with-apr-util   ###指定par-util安装路径
--enable-so   ##DSO兼容,DSO=Dynamic Shared Object,动态共享对象,可实现模块装载
--enable-ssl   ###支持SSL/TLS,可以实现https访问
--enable-cgi   ###支持CGI脚本
--enable-rewrite   ###加入mod_rewrite模块,支持URL重写
--with-zilb   ###打开zlib库的支持
--with-pcre   ###支持perl的正则表达式
--enable-deflate   ###支持网页压缩
--enable-expires   ###支持HTTP控制,对网站图片、js、css等内容,提供在客户端游览器缓存
--enable-headers    ###允许对HTTP请求头的控制
--enable-modules=most   ###支持大多数模块
--enable-mpms-shared=all   支持动态加载的MPM模块
--with-mpm=event   #设置默认启用的MPM模式


★关于MPM模块的构建:
(1)构建MPM为静态模块
在全部平台中,MPM都可以构建为静态模块。在构建时选择一种MPM,链接到服务器中。如果要改变MPM,必须重新构建。为了使用指定的MPM,请在执行 configure脚本时,使用参数 --with-mpm=NAME。NAME是指定的MPM名称。编译完成后,可以使用 ./httpd -l 来确定选择的MPM。此命令会列出编译到服务器程序中的所有模块,包括 MPM。

(2)构建 MPM 为动态模块
在 Unix或类似平台中,MPM可以构建为动态模块,与其它动态模块一样在运行时加载。构建 MPM 为动态模块允许通过修改LoadModule指令内容来改变MPM,而不用重新构建服务器程序。在执行configure脚本时,使用--enable-mpms-shared选项即可启用此特性。当给出的参数为all时,所有此平台支持的MPM模块都会被安装。还可以在参数中给出模块列表。默认MPM,可以自动选择或者在执行configure脚本时通过--with-mpm选项来指定,然后出现在生成的服务器配置文件中。编辑LoadModule指令内容可以选择不同的MPM。

5、apache用户和组
# groupadd  -r  apache
# useradd -r -gapache -s /sbin/nologin  -M apache

6、Apache配置文件
# cd/usr/local/apache/conf/
# cp httpd.confhttpd.conf.ori

vim  /usrl/local/apache/conf/httpd.conf
1)找到如下模块并打开
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
wKiom1YzAwfBXI3nAACoHyLavqA472.jpg
2)如下内容
          AddTypeapplication/x-httpd-php .php .phtml
    AddType application/x-httpd-php-source .phps
wKioL1YzA16iBxK1AAClCektGW4835.jpg
3)修改监听地址
Listen 192.168.1.120:80
4)注销DocumentRoot
#DocumentRoot "/usr/local/apache/htdocs"
#<Directory "/usr/local/apache/htdocs">
因为我们要使用虚拟主机。
5)添加虚拟主机
                   在文件末尾添加虚拟主机如下:
<VirtualHost *:80>
ServerAdmin yy@yy.com
DocumentRoot "/data/www/yy"
ServerName www.yy.com
ServerAlias yy.com
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://192.168.1.160:9000/data/www/yy/$1
ErrorLog  "/usr/local/apache/logs/phpinfo-error_log"
CustomLog  "/usr/local/apache/logs/phpinfo-access_log"common
<Directory "/data/www/yy">
AllowOverride None
Options None
Require all granted
</Directory>
wKiom1YzA0DxI1ErAAFS60eDK18504.jpg
6)添加PHP主页索引index.php
<IfModule dir_module>
    DirectoryIndex  index.php index.html
</IfModule>
wKiom1YzA1WTcqTxAABGhERxtLI424.jpg
7)修改ServerName
         ServerName www.yy.com:80
8)户和组改为apache
         User apache
   Group apache
9)创建DocumentRoot目录
         # mkdir /data/www/yy –pv
这条命令要分别在php服务器和apache服务器上都执行。即两边都创建这个目录 。
10)提供索引文件
         apache服务器上放置静态内容
         # echo "www.yy.com" >/data/www/yy/index.html
         php服务器上放置动态内容
         # cat > /data/www/yy/index.php<<EOF
    > <?php
    > phpinfo();
    > ?>
    > EOF      
7、Apache         #/usr/local/apache/bin/apachectl -t
Syntax OK                   语法检查OK
#/usr/local/apache/bin/apachectl start

# netstat -ntpul| grep 80  检查端口有没有启动

修改测试客户端的host地址,
在 C:\Windows\System32\drivers\etc\hosts下添加
192.168.1.120  www.yy.com  yy.com
使用浏览器访问www.yy.com
wKiom1YzA2XiYRdEAANuN5v-_Rs081.jpg
到这里LAMP的分布式部署就完成了。
需要注意的问题:
动态资源需要放在PHP服务器上,当httpd服务器接收到客户端浏览器请求的是动态页面内容时,
会把请求发往指定的PHP服务器上处理,但是静态页面例如:html、jpg等还是会在httpd服务器上
处理,不然图片等信息可能就无法显示,因此在部署网站时,需要把网站的资源分别放在两边。
分别在HTTPD服务器和PHP服务器上各自创建同样路径的目录,不然启动httpd服务时会报错。

五、实验搭建discuz
# cd  /tools
# mkdir /data/www/discuz
# unzip Discuz_X3.2_SC_GBK.zip -d /data/www/discuz/
以上操作要同时在PHP和apache服务器上都做一次
修改apache服务器添加如下虚拟主机
<VirtualHost *:80>
ServerAdmin yy@yy.com
DocumentRoot "/data/www/discuz"
ServerName www.discuz.com
ServerAlias discuz.com
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$fcgi://192.168.1.160:9000/data/www/discuz/$1
ErrorLog "/usr/local/apache/logs/phpinfo-error_log"
CustomLog "/usr/local/apache/logs/phpinfo-access_log"common
<Directory "/data/www/discuz">
AllowOverride None
Options None
Require all granted
</Directory>
</VirtualHost>

回到MariaDB,创建数据库并授权
#mysql -u root -p
Enterpassword: ===>输入密码,前面设置的 ABCabc123
MariaDB[(none)]> create database bbsdb;
QueryOK, 1 row affected (0.00 sec)

MariaDB[(none)]> GRANT ALL ON bbsdb.* TO'bbsAdmin'@'%' IDENTIFIED BY'magelinux';
QueryOK, 0 rows affected (0.02 sec)

MariaDB[(none)]> FLUSH PRIVILEGES;
QueryOK, 0 rows affected (0.00 sec)

MariaDB[(none)]> SHOW DATABASES;
+--------------------+
|Database           |
+--------------------+
|information_schema |
| bbsdb             |
|mysql             |
|performance_schema |
| test              |
+--------------------+
5 rowsin set (0.01 sec)

MariaDB[(none)]>

在客户机添中如下host
192.168.1.120  discuz.com  www.discuz.com
wKioL1YzBEjAujJqAAN3Kx3Iir8359.jpg
后面按提示来即可。由于最小化安装没有字符集支持,这里看到的中文是乱码。
后面如可提示没有权限,可把/data/www/discuz目录设为777即可。




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-134017-1-1.html 上篇帖子: LAMP简单架构实验:Apache+NFS+MySQL 下篇帖子: CentOS6.7源码搭建LNMP平台
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表