# 部署服务
# 服务端
务必:dataServer数据服务节点务必启动6个节点及以上
建议:apiServer接口服务节点建议启动2个节点以上并设置负载均衡
Git克隆源码
git clone
进入项目根目录下,创建初始化脚本和启动项目脚本
cd oss
touch init.sh
touch start.sh
init.sh初始化脚本示例如下
#!/bin/bash
go build -o apiServer apiServer/apiServer.go
go build -o dataServer dataServer/dataServer.go
go build -o deleteOldMetadata deleteOldMetadata/deleteOldMetadata.go
go build -o deleteOrphanObject deleteOrphanObject/deleteOrphanObject.go
go build -o objectScanner objectScanner/objectScanner.go
#关闭服务
killall apiServer
killall dataServer
chmod 777 apiServer/apiServer
chmod 777 dataServer/dataServer
chmod 777 deleteOldMetadata/deleteOldMetadata
chmod 777 deleteOrphanObject/deleteOrphanObject
chmod 777 objectScanner/objectScanner
启动项目脚本示例如下(因为数据服务最低要求为6个节点,而我这里只在一台机器上运行,所以使用使用1~6数字创建目录)
#!/bin/bash
for i in `seq 1 6`
do
mkdir -p /tmp/$i/objects
mkdir -p /tmp/$i/temp
mkdir -p /tmp/$i/garbage
rm -rf /tmp/$i/objects/*
rm -rf /tmp/$i/temp/*
rm -rf /tmp/$i/garbage/*
done
LISTEN_ADDRESS=10.29.1.1:12345 STORAGE_ROOT=/tmp/1 ./$1/dataServer/dataServer &
LISTEN_ADDRESS=10.29.1.2:12345 STORAGE_ROOT=/tmp/2 ./$1/dataServer/dataServer &
LISTEN_ADDRESS=10.29.1.3:12345 STORAGE_ROOT=/tmp/3 ./$1/dataServer/dataServer &
LISTEN_ADDRESS=10.29.1.4:12345 STORAGE_ROOT=/tmp/4 ./$1/dataServer/dataServer &
LISTEN_ADDRESS=10.29.1.5:12345 STORAGE_ROOT=/tmp/5 ./$1/dataServer/dataServer &
LISTEN_ADDRESS=10.29.1.6:12345 STORAGE_ROOT=/tmp/6 ./$1/dataServer/dataServer &
LISTEN_ADDRESS=10.29.2.1:12345 ./$1/apiServer/apiServer &
LISTEN_ADDRESS=10.29.2.2:12345 ./$1/apiServer/apiServer &
LISTEN_ADDRESS指定服务所在的IP,STORAGE_ROOT指定对象存储的位置,需要提前objects、temp、garbage创建目录
Nginx 负载均衡示例,值得注意的是,项目中存在HEAD请求,Nginx会将head请求以get请求的方式发送给上游服务器,以下示例前三行解决了这个问题:
proxy_cache_convert_head off;
proxy_cache_methods GET HEAD;
proxy_cache_key $scheme$request_method$proxy_host$request_uri;
upstream ossApiServer { // apiServer接口服务地址
...
server ip:port;
server ip:port;
server ip:port;
...
}
server {
...
listen port;
server_name ip:port;
location / {
proxy_pass http://ossApiServer;
}
...
}
如果您追求更加高可用的策略,或可以选择其它,例如 OpenResty+Keepalived
# 客户端
Git克隆源码
git clone
修改项目根目录下vue.config.js中关于接口地址等信息,如果您在之前设置了负载均衡策略,请将target改为反向代理的地址
module.exports = {
...
devServer: {
disableHostCheck: true,
host: '域名',
port: 端口,
proxy: {
'/api': {
target: '后端接口Base Url',
secure:false,
changeOrigin: true,
pathRewrite:{
"^/api":""
}
}
}
}
...
}
项目根目录下执行,启动项目
npm install
npm run serve
打包vue项目
npm run build
Nginx跨域配置示例,location /apis/ { ... }
为反向代理,将ApiServer_URL
替换为接口地址
server
{
listen 80;
server_name lploss.cn;
index index.php index.html index.htm default.php default.htm default.html;
root /www/wwwroot/lploss.cn;
try_files $uri $uri/ /index.html;
# 反向代理
location /apis/ {
proxy_pass ApiServer_URL;
}
...
}
另外上述示例中try_files $uri $uri/ /index.html;
一行解决了vue-router中使用history模式导致刷新页面404状态码的问题,如果是您使用Tomact部署,解决此问题请移步:Vue项目部署服务器后刷新页面报404 (opens new window)