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

news/2024/5/10 22:33:44/文章来源:https://blog.csdn.net/weixin_34095889/article/details/92242382

根据公司要求,实施过程大致如下:
1 部署SVN服务器,为PHP程序员创建repo目录的访问账户,通知程序员可以导入代码
2 部署nginx服务器
3 部署PHP服务器
4 部署MySQL主从服务器,根据程序员的要求创建数据库和表
5 部署MFS
6 发布上线

实验拓扑图如下:
一篇博客让你学会部署社交网站( SVN+nginx+PHP+MySQL+MFS 内含所有源码包)

实验环境:
一篇博客让你学会部署社交网站( SVN+nginx+PHP+MySQL+MFS 内含所有源码包)
源码包链接:https://pan.baidu.com/s/1JONQrVyqH0qMwVzKmwsoxA
提取码:0zm8
实验过程如下:
一 部署SVN

systemctl stop firewalld.service 
setenforce 0
yum install subversion -y
svnserve --version        #查看版本

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

为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 #创建测试文件

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

导入webphp

svn import webphp file:///opt/svn/repo/webphp -m "init web"

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

二 部署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的欢迎首页
一篇博客让你学会部署社交网站( SVN+nginx+PHP+MySQL+MFS 内含所有源码包)

三 部署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
一篇博客让你学会部署社交网站( SVN+nginx+PHP+MySQL+MFS 内含所有源码包)

四 部署MySQL主从服务器
安装MySQLmaster服务器:

systemctl stop firewalld.service
setenforce 0

yum 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; #查看二进制日志状态

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

mysql> grant all privileges on . to 'php'@'192.168.199.%' identified by '123456'; #给php用户授权

在PHP服务器上创建测试脚本,测试MySQL能否连接PHP

<?php
$link=@mysql_connect ('192.168.199.132','php','123456');
if($link) echo "Welcome to mysql";
mysql_close();
?>

在浏览器上访问192.168.199.130/index.php
一篇博客让你学会部署社交网站( SVN+nginx+PHP+MySQL+MFS 内含所有源码包)

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 status\G; #查看状态

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

mysql> create database school; #在MySQLmaster上创建school数据库

在从服务器上进行查看,出现school数据库表示主从同步成功
一篇博客让你学会部署社交网站( SVN+nginx+PHP+MySQL+MFS 内含所有源码包)

五 部署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 0

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

chown -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.cfg

vim mfsmetalogger.cfg
MASTER_HOST = 192.168.199.129
#指向master服务器
一篇博客让你学会部署社交网站( SVN+nginx+PHP+MySQL+MFS 内含所有源码包)
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 0

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-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.cfg

vim mfschunkserver.cfg
MASTER_HOST = 192.168.199.129
#地址指向master
一篇博客让你学会部署社交网站( SVN+nginx+PHP+MySQL+MFS 内含所有源码包)
vim mfshdd.cfg
/data
#在mfshdd文件下添加一行/data,在这里/data是一个给MFS的分区
一篇博客让你学会部署社交网站( SVN+nginx+PHP+MySQL+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-mfsmount

make && 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+MySQL+MFS 内含所有源码包)

七 发布上线
通过在SVN服务器上创建的账户部署代码至nginx服务器和PHP服务器,注意nginx和PHP服务器的服务目录分别是/usr/local/nginx/html/webphp和/var/www/html/webphp/

cd /usr/local/nginx/html/
[root@localhost 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

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

可以看到在nginx服务器上存在SVN的测试文件,PHP服务器的部署方式和nginx服务器类似。

转载于:https://blog.51cto.com/13706760/2296065

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_728143.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nginx proxy代理网站常用优化配置

#proxy代理网站常用优化配置如下&#xff0c;将配置写入新文件&#xff0c;调用时使用include引用即可 #[rootNginx ~]# vim /etc/nginx/proxy_params proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_a…

WordPress SEO ☞ WordPress网站终极优化指南

原文地址&#xff1a;http://www.eastdesign.net/wordpress-seo/ 最新消息&#xff0c;东方设计学院 WordPress SEO 系列视频教程正在持续更新中&#xff0c;目前为了不至于让视频传播过于泛滥&#xff0c;设置了登陆权限&#xff0c;有兴趣查看的用户可以简单填写一个索取测…

Nginxproxy代理网站常用优化配置_马立杰_新浪博客

#proxy代理网站常用优化配置如下&#xff0c;将配置写入新文件&#xff0c;调用时使用include引用即可#[rootNginx ~]# vim /etc/nginx/proxy_paramsproxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x…

一次网站登录慢故障排查

昨天上午到公司&#xff0c;研发发邮件通知说有用户反映登录我们A站速度很慢&#xff0c;登录进去之后的操作都是正常的&#xff0c;所以基本可以排除网络与服务器压力大的因素。那么接下来就是看看数据库与缓存是否成为瓶颈&#xff0c;结果没有什么发现&#xff0c;毕竟A站是…

做一个普通网站到底有多难-100元+7天=3个站点

点击查看原文:做一个普通网站到底有多难-100元&#xff0b;7天&#xff1d;3个站点 oh 首先提醒你&#xff0c;这是一篇软文。什么&#xff0d;我不会写软文&#xff0c;也对&#xff0c;这是一篇你可以了解我做一个网站的简单省钱的过程&#xff0c;最起码这个一篇有用的软文。…

大学生网页作业之-个人主页、校园网站

作业要求 1、共用头部文件header.html&#xff0c;其它页面用iframe调用 2、首页文件模块丰富&#xff0c;要求带有姓名、学号、个人简介 3、要有注册页面&#xff0c;注册页面姓名、密码、邮箱&#xff0c;姓名要求A-Z、0-9和下划线组合&#xff0c;密码最少为6位&#xf…

大学生期末大作业之购物网站

作业 要求&#xff1a; 建立一个购物网站 1、至少8个网页&#xff08;页面之间相互链接&#xff09; 2、要求有表格布局的页面 3、要求有DIVCSS的页面&#xff08;左中右浮动布局、上中下布局&#xff09; 4、要求有图片轮播图效果&#xff08;改变属性行为&#xff09;和…

web网站加速之CDN(Content Delivery Network)技术原理

在不同地域的用户访问网站的响应速度存在差异,为了提高用户访问的响应速度、优化现有Internet中信息的流动,需要在用户和服务器间加入中间层CDN. 使用户能以最快的速度&#xff0c;从最接近用户的地方获得所需的信息&#xff0c;彻底解决网络拥塞&#xff0c;提高响应速度&…

node抓取58同城信息_如何使用标准库和Node.js轻松抓取网站以获取信息

node抓取58同城信息网络抓取工具是一种工具&#xff0c;可让我们选择网站的非结构化数据并将其转换为结构化数据库。 那么&#xff0c;网络刮板将在哪里派上用场呢&#xff1f; 我列出了我最喜欢的用例&#xff0c;以使您对启动自己的应用感到兴奋&#xff01; Quora上的这个问…

如何使用标准库和Node.js轻松抓取网站以获取信息

网络抓取工具是一种工具&#xff0c;可让我们选择网站的非结构化数据并将其转换为结构化数据库。 那么&#xff0c;网络刮板将在哪里派上用场呢&#xff1f; 我列出了我最喜欢的用例&#xff0c;让您对启动自己的应用感到兴奋&#xff01; Quora上的这个问题鼓励我构建网络刮板…

测试 node.js网站_在2018年测试Node.js

测试 node.js网站流为300亿以上的最终用户提供数据源。 在所有这些用户都依赖我们的基础架构的情况下&#xff0c;我们非常乐意测试投入生产的所有产品。 我们的主要代码库是用Go编写的&#xff0c;剩下的是Python。 我们最近的展示应用程序Winds 2.0是使用Node.js构建的&…

大型网站技术架构(五)网站高可用架构

2019独角兽企业重金招聘Python工程师标准>>> 网站的可用性&#xff08;Avaliability&#xff09;描述网站可有效访问的特性。 1、网站可用性的度量与考核 网站不可用时间&#xff08;故障时间&#xff09;故障修复时间点-故障发现&#xff08;报告&#xff09;时间点…

跟我一起数据挖掘(20)——网站日志挖掘

收集web日志的目的 Web日志挖掘是指采用数据挖掘技术&#xff0c;对站点用户访问Web服务器过程中产生的日志数据进行分析处理&#xff0c;从而发现Web用户的访问模式和兴趣爱好等&#xff0c;这些信息对站点建设潜在有用的可理解的未知信息和知识&#xff0c;用于分析站点的被访…

Shell脚本——批量检测网站是否异常并邮件通知

批量检测网站是否异常脚本 检测网站运行是否正常&#xff0c;如果不能正常访问&#xff0c;发送邮件通知管理员 curl -o /de/dev/null -s -w "%{http_code}" www.baidu.com 结果演示 访问失败&#xff0c;也又可能和网络等等原因有关。 所以我们要进行次数判断&a…

超级好用的解析JSON数据的网站

超级好用的解析JSON数据的网站 网址 http://json.parser.online.fr/beta/ 效果图 测试数据 {"city":{"id":1816670,"name":"Beijing","coord":{"lon":116.397232,"lat":39.907501},"country"…

网站input及textarea提示文字的样式及功能模块总结

coding表单的过程中&#xff0c;经常会遇到input及textarea的部分&#xff0c;而这两种标签几乎都伴随着框内提示文字的情况&#xff0c;如果把每处需要做提示的地方都做一套样式及脚本的话&#xff0c;又不利于网站的代码共用&#xff0c;并且调整起来也十分费力&#xff0c;所…

[置顶]大型网站技术架构(七)网站的可扩展性架构

扩展性是指对现有系统影响最小的情况下&#xff0c;系统功能可持续扩展或提升的能力。 设计网站可扩展架构的核心思想是模块化&#xff0c;并在此基础上&#xff0c;降低模块间的耦合性&#xff0c;提供模块的复用性。模块通过分布式部署&#xff0c;独立的模块部署在独立的服务…

nginx 安装ssl 网站证书的方法

安装ssl网站证书&#xff1a; 现在https越来越主流&#xff0c;如果SSL证书没有配置好&#xff0c;每次访问的时候浏览器就会报错&#xff0c;说你这是一个不安全的网站云云&#xff0c;我也花了很多时间来研究所谓“自颁证书”&#xff0c;很麻烦而且也没法彻底解决&#xff…

react开发h5移动网站_适用于移动应用程序开发人员的5个最佳React本机课程

react开发h5移动网站Ugur Akdemir的 “手持银色iPhone 6的人”在Unsplash上 如果您是一个网络开发人员&#xff0c;希望进入庞大的移动应用程序开发世界&#xff0c;但又不想花时间学习Java或Kotlin进行Android开发&#xff0c;或者不想花Objective C或Swift进行iOS开发&#x…