部署社交网站(SVN+PHP+NGINX+MYSQL+MFS)

案例需求:社交网站采用PHP语言开发,为了管理开发代码,搭建SVN服务器进行版本控制,社交网站的第一个版本部署在LNMP平台上,前端为nginx服务器,通过fastcgi协议访问后端的PHP服务器。这里实现动静分离,动态页面交给PHP服务器来处理,静态页面交给nginx服务器来处理。为了保证数据安全,要求搭建Mysql数据库主从集群。

社交网站项目包含用户的相册功能,允许用户上传照片,上传照片需要使用共享存储来存放,针对共享存储采用MFS分布式文件系统来实现,并将MFS挂载在PHP服务器的相关目录下。

本案例拓扑图如图所示:

案例实施
?部署SVN服务器,为PHP程序员创建repo目录的访问帐户,通知程序员可以导入代码
?部署Nginx服务器
?部署PHP服务器
?部署Mysql主从服务器,根据PHP程序员的要求创建数据库与表
?部署MFS,将MFS文件系统挂载在前端PHP服务器的相关目录下

案例部署环境:

主机 IP地址 操作系统 主要软件包
SVN 172.20.10.4 CentOS7
Nginx 172.20.10.9 CentOS7 nginx-1.12.0.tar.gz
PHP 172.20.10.10 CentOS7 php-5.6.11.tar.bz2,mfs-1.6.27-5.tar.gz,fuse-2.9.2.tar.gz, ZendGuardLoader-php-5.3-linux-glibc23-i386.tar.gz
Mysql1 172.20.10.11 CentOS7 mysql-5.5.24.tar.gz
Mysql2 172.20.10.12 CentOS7 mysql-5.5.24.tar.gz
MFS master 172.20.10.13 CentOS7 mfs-1.6.27-5.tar.gz
metalogger 172.20.10.14 CentOS7 mfs-1.6.27-5.tar.gz
MFS chunk1 172.20.10.2 CentOS7 mfs-1.6.27-5.tar.gz
MFS chunk2 172.20.10.3 CentOS7 mfs-1.6.27-5.tar.gz

首先关闭所有主机的防火墙,selinux功能

systemctl stop firewalld.service
setenforce 0

部署SVN服务器:
?安装SVN服务
yum install -y subversion #安装SVN
svnserve --version #查看版本

为PHP程序员创建仓库目录repo
mkdir -p /opt/svn/repo
//创建目录
svnadmin create /opt/svn/repo/
//创建一个新的仓库

调整SVN参数
vim /opt/svn/repo/conf/svnserve.conf
anon-access = none
//匿名用户没有任何权限
auth-access = write
//认证用户具有写权限
password-db = /opt/svn/repo/conf/passwd //用户的密码文件
authz-db = /opt/svn/repo/conf/authz //用户信息文件,主要是权限内容

启动SVN服务
svnserve -d -r /opt/svn/repo/
netstat -tunpl|grep svnserve

为PHP程序员创建账户并赋权
vim /opt/svn/repo/conf/passwd
[users]
zhangsan = abc123
sysadmin = abc123

vim /opt/svn/repo/conf/authz
[/]
zhangsan = r //根目录即/opt/svn/repo目录下,sysadmin具有读的权限
sysadmin = r //zhangsan用户对根目录有读的权限
[/webphp]
zhangsan = rw //zhangsan用户对此目录有读写的权限,用户导入PHP代码
sysadmin = r //运维工程师具有读的权限,用于部署

初始化php程序员目录库
mkdir /opt/svn/repo/webphp
svn import webphp/ file:///opt/svn/repo/webphp -m "初始化svn目录"

SVN服务器部署完成,PHP程序员可以将写好的代码导入webphp项目中。
部署Nginx服务
?事先将需要的软件包放到家目录下,进行部署;
yum -y install pcre-devel zlib-devel gcc gcc-c++ make
useradd -M -s /sbin/nologin nginx
tar xzvf nginx-1.12.0.tar.gz -C /opt
cd /opt/nginx-1.12.0/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
make && make install
ln -s /usr/local/nginx/sbin/* /usr/local/sbin/
nginx
netstat -antp | grep nginx

配置nginx支持php解析
(1)在nginx的主配置文件中的server{}配置段,将php的网页请求转给PHP服务器的fpm模块处理
vi /usr/local/nginx/conf/nginx.conf
location ~ .php$ {
root /var/www/html/webphp; #php文件所在目录
fastcgi_pass 172.20.10.10:9000; #php文件转发给php-fpm模块
fastcgi_index index.php; #默认文件是index.php
include fastcgi.conf; #包含fastcgi的配置文件
}


(2)重启nginx服务

killall -1 nginx

部署PHP服务器
?事先将需要的软件包放到家目录下,进行部署;
(1)安装php
yum -y install gd libxml2-devel libjpeg-devel libpng-devel zlib-devel fontconfig-devel openssl-devel bzip2-devel
cd ~/
tar xjvf php-5.6.11.tar.bz2
cd php-5.6.11/
./configure --prefix=/usr/local/php5 --with-gd --with-zlib -with-config-file-path=/usr/local/php5 --enable-mbstring --with-jpeg-dir=/usr/lib --with-openssl --disable-ipv6 --enable-fpm
make && make install
cp php.ini-development /usr/local/php5/php.ini
ln -s /usr/local/php5/bin/ /usr/local/bin/
ln -s /usr/local/php5/sbin/
/usr/local/sbin/

(2)配置安装php加速器

cd ~/
tar xzvf ZendGuardLoader-php-5.3-linux-glibc23-i386.tar.gz
cd ZendGuardLoader-php-5.3-linux-glibc23-i386/php-5.3.x
cp ZendGuardLoader.so /usr/local/php5/lib/php
vim /usr/local/php5/php.ini

在php.ini文件末尾加入以下参数,开启ZendGuardLoader模块


(3)配置php-fpm进程

cd /usr/local/php5/etc/
cp php-fpm.conf.default php-fpm.conf
useradd -M -s /sbin/nologin php
vim php-fpm.conf
//找到这些内容,然后修改
pid = run/php-fpm.pid
user = php
group = php
listen = 0.0.0.0:9000
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35




(4)启动php-fpm进程
/usr/local/sbin/php-fpm
netstat -tnal | grep 9000

部署MySQL数据库,部署主从复制
?事先将需要的软件包放到家目录下,进行部署;

yum -y install ncurses-devel cmake gcc gcc-c++ ncurses bison libaio-devel
cd ~/
tar xzvf mysql-5.5.24.tar.gz
cd mysql-5.5.24/
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DSYSCONFDIR=/etc -DMYSQL_DATADIR=/home/mysql/ -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DWITH_SSL=system -DMYSQL_TCP_PORT=3306 -DENABLE_DOWNLOADS=1 -DWITH_SSL=bundled
make && make install

优化调整

在mysql源码目录中的support-files文件夹下,根据实际需求建立mysql系统的配置文件my.cnf

将mysql服务的启动脚本mysql.server添加为系统服务,并设置为开机自启项
\cp support-files/my-medium.cnf /etc/my.cnf
cp support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --level 35 mysqld on

设置环境变量

为了方便在任何目录下使用mysql命令,需要在/etc/profile设置环境变量
echo "PATH=$PATH:/usr/local/mysql/bin/" >> /etc/profile
source /etc/profile

初始化数据库

为了能够正常使用mysql数据库系统,应以运行用户mysql的身份执行初始化
useradd -s /sbin/nologin mysql
chown -R mysql.mysql /usr/local/mysql
/usr/local/mysql/scripts/mysql_install_db --user=mysql --ldata=/var/lib/mysql --basedir=/usr/local/mysql --datadir=/home/mysql

vim /etc/init.d/mysqld

...........

basedir=/usr/local/mysql

datadir=/home/mysql #修改服务启动脚本,指定数据存放位置

............

启动mysql服务
service mysqld start
netstat -anpt | grep 3306

配置主从复制;
?修改mysql master主服务器的配置文件,在配置文件中修改或增加以下选项

vim /etc/my.cnf

server-id = 1 //修改id
log-bin=master-bin //增加主服务器日志文件//
log-slave-updates=true //增加从服务器更新二进制日志//

重启服务

service mysqld restart

登录mysql程序,给mysql slave从服务器授权

mysql slave从服务器配置

?在配置文件中修改或增加以下选项

vim /etc/my.cnf

[mysqld]

server-id = 2 #与主服务器id不一样

relay-log=relay-log-bin //从主服务器上同步日志文件记录到本地//

relay-log-index=slave-relay-bin.index //定义relay-log的位置和名称//

service mysqld restart

登录mysql配置同步

按主服务器结果更改下面命令中的master_log_file和master_log_pos的参数

在mysql master上给PHP服务器帐户授权,并同时验证主从同步;

在mysql slave上查看同步过来的数据库daima;

映射SVN仓库webphp服务目录到Nginx和PHP服务器上;

在Nginx服务器上;

编辑nginx首页文档index.html,并在浏览器上进行测试

在PHP服务器上

mkdir -p /var/www/html/

在网站根目录下编写一个“.php”格式的测试页面文件,使用PHP内建的“phpinfo()”函数显示服务器的PHP环境信息,PHP代码应包括在“<?php....?>”标记之间。

在网页 测试“http://172.20.10.9/index.php”,若能够看到PHP程序的版本号,配置命令,运行变量等相关信息,则表示web服务器已经能够正常显示PHP网页

测试PHP网页能否访问Mysql数据库

?再编写一个测试网页文件mysql.php,添加简单的数据库操作命令,用于验证与Mysql服务器的连接,查询等操作。其中“mysql_connect()”函数用于连接Mysql数据库,需要指定目标主机地址,以及授权访问的用户名,密码。

通过浏览器访问测试网页,“http://172.20.10.9/mysql.php”,若能看到成功连接的提示信息,则表示能够通过PHP页面访问Mysql数据库

部署MFS分布式文件系统

具体部署过程可参考另一篇文章《MFS分布式文件系统原理及环境搭建》

?搭建Master Server
yum install -y zlib-devel gcc gcc-c++
useradd mfs -s /sbin/nologin

tar xvf mfs-1.6.27-5.tar.gz
cd mfs-1.6.27/
./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfschunkserver \
--disable-mfsmount

make && make install

复制配置文件

在Master上需要用到的配置文件有两个:mfsmaster.cfg(主配置文件)和mfsexports.cfg(被挂载目录及权限配置文件)

cd /usr/local/mfs/etc/mfs/
cp mfsexports.cfg.dist mfsexports.cfg
cp mfsmaster.cfg.dist mfsmaster.cfg
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg

cd /usr/local/mfs/var/mfs/
cp metadata.mfs.empty metadata.mfs

/usr/local/mfs/sbin/mfsmaster start #开启服务
?搭建MetaLogger server

yum install gcc gcc-c++ zlib-devel -y
useradd -s /sbin/nologin mfs

tar zxvf mfs-1.6.27-5.tar.gz
cd mfs-1.6.27

./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfschunkserver \
--disable-mfsmount

make && make install

cd /usr/local/mfs/etc/mfs/
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg

修改配置文件
vi mfsmetalogger.cfg
MATER_HOST = 172.20.10.13 #指向master

/usr/local/mfs/sbin/mfsmetalogger start #开启服务

?搭建chunk Server(两台节点服务配置一样)

yum install -y zlib-devel gcc gcc-c++
useradd -s /sbin/nologin mfs
tar zxvf mfs-1.6.27-5.tar.gz
cd mfs-1.6.27
./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfsmaster \
--disable-mfsmount

make && make install

cd /usr/local/mfs/etc/mfs/
cp mfschunkserver.cfg.dist mfschunkserver.cfg
cp mfshdd.cfg.dist mfshdd.cfg

修改配置文件

vi mfschunkserver.cfg
MASTER_HOST = 172.20.10.13

指定 MFS共享文件存储目录,
vi mfshdd.cfg
/data

mkdir /data
chown -R mfs:mfs /data

/usr/local/mfs/sbin/mfschunkserver start #启动服务
?在PHP服务器上配置MFS客户端。并挂载使用;

安装fuse插件

yum install -y zlib-devel gcc gcc-c++

tar xzvf fuse-2.9.2.tar.gz
cd fuse-2.9.2

./configure
make && make install

vi /etc/profile
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
source /etc/profile

安装MFS

useradd mfs -s /sbin/nologin

tar zxvf mfs-1.6.27-5.tar.gz
cd mfs-1.6.27

./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfsmaster \
--disable-mfschunkserver \
--enable-mfsmount

make && make install

将mfs文件系统挂载在PHP服务器的/var/www/html/webphp/uploads/photos目录下
mkdir -p /var/www/html/webphp/uploads/photos

modprobe fuse //加载fuse模块到内核//
/usr/local/mfs/bin/mfsmount /var/www/html/webphp/uploads/photos -H 172.20.10.13
df –hT

优化客户端

echo "export PATH=/usr/local/mfs/bin:$PATH" >>/etc/profile

source /etc/profile

mfssetgoal -r 2 /var/www/html/webphp/uploads/photos/ #设置文件被复制两份
?在MASTER-server上启动监控服务,通过浏览器可以监控MFS系统

/usr/local/mfs/sbin/mfscgiserv

下一篇《SVN客户端配置及PHP程序员代码导入》将讲解在windows部署SVN客户端及PHP程序员如何将代码导入webphp项目中。

原文地址:http://blog.51cto.com/13728740/2292334

时间: 2024-10-08 04:00:08

部署社交网站(SVN+PHP+NGINX+MYSQL+MFS)的相关文章

部署社交网站全过程(Nginx+PHP+Mysql+MFS+SVN)

案列概述 公司的社交网站采用PHP语言开发,为了管理PHP程序员开发的代码,上级领导要求搭建SVN服务器进行版本控制.社交网站的第一个版本部署在LNMP平台上,前端为Nginx,通过fastcgi协议访问后端的PHP服务器.为了保证数据安全,要求搭建MySQL数据库主从集群.社交网站包含用户的相册功能,允许用户上传照片,上传照片需要使用共享存储来存放.公司决定使用MFS分布式文件系统,并将MFS挂载到PHP服务器的相关目录下. 本案拓扑 案列环境 主机 操作系统 IP地址 主要软件 Nginx

部署社交网站-SVN 与 LNMP架构

案例概述 公司的社交网站采用PHP语言开发,为了管理PHP程序员开发的代码,上级领导要求搭建SVN服务器进行版本控制.社交网站的第一个版本部署在LNMP平台之上,前端为 Nginx服务器,通过 fastcgi协议访问后端的PHP服务器.为了保证数据安全,要求搭建 MYSQL数据库主从集群. 社交网站项目包含用户的相册功能,允许用户上传照片,上传照片需要使用共享存储来存放.针对共享存储可用的开源方案有很多,如MFS. FastDFS等.公使用MFS分布式文件系统来实现,并将MFS挂载在PHP服务器

部署社交网站

项目案例:部署社交网站 前言:本次项目是搭建一套动态网站服务器平台,在上面运行社交网站(例如:人人网,开心网,天涯论坛).相关知识点在前面的课程中都有所涉及,今天的实验就是一个综合运用,体现了真实的项目实施流程和思路.本次实验有一个新的知识点,就是SVN服务器,SVN服务器可以统一存储程序员开发的代码,避免代码混乱,说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的,有点类似于文件服务器,但是比文件服务器要更安全,有利于多人维护,避免工作协调出现问题.此外,我们今天的环境要实现n

Centos7 部署社交网站(discuz论坛)

Centos7 部署社交网站(discuz论坛) 操作环境: 192.168.80.100 : svn192.168.80.101 : nginx192.168.80.102 : mariadb192.168.80.103 : php192.168.80.104 : nfs注意:为了防止不必要的错误,五台虚拟机都要联网,并且防火墙和selinux都要关闭systemctl stop firewalld //临时关闭防火墙setenforce 0 //临时关闭selinux 实验所需软件包(没有的

部署社交网站- MYSQL主从 与 MFS 文件系统

案例概述 公司的社交网站采用PHP语言开发,为了管理PHP程序员开发的代码,上级领导要求搭建SVN服务器进行版本控制.社交网站的第一个版本部署在LNMP平台之上,前端为 Nginx服务器,通过 fastcgi协议访问后端的PHP服务器.为了保证数据安全,要求搭建 MYSQL数据库主从集群. 社交网站项目包含用户的相册功能,允许用户上传照片,上传照片需要使用共享存储来存放.针对共享存储可用的开源方案有很多,如MFS. FastDFS等.公使用MFS分布式文件系统来实现,并将MFS挂载在PHP服务器

搭建SVN,部署社交网站

概述: 社交网站的第一个版本部署在LNMP平台之上,前段为Nginx服务器,通过fastcgi协议访问后端的PHP服务器.为了保证数据安全,要求搭建MySQL数据库主从集群. 项目介绍: 本项目案例结合SVN.LNMP和MySQL三种环境,部署一个社交网站,本社交网站采用PHP语言开发,搭建SVN服务器进行版本控制和集中管理PHP程序员开发的代码,以Nginx作为前端服务器,通过fastcgi协议访问后端的PHP服务器,调用PHP页面:为保证数据安全,搭建MySQL主从复制环境存储用户重要数据:

项目案例:部署社交网站

前言:本次项目是搭建一套动态网站服务器平台,在上面运行社交网站(例如:人人网,开心网,天涯论坛).相关知识点在前面的课程中都有所涉及,今天的实验就是一个综合运用,体现了真实的项目实施流程和思路.本次实验有一个新的知识点,就是SVN服务器,SVN服务器可以统一存储程序员开发的代码,避免代码混乱,说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的,有点类似于文件服务器,但是比文件服务器要更安全,有利于多人维护,避免工作协调出现问题.此外,我们今天的环境要实现nginx.php.mys

一篇博客让你学会部署社交网站( SVN+nginx+PHP+MySQL+MFS 内含所有源码包)

根据公司要求,实施过程大致如下:1 部署SVN服务器,为PHP程序员创建repo目录的访问账户,通知程序员可以导入代码2 部署nginx服务器3 部署PHP服务器4 部署MySQL主从服务器,根据程序员的要求创建数据库和表5 部署MFS6 发布上线 实验拓扑图如下: 实验环境:源码包链接:https://pan.baidu.com/s/1JONQrVyqH0qMwVzKmwsoxA 提取码:0zm8实验过程如下:一 部署SVN systemctl stop firewalld.service s

centos7上部署社交网站之MYSQL主从服务

部署MYSQL主从服务器,根据php程序员的要求创建数据库与表. 实验要求 主:192.168.43.229 从:192.168.43.198 主Master 开启时间同步 # systemctl stop firewalld.service //关闭防火墙 # setenforce 0 # vim /etc/ntp.conf 末尾添加:server 127.127.43.0 //本地是时钟源// fudge 127.127.43.0 stratum 8 //设置时间层级为8(限制在15内 #