准备环境:
centos7.0 及以上
nginx-1.13.5 以上
docker-ce 1.17 以上
1,更新系统组件:
yum update -y
API部署
2,准备好编译过的项目文件,一般为publish文件夹全部文件
3,准备dockerfile文件,内容如下:
FROM microsoft/aspnetcore:latest
WORKDIR /app
COPY . .
ENTRYPOINT ["dotnet", "YunCai.MarketManage.Web.Host.dll"]
4,将dockerfile放在publish目录下,上传到cnetos服务器上,随便找个目录临时放publish,镜像创建完成以后,publish可删除
5,进入 publish目录 :
命令:cd /root(这一层目录看你放在什么地方,自行修改)/publish
6,执行docker 镜像生成命令:
docker rm -f yuncaiapi || true (删除历史容器)
docker rmi yuncaiapi || true (删除历史镜像)
docker build -t yuncaiapi . (构建新镜像)
镜像生成以后 使用 命令:docker images -a 查看镜像是否正常,如下图:
7,使用最新进行启动容器
创建启动脚本: vi start.sh
输入以下内容:
docker run --name yuncaiapi_test \ (定义容器名称)
-p 8098:80 \ (8098是物理机端口号,80是容器端口号;访问地址:物理机IP:8098)
--restart always \ (当docker服务启动后自动启动该容器)
-v /etc/localtime:/etc/localtime \ (统一容器时间为服务器时间)
-v /srv/aspnetcore/yuncai/wwwroot:/app/wwwroot \ (将静态内容挂载到物理主机上,防止非频繁更新的内容被覆盖)
-v /srv/aspnetcore/yuncai/logs:/app/logs \ (将日志挂在到物理主机,方便查看问题)
yuncaiapi (上一步创建的原始镜像)
文件创建好以后,对脚本文件进行授权操作 :chmod 700 test.sh
8,使用脚本启动容器:./test.sh
9,如果没有报错,正常会看到下图:
10:使用外部IP访问当前网站:
http://110.120.142.10:8098
11:nginx 代理配置:
在nginx配置目录(/etc/nginx/conf.d)创建主机配置文件 xxx.conf
输入如下内容:
#配置负载均衡池
#Demo1负载均衡池
upstream wxcenter_pool {
#服务器局域网地址:docker映射主机端口
server 172.19.207.129:8098;
}
server {
listen 80;
#yuncai.sitename.com,为网站的主域名
server_name yuncai.sitename.com;
access_log /var/log/nginx/wxcenter.static.a.log;
error_log /var/log/nginx/wxcenter.static.e.log;
location / {
proxy_set_header Host $host:$server_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://wxcenter_pool;
}
}
12,重启nginx,使用域名直接访问,以上为api部署流程
前端生成部署
win下生成前端部署文件
1,如果前端项目有单独的域名(http://manage.yuncai.com),则需要修改vue目录下的生成配置:
进入目录 vue/config,打开index.js 修改assetsPublicPath 为 “/”
具体如下图:
2.如果前端项目没有单独域名(http://api.yuncai.com/manage),是放在域名子目录下的,则直接将截图中的“manage”改成指定的子目录
3,开始生成:cmd命令进入vue目录 cd vue
npm run build:prod
如下图
4,完成后在vue目录下找到dist目录,将整个dist下的内容上传到服务器上指定目录(一般为nginx的默认路径/usr/share/nginx/html),因为前端站点属于纯静态内容,无需其他额外的运行时支持,只需要使用nginx直接做静态代理即可
5,nginx静态代理内容如下:
server {
listen 80 default_server;
server_name _;
root /usr/share/nginx/html;
access_log /var/log/nginx/static.a.log;
error_log /var/log/nginx/static.e.log;
location / {
index start.html index.html index.htm index.php;
location ~* \.(eot|ttf|woff|woff2|svg|otf)$ {
add_header Access-Control-Allow-Origin *;
}
}
#配置Nginx动静分离,定义的静态页面直接从Nginx发布目录读取。
location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {
root /usr/share/nginx/html;
#expires定义用户浏览器缓存的时间为7天,如果静态页面不常更新,可以设置更长,这样可以节省带宽和缓解服务器的压力
expires 7d;
}
}