.Net5网站发布到IIS、CentOS8 Service和部署到docker

本文档详细介绍了如何在Linux(CentOS 8)上部署和配置.NET 5 Web应用程序,包括安装SDK和Runtime,设置IIS,通过XFTP传输文件,指定端口并配置防火墙,实现自启动服务。接着,讲解了如何将应用部署到Docker,包括安装Docker CE,创建Dockerfile,构建并运行容器,以及设置容器自启动。最后,提供了整个过程中的关键步骤和参考链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

发布到IIS

  1. 到下面这个网址下载ASP.NET Core Runtime 5.0.8;
    https://dotnet.microsoft.com/download/dotnet/5.0
  2. 进入IIS,新建一个应用程序池,.Net CLR版本选择“无托管代码”;
  3. 新建网站,选择刚才的应用程序池;
  4. O98K了!测试环境是阿里云的windows server 2008 R2,原装IIS+.net 5 runtime。

发布到CentOS 8

测试环境是VMWare Workstation 15 Pro 15.5.6 build-16341506 + CentOS 8 64位

安装SDK/Runtime:

sudo dnf install dotnet-sdk-5.0
sudo dnf install dotnet-runtime-5.0

用XFTP把发布后的文件copy到Linux磁盘目录中(注意:用vs2019发布的时候,目标运行时选择“可移植”);
运行我们的网站程序:

dotnet CoreWebMVC.dll --urls="http://*:8080" --ip="127.0.0.1" --port="8080"

# 成功启动后,有以下提示:
info: Microsoft.Hosting.Lifetime[0]
      Now listening on: http://[::]:8080
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Production
info: Microsoft.Hosting.Lifetime[0]
      Content root path: /var/www/dotnet/www
^Cinfo: Microsoft.Hosting.Lifetime[0]
      Application is shutting down...

注意:这里是指定了网站的端口,默认情况下是5000端口且外网无法访问;
添加端口的防火墙,或者测试的时候直接关闭防火墙:

systemctl stop firewalld.service #停止防火墙
systemctl disable firewalld.service #禁用防火墙
systemctl status firewalld.service #查看状态

在外网win10下,用ip+8080端口就可以访问网站了;
目前,是在控制台下运行的,关闭控制台后网站就挂了,因此需要加入Linux service自启动。
先进入路径:/etc/systemd/system/,
增加service文件mydonet5.service,内容如下:

[Unit]
Description="mydonet5 Service"

[Service]
Type=simple
GuessMainPID=true
WorkingDirectory=/var/www/dotnet/www/
StandardOutput=journal
StandardError=journal
ExecStart=/usr/bin/dotnet CoreWebMVC.dll --urls="http://*:8080" --ip="127.0.0.1" --port="8080"
Restart=always

[Install]
WantedBy=multi-user.target

然后加入自启动服务:

systemctl status mydonet5.service  //查看服务
systemctl start mydonet5.service //启动服务
systemctl restart mydonet5.service //重启服务
systemctl stop mydonet5.service //停止服务

O98K了~!
虽然.net 5网站已经可以在CentOS下开机自启动运行了,但还是不够炫酷~~~~
下面继续研究以下如何部署到docker并且让docker也自启动。。。

部署到docker

搜了一下资料,貌似只能安装docker ce,而且默认库里面么有~~~~

  1. 下载ce的库
    $curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo
  2. 安装依赖
    yum install https://download.docker.com/linux/Fedora/30/x86_64/stable/Packages/containerd.io-1.2.6-3.3.fc30.x86_64.rpm
  3. 安装ce
    yum install docker-ce
    这里会报错,根据提示,要加一个忽略错误的参数,忘了保存了,可以自行查看提示;
    上面3步参考的:https://www.linuxprobe.com/centos81-install-docker.html
  4. 启动docker
    systemctl start docker
    弄成开启启动
    systemctl enable docker
  5. 回到vs2019,在网站项目下点击右键,然后添加,然后选docker支持,会自动生成一个dockerfile文件;
  6. 把这个dockerfile修改一下:
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 80

FROM base AS final
# 从当前文件目录,复制文件到docker目录
COPY . .
ENTRYPOINT ["dotnet", "CoreWebMVC.dll"]
  1. 上传到Linux下的网站文件夹;
  2. 远程连接Linux,然后进入到刚才上传的网站文件夹,先创建docker镜像(xxx代表镜像名字,随便起,点不能删除):
docker build -t xxx .
  1. 运行,生成docker容器(49154是暴漏在外网的端口,80是docker里面配的端口):
docker run -p 0.0.0.0:49154:80 --name=container_name --restart=always xxx

这样,在linux启动后就会自动运行我们创建的docker容器了。
切换到win10客户端,输入ip+49154端口测试,O98K了~!
参考文献:https://www.cnblogs.com/shousiji/p/14918631.html

<think>我们正在讨论AshxWeb项目的部署发布。由于这是一个具体的项目名称,但没有提供详细的技术栈信息,我将基于常见的Web项目部署流程进行说明。通常,Web项目部署涉及以下几个步骤:1.**环境准备**:确保服务器或托管平台满足项目运行要求(如操作系统、运行时环境、数据库等)。2.**构建项目**:将源代码编译或打包成可部署的格式。3.**配置设置**:配置生产环境所需的参数(如数据库连接字符串、API密钥等)。4.**部署到服务器**:将构建好的项目文件传输到服务器或云平台。5.**启动服务**:在服务器上启动Web服务。6.**域名与HTTPS**(可选):配置域名解析SSL证书。由于AshxWeb的具体技术栈未知,我将以常见的ASP.NETCore项目(因为ashx扩展名通常与ASP.NET相关)为例,但请注意,实际步骤可能因技术栈而异。###部署AshxWeb项目(假设为ASP.NETCore)####1.环境准备-服务器操作系统:WindowsServer或Linux(推荐Linux以节省资源)。-安装.NETCore运行时(或SDK,如果需要在服务器上构建)[^1]。-安装Web服务器(如Nginx、Apache或IIS)[^2]。-安装数据库(如SQLServer、MySQL或PostgreSQL,如果项目需要)[^3]。####2.构建项目在开发环境中,使用以下命令构建项目:```bashdotnetbuild--configurationRelease```然后发布项目:```bashdotnetpublish--configurationRelease--output./publish```这将在`./publish`目录下生成可部署的文件。####3.配置生产环境设置-在`appsettings.Production.json`中配置生产环境所需的设置,例如数据库连接字符串。-确保敏感信息(如密码)通过环境变量或密钥管理工具提供,不要直接写在配置文件中[^4]。####4.部署到服务器将`publish`文件夹的内容复制到服务器上的目标目录(例如`/var/www/ashxweb`)。可以使用FTP、SCP或rsync等工具。####5.启动服务在Linux服务器上,可以使用systemd来管理服务。创建一个服务文件`/etc/systemd/system/ashxweb.service`,内容如下:```ini[Unit]Description=AshxWeb[Service]WorkingDirectory=/var/www/ashxwebExecStart=/usr/bin/dotnet/var/www/ashxweb/AshxWeb.dllRestart=alwaysRestartSec=10SyslogIdentifier=ashxwebUser=www-dataEnvironment=ASPNETCORE_ENVIRONMENT=Production[Install]WantedBy=multi-user.target```然后启动服务:```bashsudosystemctlenableashxweb.servicesudosystemctlstartashxweb.service```配置反向代理(以Nginx为例):```nginxserver{listen80;server_nameexample.com;location/{proxy_passhttp://localhost:5000;proxy_http_version1.1;proxy_set_headerUpgrade$http_upgrade;proxy_set_headerConnectionkeep-alive;proxy_set_headerHost$host;proxy_cache_bypass$http_upgrade;}}```####6.配置域名与HTTPS-将域名解析指向服务器IP。-使用Let'sEncrypt获取免费SSL证书,并配置Nginx使用HTTPS[^5]。###其他部署方式-**容器化部署**:使用Docker将项目容器化,然后部署到Kubernetes或DockerSwarm等容器编排平台。-**云平台部署**:如部署到AzureAppService、AWSElasticBeanstalk等,这些平台提供了简化的部署流程。###注意事项-在部署前进行充分的测试。-设置监控日志记录,以便于问题排查。-考虑安全性,如防火墙设置、定期更新等。§§相关问题§§1.AshxWeb项目具体使用什么技术栈?是ASP.NET吗?2.如何为AshxWeb项目配置数据库?3.部署过程中遇到端口冲突怎么办?4.如何实现AshxWeb项目的持续集成持续部署(CI/CD)?5.如何监控部署后的AshxWeb应用运行状态?[^1]:参考微软官方文档:https://dotnet.microsoft.com/download[^2]:Nginx官方文档:https://nginx.org/en/docs/[^3]:例如MySQL安装:https://dev.mysql.com/doc/refman/8.0/en/installing.html[^4]:关于配置管理:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/[^5]:Let'sEncrypt:https://letsencrypt.org/</think>### AshxWeb 项目部署发布指南 AshxWeb 作为 Web 服务项目,其部署流程主要包含以下步骤,以通用场景为基础(具体需根据技术栈调整): --- #### **1. 环境准备** - **服务器要求** - 操作系统:Linux(推荐 Ubuntu/CentOS)或 Windows Server - 运行环境:安装项目依赖(如 .NET Runtime、Node.js、Python 等,具体由 AshxWeb 技术栈决定) - 数据库:配置 MySQL/SQL Server/PostgreSQL 等(若项目需要)[^1] - **依赖安装示例(以 .NET Core 为例)**: ```bash # Ubuntu 安装 .NET SDK sudo apt-get update && sudo apt-get install -y dotnet-sdk-6.0 ``` --- #### **2. 构建项目** - **代码编译** - 若使用编译型语言(如 C#),需生成可执行文件: ```bash dotnet publish -c Release -o ./publish ``` - 若为脚本语言(如 Python/Node.js),确保依赖安装: ```bash pip install -r requirements.txt # Python npm install --production # Node.js ``` --- #### **3. 配置生产环境** - **关键配置** - 修改配置文件(如 `appsettings.json` 或 `.env`),设置: - 数据库连接字符串 - API 密钥、域名、端口等敏感信息 - **安全建议**:使用环境变量或密钥管理工具(如 Azure Key Vault)存储敏感数据[^2] --- #### **4. 部署到服务器** - **方式 1:手动部署** 1. 将构建产物(如 `publish/` 目录)上传至服务器(通过 SCP/FTP) 2. 启动服务: ```bash # .NET Core 项目启动 dotnet AshxWeb.dll --urls http://0.0.0.0:5000 ``` - **方式 2:容器化部署(推荐)** - 创建 Dockerfile: ```dockerfile FROM mcr.microsoft.com/dotnet/aspnet:6.0 COPY ./publish /app WORKDIR /app ENTRYPOINT ["dotnet", "AshxWeb.dll"] ``` - 构建并运行容器: ```bash docker build -t ashxweb . docker run -d -p 8080:5000 --name ashxweb-app ashxweb ``` - **方式 3:云服务平台** - 直接部署到 Azure App Service / AWS Elastic Beanstalk / Heroku: - 关联代码仓库(GitHub/GitLab),触发自动构建[^3] --- #### **5. 配置 Web 服务器(反向代理)** - **Nginx 示例**(监听 80 端口并转发请求): ```nginx server { listen 80; server_name your-domain.com; location / { proxy_pass http://localhost:5000; # 转发到 AshxWeb 服务 proxy_set_header Host $host; } } ``` 重启 Nginx:`sudo systemctl restart nginx` --- #### **6. 启用 HTTPS(可选但推荐)** - 使用 Let's Encrypt 免费证书: ```bash sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d your-domain.com ``` --- #### **7. 验证与监控** - **基础验证**: - 访问 `http://服务器IP:端口` 或域名,检查是否返回预期响应 - **日志监控**: - 查看应用日志:`journalctl -u ashxweb.service`(systemd 服务) - 使用 Prometheus + Grafana 监控性能指标 --- #### **8. 发布到公共网络** - **域名解析**:将域名 DNS 指向服务器公网 IP - **防火墙配置**:开放端口(如 80/443) ```bash sudo ufw allow 80/tcp sudo ufw allow 443/tcp ``` > **注意**:若 AshxWeb 是私有项目,可跳过域名解析,通过 IP + 端口访问。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值