一篇博客让你学会部署社交网站( SVN+nginx+PHP+MySQL+MFS 内含所有源码包)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一篇博客让你学会部署社交网站( SVN+nginx+PHP+MySQL+MFS 内含所有源码包)相关的知识,希望对你有一定的参考价值。
根据公司要求,实施过程大致如下:
1 部署SVN服务器,为php程序员创建repo目录的访问账户,通知程序员可以导入代码
2 部署nginx服务器
3 部署PHP服务器
4 部署mysql主从服务器,根据程序员的要求创建数据库和表
5 部署MFS
6 发布上线
实验拓扑图如下:
实验环境:
源码包链接:https://pan.baidu.com/s/1JONQrVyqH0qMwVzKmwsoxA
提取码:0zm8
实验过程如下:
一 部署SVN
systemctl stop firewalld.service
setenforce 0
yum install subversion -y
svnserve --version #查看版本
为PHP程序员创建仓库目录repo
mkdir -p /opt/svn/repo #创建目录
svnadmin create /opt/svn/repo/ #创建一个新的仓库
调整SVN参数
vim /opt/svn/repo/conf/svnserve.conf
[general] #总体配置
anon-access = none #匿名用户没有任何权限 19行
auth-access = write #认证用户具有写的权限 20行
password-db = /opt/svn/repo/conf/passwd #用户的密码文件 27行
authz-db = /opt/svn/repo/conf/authz #用户的信息文件 34行
svnserve -d -r /opt/svn/repo/ #启动SVN服务,关闭通过kill PID``
为PHP程序员创建账户,配置对repo具有读写权限,并将账户信息及仓库目录信息反馈给PHP程序员
cd /opt/svn/repo/
vim conf/passwd #创建账户密码文件
[users]
alpha = 123456 #格式:用户名 = 用户密码
sysadmin = 123456
创建权限文件
[/] #表示当前目录下的根
sysadmin = r
alpha = r
[/webphp]
sysadmin = r #运维工程师账户具有读权限,用于部署
alpha = rw #alpha对此目录具有读写权限mkdir webphp
echo "this is abc" > test.txt #创建测试文件
导入webphp
svn import webphp file:///opt/svn/repo/webphp -m "init web"
二 部署nginx服务器
安装
systemctl stop firewalld.service #关闭防火墙
setenforce 0
yum install gcc gcc-c++ pcre-devel zlib-devel -y #安装编译环境
useradd -M -s /sbin/nologin nginx #创建进程管理用户
tar zxvf nginx-1.2.8.tar.gz -C /opt
cd /opt/nginx-1.2.8/
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --user=nginx --group=nginx
make && make install #编译安装
修改配置
需要配置后端PHP程序的fastcgi访问接口
vim /usr/local/nginx/conf/nginx.conf
user nginx;
location / {
root html;
index index.html index.htm;
}location ~ .php$ {
root /var/www/html/webphp; #定义数据存放位置
fastcgi_pass 192.168.199.131:9000; #转发的数据交友PHP服务器处理
fastcgi_index index.php;
include fastcgi.conf; #文件改为配置文件
}
建立软链接便于系统识别命令
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
nginx #开启服务
在浏览器进行访问,可以看到显示了nginx的欢迎首页
三 部署PHP服务器
systemctl stop firewalld.service #关闭防火墙
setenforce 0
安装PHP,并且通过配置php-fpm进程监听9000端口来接受nginx的请求
yum install gd libxml2-devel libjpeg-devel libpng-devel mysql-devel gcc gcc-c++ -y #安装编译环境
useradd -M -s /sbin/nologin php #创建进程管理用户
tar zxvf php-5.5.38.tar.gz -C /opt
cd /opt/php-5.5.38/
cp /usr/lib64/mysql/libmysqlclient.so /usr/lib/libmysqlclient.so #PHP默认去/usr/lib搜索libmysqlclient.so,所以要将文件复制到这个目录下./configure --prefix=/usr/local/php --with-gd --with-zlib --with-mysql --with-mysqli --with-mysql-sock --with-config-file-path=/usr/local/php --enable-mbstring --enable-fpm --with-jpeg-dir=/usr/lib
make && make install 编译安装
进行优化
cp php.ini-development /usr/local/php/php.ini #复制一份配置文件模板
ln -s /usr/local/php/bin/ /usr/local/bin/ #建立软链接方便直接使用命令
ln -s /usr/local/php/sbin/ /usr/local/sbin/ #建立软链接方便直接使用命令
修改主配置文件
配置php-fpm进程
cd /usr/local/php/etc/
cp php-fpm.conf.default php-fpm.conf
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 #最大空闲进程数
开启php-fpm进程
/usr/local/php/sbin/php-fpm
netstat -ntap | grep 9000 #查看端口
创建PHP站点目录,并且编写测试脚本
mkdir -p /var/www/html/webphp
vim /var/www/html/webphp/index.php
<?php
phpinfo();
?>
在浏览器上访问192.168.199.130/index.php
四 部署MySQL主从服务器
安装MySQLmaster服务器:
systemctl stop firewalld.service
setenforce 0yum install gcc gcc-c++ cmake ncurses-devel bison libaio-devel -y
tar zxvf mysql-5.5.24.tar.gz -C /opt
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT-CHARSET=utf8 -DDFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DSYSCONFDIR=/etc
make && make install
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 /etc/init.d/mysqld
vim /etc/profile
export PATH=$PATH:/usr/local/mysql/bin
source /etc/profile
useradd -M -s /sbin/nologin mysql
chown -R mysql.mysql /usr/local/mysql/
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql #初始化数据库
service mysqld start #开启MySQL
mysqladmin -u root password ‘123456‘ #设置MySQL用户和密码
时间同步
yum install ntp -y
vim /etc/ntp.conf
server 127.127.1.0 #将本台主机定为时间同步服务器
fudge 127.127.1.0 stratum 8
systemctl start ntpd.service #启动ntp服务
主从同步:
vim /etc/my.cnf
server-id = 11
log-bin=master-bin #开启二进制文件
log-slave-update=true #允许从服务器进行同步service mysqld restart
创建同步的账户和密码
mysql> grant replication slave on . to ‘myslave‘@‘192.168.199.%‘ identified by ‘123456‘;
mysql> flush privileges; #刷新权限
mysql> show master status; #查看二进制日志状态
mysql> grant all privileges on . to ‘php‘@‘192.168.199.%‘ identified by ‘123456‘; #给php用户授权
在PHP服务器上创建测试脚本,测试MySQL能否连接PHP
<?php
[email protected]_connect (‘192.168.199.132‘,‘php‘,‘123456‘);
if($link) echo "Welcome to mysql";
mysql_close();
?>
在浏览器上访问192.168.199.130/index.php
MySQLslave:
时间同步:
yum install ntpdate -y
systemctl stop firewalld.service #关闭防火墙
setenforce 0
ntpdate 192.168.199.132 #进行时间同步
部署主从同步:
vim /etc/my.cnf
server-id = 22 #ID不能和MySQLmaster相同
relay-log=relay-log-bin
relay-log-index=slave-bin.index
service mysqld restart
指定同步服务器地址,同步所用的用户名和密码,以及同步的二进制日志文件和偏移量
mysql> change master to master master_host=‘192.168.199.132‘,master_user=‘myslave‘,master_password=‘123456‘,master_log_file=‘master-bin.000003‘,master_log_pos=257;
mysql> start slave; #开启同步
mysql> show slave statusG; #查看状态
测试同步:
mysql> create database school; #在MySQLmaster上创建school数据库
在从服务器上进行查看,出现school数据库表示主从同步成功
五 部署MFS
MFSmaster:
yum install gcc gcc-c++ zlib-devel -y
#安装编译环境useradd -s /sbin/nologin mfs
#创建进程用户tar zxvf mfs-1.6.27-5.tar.gz -C /opt
cd /opt/mfs-1.6.27/
./configure
--prefix=/usr/local/mfs
--with-default-user=mfs
--with-default-group=mfs
--disable-mfschunkserver
--disable-mfsmount
#Master所以需要禁用chunkserver和mount两个模块make && make install
#编译安装systemctl stop firewalld.service
#关闭防火墙
setenforce 0cd /usr/local/mfs/etc/mfs/
cp mfsexports.cfg.dist mfsexports.cfg
cp mfsmaster.cfg.dist mfsmaster.cfg
cp mfsmetalogger.cfg.dist mfsmetalogger.cfgcd /usr/local/mfs/var/mfs/
cp metadata.mfs.empty metadata.mfschown -R mfs.mfs /usr/local/mfs
/usr/local/mfs/sbin/mfsmaster start
#开启服务
MFSMetalogger:
yum install gcc gcc-c++ zlib-devel -y
useradd -s /sbin/nologin mfs
tar zxvf mfs-1.6.27-5.tar.gz -C /opt
cd /opt/mfs-1.6.27/
./configure
--prefix=/usr/local/mfs
--with-default-user=mfs
--with-default-group=mfs
--disable-mfschunkserver
--disable-mfsmount
#Log服务器需要禁用掉mfschunkserver和mfsmount两个模块make && make install
cd /usr/local/mfs/etc/mfs/
cp mfsmetalogger.cfg.dist mfsmetalogger.cfgvim mfsmetalogger.cfg
MASTER_HOST = 192.168.199.129
#指向master服务器
chown -R mfs.mfs /usr/local/mfs//usr/local/mfs/sbin/mfsmetalogger start
#开启服务ps -ef | grep mfs
systemctl stop firewalld.service
setenforce 0
搭建两台chunkserver,步骤一样:
yum install gcc gcc-c++ zlib-devel -y
useradd -s /sbin/nologin mfs
systemctl stop firewalld.service
setenforce 0tar zxvf mfs-1.6.27-5.tar.gz -C /opt
cd /opt/mfs-1.6.27/
./configure
--prefix=/usr/local/mfs
--with-default-user=mfs
--with-default-group=mfs
--disable-mfsmaster
--disable-mfsmount
#本台服务器是Chunk Server,所以需要禁用掉mfsmaster和mfsmount两个模块make && make install
cd /usr/local/mfs/etc/mfs/
cp mfschunkserver.cfg.dist mfschunkserver.cfg
cp mfshdd.cfg.dist mfshdd.cfgvim mfschunkserver.cfg
MASTER_HOST = 192.168.199.129
#地址指向master
vim mfshdd.cfg
/data
#在mfshdd文件下添加一行/data,在这里/data是一个给MFS的分区
mkdir /data
#创建挂载目录
chown -R mfs.mfs /data/usr/local/mfs/sbin/mfschunkserver start
#开启服务
六 在PHP服务器上进行挂载
安装fuse
yum install zlib-devel -y
yum install fuse fuse-devel -y
配置环境变量
vim /etc/profile
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
source /etc/profile
安装MFS
useradd -s /sbin/nologin mfs
tar zxvf mfs-1.6.27-5.tar.gz -C /opt
cd /opt/mfs-1.6.27/
./configure
--prefix=/usr/local/mfs
--with-default-user=mfs
--with-default-group=mfs
--disable-mfsmaster
--disable-mfschunkserver
--enable-mfsmountmake && make install
挂载MFS
mkdir -p /var/www/html/webphp/ #创建挂载点
modprobe fuse
/usr/local/mfs/bin/mfsmount /var/www/html/webphp/ -H 192.168.199.129 -o nonempty
df -h #查看挂载
七 发布上线
通过在SVN服务器上创建的账户部署代码至nginx服务器和PHP服务器,注意nginx和PHP服务器的服务目录分别是/usr/local/nginx/html/webphp和/var/www/html/webphp/
cd /usr/local/nginx/html/
[[email protected] html]# svn co svn://192.168.199.128/webphp #根据提示使用在SVN创建的账户登录,即可部署代码
认证领域: <svn://192.168.199.128:3690> a1d1bc57-8494-4a57-a50a-2b7ba1d75356
“root”的密码:
认证领域: <svn://192.168.199.128:3690> a1d1bc57-8494-4a57-a50a-2b7ba1d75356
用户名: alpha
“alpha”的密码:注意! 你的密码,对于认证域:
<svn://192.168.199.128:3690> a1d1bc57-8494-4a57-a50a-2b7ba1d75356
只能明文保存在磁盘上! 如果可能的话,请考虑配置你的系统,让 Subversion
可以保存加密后的密码。请参阅文档以获得详细信息。你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,
来避免再次出现此警告。保存未加密的密码(yes/no)?yes
A webphp/test.txt
可以看到在nginx服务器上存在SVN的测试文件,PHP服务器的部署方式和nginx服务器类似。
以上是关于一篇博客让你学会部署社交网站( SVN+nginx+PHP+MySQL+MFS 内含所有源码包)的主要内容,如果未能解决你的问题,请参考以下文章
部署社交网站(SVN+PHP+NGINX+MYSQL+MFS)