我有一个asp.net core写的restful api服务,使用.net 7.0框架,需要发布到ubuntu上,请熟悉此过程的指导一下,给个详细的教程。
网上找的要么比较老旧,要么细节不够全。
注意:谢绝chatGPT等生成的答案,这个我也有账号,自己也可以问。请真正熟悉的朋友进来指点。
不用云服务吗?测试过腾讯云。
项目右键发布到容器镜像。
有了镜像就可以建函数服务或者集群了。
提供参考实例:https://www.jb51.net/article/113254.htm
安装 .NET 7.0 SDK
使用以下命令添加 Microsoft 包签名密钥和包存储库:
wget https://packages.microsoft.com/config/ubuntu/21.10/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
然后安装 .NET 7.0 SDK:
sudo apt-get update
sudo apt-get install -y apt-transport-https
sudo apt-get update
sudo apt-get install -y dotnet-sdk-7.0
准备发布应用程序
dotnet publish -c Release
安装 Nginx
sudo apt-get update
sudo apt-get install nginx
配置 Nginx
在 /etc/nginx/sites-available 目录中创建一个新的配置文件,例如 myapp.conf:
sudo nano /etc/nginx/sites-available/myapp.conf
将以下内容添加到文件中:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
在这个配置文件中,我们将 Nginx 配置为监听端口 80,并将所有请求转发到本地的 ASP.NET Core 应用程序运行的端口 5000。
保存并关闭文件。
启用 Nginx 配置
sudo ln -s /etc/nginx/sites-available/myapp.conf /etc/nginx/sites-enabled/
然后重新加载 Nginx,使更改生效:
sudo systemctl reload nginx
运行应用程序
cd bin/Release/net7.0/publish
dotnet myapp.dll
把Asp.net Core程序代码部署到Ubuntu(不含数据库)
非常详细,可以借鉴下
https://www.cnblogs.com/dissun/p/11245096.html
基于new bing的编写参考:
在将ASP.NET Core应用程序部署到Ubuntu之前,需要确保安装正确的.NET Runtime或SDK(.NET 7.0)。以下是将ASP.NET Core应用程序发布到Ubuntu的详细步骤:
sudo apt-get update
sudo apt-get install -y curl libunwind-dev libssl-dev libcurl4-openssl-dev zlib1g libicu-dev uuid-dev
wget https://download.visualstudio.microsoft.com/download/pr/34f6a8d7-9ad5-4468-b0cb-2988a99ebc69/f264e52ca256e5fd6b3b1091243565fc/dotnet-sdk-7.0.100-linux-x64.tar.gz
tar zxf dotnet-sdk-7.0.100-linux-x64.tar.gz -C /usr/share/dotnet/
sudo ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet
dotnet publish --configuration Release --output /var/www/myapp
这将在/var/www/myapp文件夹中生成一些文件。
sudo systemctl enable kestrel-myapp.service
在Ubuntu上创建一个名为kestrel-myapp.service的systemd服务文件。该文件应放置在/etc/systemd/system/目录中。
sudo systemctl start kestrel-myapp.service
sudo systemctl status kestrel-myapp.service
这将启动ASP.NET Core应用程序并显示它的状态。
最后,您可以通过在浏览器中输入服务器IP地址和端口号来访问应用程序(例如:http://example.com:5000)。
希望以上步骤对您有所帮助!
该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
好的,下面是一个详细的教程,介绍如何将 ASP.NET Core Restful API 服务发布到 Ubuntu 上,并使用 Nginx 作为反向代理服务器。
1、 安装 .NET Core 运行时环境
在 Ubuntu 上运行 ASP.NET Core 服务需要安装 .NET Core 运行时环境。您可以按照以下步骤进行安装:
1.1. 添加 Microsoft 包存储库
sudo apt-get update
sudo apt-get install -y curl libunwind8 gettext
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.asc.gpg
sudo mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/
1.2. 将 .NET Core 包存储库添加到 apt-get 源中
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-$(lsb_release -cs)-prod $(lsb_release -cs) main" > /etc/apt/sources.list.d/dotnetdev.list'
1.3. 安装 .NET Core 运行时环境
sudo apt-get update
sudo apt-get install -y dotnet-runtime-7.0
2、 编译并发布 ASP.NET Core Restful API 服务
您可以使用 Visual Studio 或者命令行工具 (dotnet CLI) 来编译和发布 ASP.NET Core Restful API 服务。以下是一个使用 dotnet CLI 的示例命令:
dotnet publish -c Release -o <publish_directory>
其中,-c Release 表示使用 Release 模式编译发布,-o 表示指定发布的目录,例如:
dotnet publish -c Release -o /var/www/myapp
3、 配置 Nginx 反向代理服务器
您可以使用 Nginx 作为反向代理服务器将请求转发到 ASP.NET Core Restful API 服务。以下是一个 Nginx 配置文件的示例:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
在上面的配置文件中,listen 80 表示监听端口为 80,server_name 表示服务器的域名,location / 表示将所有请求都转发到 ASP.NET Core Restful API 服务。proxy_pass 指定了转发的地址,这里是 http://localhost:5000,也就是 ASP.NET Core Restful API 服务的地址。
4、 启动 ASP.NET Core Restful API 服务和 Nginx 反向代理服务器
您可以使用以下命令启动 ASP.NET Core Restful API 服务:
cd /var/www/myapp
dotnet myapp.dll
其中 myapp.dll 是您 ASP.NET Core Restful API 服务的 DLL 文件名,可以根据您的实际情况替换。
您可以使用以下命令启动 Nginx 反向代理服务器:
sudo systemctl start nginx
5、 测试 ASP.NET Core Restful API 服务
现在您可以使用浏览器或者其他工具来测试 ASP.NET Core Restful API 服务。例如,假设您的 Restful API 的 URL 是 http://example.com/api/values,您可以在浏览器中输入该地址,应该可以看到返回的数据。
希望这个教程能够帮助您成功将 ASP.NET Core Restful API 服务发布到 Ubuntu 上。
如果以上回答对您有所帮助,点击一下采纳该答案~谢谢
```bash
sudo apt-get update
sudo apt-get install -y apt-transport-https
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-$(lsb_release -cs)-prod $(lsb_release -cs) main" > /etc/apt/sources.list.d/dotnetdev.list'
sudo apt-get update
- 安装.NET SDK和运行时环境:
```bash
sudo apt-get install -y dotnet-sdk-7.0
sudo apt-get install -y aspnetcore-runtime-7.0
将应用程序文件复制到该目录下。可以使用scp命令将应用程序文件从本地复制到Ubuntu上:
scp -r /path/to/myapp ubuntu@:/var/www/myapp
上面是例子根据自己情况上传
进入应用程序目录,使用dotnet命令运行应用程序:
cd /var/www/myapp
dotnet myapp.dll
sudo nano /etc/nginx/sites-available/default
server {
listen 80;
server_name <server-ip>;
location / {
proxy_pass http://localhost:<app-port>;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
其中,为服务器IP地址,为应用程序监听的端口号。
现在可以在浏览器中输入服务器IP地址,访问应用程序。
确保Ubuntu服务器上安装了必要的软件和服务,例如.NET 7.0运行时、NGINX或Apache、SSL证书等。
在本地计算机使用Visual Studio或Visual Studio Code构建和发布ASP.NET Core应用程序,并将生成的项目发布到本地文件夹中。
可以通过以下命令在Ubuntu服务器上创建一个目录来存放应用程序:
sudo mkdir /var/www/myapp
将生成的项目发布到本地文件夹:
dotnet publish /path-to-project/project-name.csproj -c Release -o /var/www/myapp
要将NGINX设置为反向代理Web应用程序到Kestrel服务器,请按照以下步骤操作:
创建一个Server Block文件,命名为myapp:
sudo vi /etc/nginx/sites-available/myapp
使用以下内容填充文件来配置NGINX:
server {
listen 80;
server_name mydomain.com; // 替换为域名或IP地址
location / {
proxy_pass http://localhost:5000; // 替换为应用程序的Kestrel服务器端口
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
启用Server Block:
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
重启 NGINX:
sudo systemctl restart nginx.service
创建一个Kestrel服务单元文件,命名为myapp.service:
sudo vi /etc/systemd/system/myapp.service
使用以下内容填充文件来配置Kestrel服务器:
[Unit]
Description=My ASP.NET Core App
After=network.target
[Service]
User=root
WorkingDirectory=/var/www/myapp
ExecStart=/usr/bin/dotnet /var/www/myapp/myapp.dll // 替换为应用程序的主程序文件
[Install]
WantedBy=multi-user.target
启用Kestrel服务:
sudo systemctl enable myapp.service
启动Kestrel服务:
sudo systemctl start myapp.service
使用以下命令检查Kestrel服务的状态:
sudo systemctl status myapp.service
使用以下命令获取SSL证书:
sudo certbot --nginx -d mydomain.com
根据提示完成证书申请流程,证书申请成功后会自动配置NGINX。
重启 NGINX:
sudo systemctl restart nginx.service