CoreWebApi发布
一、发布dotnetCore到Windows时:#
-
创建项目时选择支持openApi自动加载Swagger到项目中
-
发布项目出现:找不到与以下网址对应的网页:http://localhost:8888/
-
添加Microsoft.Extensions.PlatformAbstractions,为swagger每个方法和类进行注释显示
-
在ConfigureServices中添加
services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "TestWebApi", Version = "v1" ,Description = "gong的WebApi"}); // 获取xml文件名 var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml"; // 获取xml文件路径 var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile); // 添加控制器层注释,true表示显示控制器注释 c.IncludeXmlComments(xmlPath, true); });
-
在web.config中aspNetCore节点加入:
<environmentVariables> <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development"/> </environmentVariables>
- 在Configure中需要操作
app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "gong.Dotnet5.WebApi v1"); c.RoutePrefix = string.Empty;//设置根节点访问 });
//app.UseHttpsRedirection();//需要注释掉这句,之前一直卡在发布到IIS不会跳转http://localhost:9000/报404 -
然后重启IIS站点
二、发布Dotnet5 WebApi程序到Linus:Centos7+Docker+Nginx#
-
Centos7准备安装yum、docker、nginx#
1、切换到Linux更目录更新yum源*
1.1防火墙操作
临时关闭防火墙
systemctl stop firewalld
永久防火墙开机自关闭
systemctl disable firewalld
临时打开防火墙
systemctl start firewalld
防火墙开机启动
systemctl enable firewalld
查看防火墙状态
systemctl status firewalld
1.2设置域名解析
配置下centos的DNS一个国内,一个国外
vi /etc/resolv.conf
nameserver 114.114.114.114
nameserver 8.8.8.8
1.3安装wget命令,已安装请忽略
yum -y install wget
1.4更新yum源
cd /etc/yum.repos.d/ ls
mv CentOS-Base.repo CentOS-Base.repo_bak
#设置源网易或阿里云
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo//网易云源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo//阿里云源
yum clean all //内容清除掉, 以释放磁盘空间
yum makecache //就是把服务器的包信息下载到本地电脑缓存起来 配合yum -C search subversion
yum -y update //更新yum源包
yum repolist all //查看已安装的yum源
2、Centos安装Docker和Nginx
1、安装Docker
1.1卸载旧版本docker(如果没有安装过自然不用卸载啦,跳过这一步)
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
1.2安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
1.3添加软件源信息(这里使用国内的阿里云,docker官网上国外地址网速太慢
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
1.4更新并安装 Docker-CE(个人版,如果是企业安装也可以选择企业版,参考官网文档:https://docs.docker.com/install/linux/docker-ee/centos/)
sudo yum makecache fast
sudo yum -y install docker-ce
1.5开启Docker服务
sudo systemctl start docker //centos7开启服务是systemctl,centos6是service sudo systemctl enable docker //设置docker开机自启 sudo systemctl status docker //查看docker运行状态
1.6查看Docker版本
docker version//查看版本
docker info
sudo docker run hello-world //运行测试项目
1.7配置Docker镜像加速地址
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn","https//registry.docker-cn.com","http://hub-mirror.c.163.com"]
}
EOF
sudo systemctl daemon-reload //镜像重载
sudo systemctl restart docker //重启Docker
1.8Docker拉取Nginx镜像
Docker pull nginx ----> docker ps//查看运行容器
Docker run --name=nginxapi --restart=always -d -p 8888:80 nginx //运行nginx
2、Nginx配置
1.docker exec -it nginx /bin/bash //运行nginx 进入到nginx
2.apt-get update --先更新来源
3.apt-get install -y vim --安装 vim
4.cd /etc/nginx vim nginx.conf 看是否指向为指定路径 /etc/nginx/conf.d/*.conf //切换到nginx路径
5.mkdir -p /root/nginx/www /root/nginx/logs /root/nginx/conf //在root路径下创建nginx挂载文件夹 切换到/root/nginx目录下
6.docker cp ea37c8eaef5b:/etc/nginx/conf.d/default.conf /root/nginx/conf 【ea37c8eaef5b】1运行的nginx容器id conf.d目录下的配置文件copy到本地,cp 表示复制
7.要给netcore容器配置反向代理,首先需要知道netcore项目容器的IP地址,所以在修改配置之前,首先需要获取myapidemo容器的IP地址。
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 容器名 or 容器Id //拿到运行IP
docker inspect 容器名
8.再配置/root/nginx/conf下的配置文件
server {
#监听的端口
listen 80;
#字符格式
charset utf-8;
#当前的服务器ip
server_name 192.168.213.136;
location / {
#要代理去哪个服务器的ip以及端口
proxy_pass http://192.168.213.136:8090; 【8090】项目运行所监听的端口
#被代理服务器返回默认的响应头中的location头域以及refresh头域数值
proxy_redirect default;
}
}
-
发布运行项目#
VS2022中添加Dockerfile配置:
# base image【microsoft/dotnet:5.0.0-core 来构建我们的镜像】
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
# 设置工作目录【创建项目在docker容器内的工作目录,容器启动时执行的命令会在该目录下执行】
#WORKDIR 命令为后续的RUN、CMD、COPY、ADD等命令配置工作目录。设置后,接下来的COPY和ADD命令中的相对路径就是相对于WORKDIR指定的路径
WORKDIR /app
# 复制内容到镜像
#并不是指本机目录下的文件,而是 docker引擎中展开的构建上下文中的文件
#即当前执行docker build构建时的所在目录,将当前上文下的文件复制到容器内的当前目录下
COPY . /app
# 是声明运行时容器提供服务端口,将在docker run -p <宿主端口>:<容器端口>时用到
#EXPOSE 443
EXPOSE 8090
# 启动程序【启动镜像的默认入口命令】
ENTRYPOINT ["dotnet", "gong.dotnet5.demo.dll"]
Xftp将所有发布文件上传到服务器对应位置
在有项目文件的文件夹下:docker build -t aspApi 打包项目镜像【自动执行dockerfile里的配置】
首先找到项目文件目录,并进入项目根目录当中,然后使用如下命令生成镜像
ls --查看本地文件列表
cd netcoredemo --进入到项目根目录
docker build -t myapidemo . --生成项目镜像文件
docker images --查看当前docker所有镜像
docker run --name=myapidemo -d -p 9020:5000 myapidemo --运行docker下的镜像文件
在本机访问暴露端口 http://192.168.213.136:8090/swagger/index.html
作者:gongxingwen
出处:https://www.cnblogs.com/dotnetSunset/p/17312249.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
本文来自博客园,作者:渡——已,转载请注明原文链接:https://www.cnblogs.com/dotnetSunset/p/17312249.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?