Ubuntu系统部署.NET 8网站项目

一、使用XShell连接

Ubuntu系统初次连接时默认的用户名为:ubuntu,使用此用户名与系统登录密码进行连接。
XShell连接UBuntu系统
登录成功效果如下图:

连接登录效果

二、root用户登录

linux下有超级用户(root)和普通用户,普通用户不能直接操作没有权限的目录。初始超级用户(root)是没有密码,也就是说root用户不能用,但ubuntu提供了一种以普通用户执行超级管理权限的命令:sudo

2.1、设置root用户密码

sudo passwd root

输入以上命令,按下回车(Enter)之后,终端会提示你让你给root用户设置密码,设置新密码后继续确认新密码(密码是隐藏的,所以不会显示出来)。

设置root用户密码
看到“passwd: password updated successfully”之后,则代表超级用户(root)的密码设置成功!

2.2、以root用户登录

输入以下命令:

su root

输入root用户密码,当输入框前面的“$”符号变成“#”时,就可以使用root权限了。

以root用户登录

三、更换镜像源

使用清华大学的镜像源可以加快软件包的下载速度。Ubuntu 软件仓库 | 清华大学开源软件镜像站
在这里插入图片描述
简介部分给出了各种版本的注意事项,包括软件源配置文件的路径以及旧版本的解决方案。如下图:

在这里插入图片描述
选择相应版本后复制镜像源即可,如下图:

选择相应版本后复制镜像源

例如:Ubuntu22.04的镜像源为:

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse

# 以下安全更新软件源包含了官方源与镜像站配置,如有需要可自行修改注释切换
deb http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
# deb-src http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse

例如:Ubuntu24.04 LTS的镜像源为:

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-backports main restricted universe multiverse

# 以下安全更新软件源包含了官方源与镜像站配置,如有需要可自行修改注释切换
deb http://security.ubuntu.com/ubuntu/ noble-security main restricted universe multiverse
# deb-src http://security.ubuntu.com/ubuntu/ noble-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-proposed main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-proposed main restricted universe multiverse

3.1、备份现有源列表

出于尽可能少的修改系统配置的前提下,我们先将系统自带的源备份一下。此命令会在/etc/apt目录下将sources.list创建一份副本并重命名为sources.list.bak。

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

备份现有源列表

3.2、编辑源列表

使用以下命令打开镜像源文件:

sudo vim /etc/apt/sources.list

在vim插入模式下,按下“i”,替换掉原镜像源文件sources.list中的内容:
编辑源列表
按下“ESC”键,再输入“:wq”强制保存并退出;

在Ubuntu能正常上网的前提下,使用以下命令更新软件列表:

3.3、更新包索引

该命令会检查已安装的软件包是否有可用的更新,并更新本地的包索引仓库。

注意:该命令并不会更新系统中任何已安装的软件包。(相当于告诉你有几个包可以更新,但不执行)

sudo apt update

命令执行效果如下:

更新包索引

3.4、升级已安装的软件包(可选项)

该命令会将所有已安装的软件包更新到最新版本。(相当于执行更新)

注意:如果系统中环境比较复杂,该命令可能会影响到系统的稳定性和兼容性,慎用!(新系统可以无脑使用)

sudo apt upgrade

经过以上流程,ubuntu使用的镜像源就是清华的镜像源了!

四、安装.NET的SDK以及运行时

微软官方安装帮助文档:在 Ubuntu 上安装 .NET SDK 或 .NET 运行时

4.1、安装SDK命令

.NET SDK 使你可以通过 .NET 开发应用。 如果安装 .NET SDK,则无需安装相应的运行时。 若要安装 .NET SDK,请运行以下命令:

sudo apt-get install -y dotnet-sdk-8.0

4.2、安装运行时

通过 ASP.NET Core 运行时,可以运行使用 .NET 开发且未提供运行时的应用。 以下命令将安装 ASP.NET Core 运行时,这是与 .NET 最兼容的运行时。 在终端中,运行以下命令:

sudo apt-get install -y aspnetcore-runtime-8.0

安装运行时

4.3、验证安装

安装完成后,可以通过以下命令来验证是否成功安装了.NET

sudo dotnet --info

在这里插入图片描述

五、ufw防火墙

UFW全称为Uncomplicated Firewall,是Ubuntu系统上配置iptables防火墙的工具。UFW提供一个非常友好的命令用于创建基于IPV4,IPV6的防火墙规则。

5.1、安装ufw

sudo apt-get install ufw

安装防火墙:ufw

5.2、启动防火墙并设置开机启动

sudo ufw enable

启动防火墙并设置开机启动

5.3、查看防火墙状态

开启了为 active, 没开启为 inactive。

sudo ufw status

查看防火墙状态

5.4、开启SSH端口

sudo ufw allow 22

5.5、防火墙命令

# 开放 port_number 端口 tcp和udp
sudo ufw allow port_number
 
# 删除 port_number 端口
sudo ufw delete allow port_number

# 开启防火墙
sudo ufw enable

 # 关闭防火墙
sudo ufw disable

# 重启防火墙
sudo ufw reload

# 查看防火墙状态
sudo ufw status

# 重置所有的规则
sudo ufw reset

# 开放规定协议的指定端口(开放8000端口的tcp协议,需重启防火墙生效)
sudo ufw allow 8000/tcp

# 关闭规定协议的指定端口(关闭8000端口的tcp协议,需重启防火墙生效)
sudo ufw delete allow 8000/tcp

# 批量开放规定协议的指定端口(开放1-65535端口的tcp协议,需重启防火墙生效)
sudo ufw allow 1:65535/tcp

# 允许来自 192.168.1.1 的主机的访问
sudo ufw allow from 192.168.1.1
 
# 禁止外部访问smtp服务
sudo ufw deny smtp
 
# 删除上面建立的某条规则
sudo ufw delete allow smtp

六、安装Nginx

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

Nginx 是高性能的 HTTP 和反向代理的web服务器,处理高并发能力是十分强大的,能经受高负 载的考验,有报告表明能支持高达 50,000 个并发连接数。

Nginx支持热部署,启动简单,可以做到7*24不间断运行。几个月都不需要重新启动。

6.1、命令安装Nginx

sudo apt install nginx

6.2、安装验证

检查 Nginx 是否已成功安装并正在运行

sudo systemctl status nginx

执行效果如下:
检查 Nginx 是否已成功安装并正在运行

6.3、配置防火墙允许 HTTP 和 HTTPS 流量通过

如果您的服务器启用了防火墙(如 UFW),则需要允许 HTTP 和 HTTPS 流量通过

sudo ufw allow 'Nginx HTTP'
sudo ufw allow 'Nginx HTTPS'

6.4、重启防火墙

sudo ufw reload

6.5、Nginx命令

# 启动Nginx服务
sudo systemctl start nginx

# 重启Nginx服务
sudo systemctl restart nginx

# 设置开机自启动
sudo systemctl enable nginx

# 检查Nginx状态
sudo systemctl status nginx

# 重新加载Systemd守护进程
sudo systemctl daemon-reload

七、安装PostgreSQL

PostgreSQL是一个功能强大的 开源 的关系型数据库,底层基于C实现。

PostgreSQL使用的开源协议是PostgreSQL许可证,也被称为PostgreSQL开放源码许可证。这是一种自由软件许可证,基于BSD许可证。该许可证允许用户自由地使用、修改和分发PostgreSQL数据库管理系统的源代码。它还允许用户将PostgreSQL用于商业目的,并且没有强制性的要求或限制。这使得PostgreSQL成为一个受欢迎的开源数据库解决方案。

PostgreSQL的名字由两部分组成:Post和SQL。

"Post"是指Postgres,这是PostgreSQL的前身。Postgres是由Michael Stonebraker和他的团队在加州大学伯克利分校开发的一个关系数据库管理系统。它是早期关系数据库系统的一个重要研究项目。

"SQL"代表结构化查询语言(Structured Query Language),它是一种用于管理和操作关系数据库的标准语言。PostgreSQL是一个完全支持SQL的关系数据库管理系统。

因此,将这两个部分合并在一起,就得到了PostgreSQL这个名字。

7.1、检查是否已经安装

sudo service postgresql status

执行命令效果如下:
检查是否已经安装postgresql

7.2、安装命令

sudo apt install postgresql postgresql-contrib

执行命令效果如下:

在这里插入图片描述

7.3、确认安装成功

查看安装版本

psql --version

查看PostgreSQL安装版本

查看PostgreSQL服务运行状态

sudo service postgresql status

查看PostgreSQL服务运行状态

7.4、验证安装

登录到 PostgreSQL 数据库,以验证安装是否成功。

sudo -u postgres psql

执行效果如下:

在这里插入图片描述

7.5、修改postgres用户的登录密码

安装之后,用户“postgres”默认没有登录密码,所以我们需要使用命令进行密码修改。

alter user postgres with password 'a@12345678';

修改postgres用户的登录密码

7.6、设置外部IP能够连接本机的PostgreSQL数据库

7.6.1、修改pg_hba.conf配置文件

执行命令,按“i”进入编辑模式:将pg_hba.conf配置文件中的,新增一行“host all all 0.0.0.0/0 trust”,设置完成之后,按“ESC”,在输入“:wq”进行强制保存并退出。(其中16为安装的版本号

sudo vim /etc/postgresql/16/main/pg_hba.conf

修改pg_hba.conf配置文件

7.6.2、修改postgresql.conf配置文件

执行命令,按“i”进入编辑模式:将postgresql.conf配置文件中的listen_addresses属性设置为"*",设置完成之后,按“ESC”,在输入“:wq”进行强制保存并退出。

sudo vim /etc/postgresql/16/main/postgresql.conf

修改postgresql.conf配置文件

7.6.2、重启服务更新配置

重启服务更新配置

sudo service postgresql restart

7.7、设置防火墙

# 设置防火墙开启5432端口
sudo ufw allow 5432
# 重启防火墙服务
sudo ufw reload

7.8、防火墙命令

# 检查服务状态
sudo systemctl status postgresql

# 启动服务
sudo systemctl start postgresql

# 停止服务
sudo systemctl stop postgresql

# 重启服务
sudo systemctl restart postgresql

# 设置开机自启动
sudo systemctl enable postgresql

# 禁用开机自启动
sudo systemctl disable postgresql

八、部署.NET 8 Web网站项目

将自己的.NET Web网站项目进行发布,再使用XFTP上传至服务器下自己创建的目录下。

8.1、修改Nginx的配置文件

sudo vim /etc/nginx/nginx.conf 
# 或 
sudo nano /etc/nginx/nginx.conf
server {
	listen     80;
	server_name   公网IP/域名;
	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;
        root   /data/web/wwwroot;    #自己的项目路径,.NET Core的Web项目需要定位到“wwwroot”文件
    };
}

设置完成之后,按“ESC”,在输入“:wq”进行强制保存并退出。

8.2、重启Nginx

sudo systemctl start nginx

8.3、查看Nginx状态

sudo systemctl status nginx

看到“active (running)”即可!

查看Web服务Nginx的状态

8.4、创建.NET Core Web项目系统服务

mkdir:创建文件夹;touch:创建文件
在“/etc/systemd/system/”目录下创建一个新的服务文件,例如 web.service:

touch /etc/systemd/system/web.service

8.4.1、修改服务文件内容

sudo vim /etc/systemd/system/web.service

在输入命令之后,按“i”进行插入操作,在文件末尾,添加以下内容:

[Unit]
Description=My very first ASP.NET Core applications
After=network.target

[Service]
WorkingDirectory=/data/web/
ExecStart=/usr/bin/dotnet  /data/web/WEB.dll --urls "http://*:5000"
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=myfirstapp-identifier
Environment=ASPNETCORE_ENVIRONMENT=Development
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target

下面是此内容的一些关键方面:

  • WorkingDirectory 是发布应用程序的目录。
  • ExecStart 是启动应用程序的实际命令。
  • Restart=always 不言而喻。 如果由于某种原因(无论是手动还是崩溃)而停止,则始终会启动此过程。
  • RestartSec=10 也是不言而喻的。 进程停止后,它将在经过 10 秒后启动。
  • SyslogIdentifier 很重要。 它表示“系统日志标识符”。 有关守护程序的信息以此名称记录在系统日志中。 还可以使用此标识符来查找进程的 PID。
  • User 是管理服务的用户。 它应存在于系统中,并具有应用程序文件的相应所有权。
  • Environment 可以在服务文件中设置任意数量的环境变量。

8.4.2、重载配置文件

执行以下命令重新加载 systemd 配置文件:

sudo systemctl daemon-reload

8.4.3、启动Web服务

sudo systemctl start web.service

8.4.4、查看Web服务

sudo systemctl status web.service

执行效果如下:

查看Web服务

8.4.5、设置Web服务开机自启动

sudo systemctl enable web.service

执行效果如下:

设置Web服务开机自启动

8.5、命令

#1、开机自启 
sudo systemctl enable web.service

#2、启动服务 
sudo systemctl start web.service

#3、查看状态 
sudo systemctl status web.service

#4、关闭服务 
sudo systemctl stop web.service

#5、重启服务 
sudo systemctl restart web.service

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/984580.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

学习资料电子版 免费下载的网盘网站(非常全!)

我分享一个私人收藏的电子书免费下载的网盘网站(学习资料为主): link3.cc/sbook123 所有资料都保存在网盘了,直接转存即可,非常的便利! 包括了少儿,小学,初中,中职&am…

图形编辑器基于Paper.js教程24:图像转gcode的重构,元素翻转,旋转

前段时间在雕刻图片时,旋转图片,翻转图片后,发现生成准确的gcode,虽然尺寸对,但是都是以没有旋转,没有翻转的图片进行生成的。后来思考了一下,发现这真是一个大bug,无论图片如何选择…

无公网IP也能远程控制Windows:Linux rdesktop内网穿透实战

文章目录 前言1. Windows 开启远程桌面2. Linux安装rdesktop工具3. Win安装Cpolar工具4. 配置远程桌面地址5. 远程桌面连接测试6. 设置固定远程地址7. 固定地址连接测试 前言 如今远程办公已经从一种选择变成了许多企业和个人的必修课,而如何在Linux系统上高效地访…

一文了解汽车图像传感器

2024年底,安森美做了题为"How Automotive Image Sensors Transform the Future of Autonomous Driving"的演讲,这里结合其内容对自动驾驶图像传感器做一个介绍。 当前的自动驾驶感知技术主要有两大技术路线:一种是仅使用摄像头作为传感器进行信息采集的纯…

Talking Head Review (数字人算法综述)

文章目录 引言3D Model basedGeneFace背景方案实验 GeneFace背景方案实现细节实验 Real3D-Portrait背景方案实现细节实验 MimicTalk背景方案实现细节实验 face-vid2vid背景方案实现细节实验 MegaPortraits背景方案实现细节实验 VASA-1背景方案实现细节实验 LivePortrait背景方案…

DeepSeekR1之四_在RAGFlow中配置DeepSeekR1模型

DeepSeekR1之四_在RAGFlow中配置DeepSeekR1模型 文章目录 DeepSeekR1之四_在RAGFlow中配置DeepSeekR1模型1. 通过Ollama下载模型1. 下载DeepSeekR1模型2. 下载嵌入模型 2. 查看本地的Ollama模型3. 模型提供商中添加模型1. 打开模型提供商2. 选择Ollama待添加模型3. 添加DeepSee…

【 <一> 炼丹初探:JavaWeb 的起源与基础】之 JavaWeb 项目的部署:从开发环境到生产环境

<前文回顾> 点击此处查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&sharefromfrom_link <今日更新> 一、开发环境…

可视化图解算法:反转链表

1. 题目 描述 给定一个单链表的头结点pHead(该头节点是有值的&#xff0c;比如在下图&#xff0c;它的val是1)&#xff0c;长度为n&#xff0c;反转该链表后&#xff0c;返回新链表的表头。 数据范围&#xff1a; 0<≤n≤1000 要求&#xff1a;空间复杂度 O(1) &#xf…

P8685 [蓝桥杯 2019 省 A] 外卖店优先级--优先队列“数组”!!!!!

P8685 [蓝桥杯 2019 省 A] 外卖店优先级 题目 解析优先队列如何判断是否使用优先队列&#xff1f;省略规则优先队列常用操作大顶堆 vs 小顶堆定义队列h队列数组 代码 题目 解析 每个外卖店会在不同的时间点收到订单&#xff0c;我们可以看见测试用例的时间顺序是不同的&#x…

使用苹果M芯片打包Docker Image无法在amd64环境下运行

问题所在 使用苹果M芯片打包Docker Image无法在amd64环境下运行&#xff0c;因为arm环境下打包docker默认打包为arm格式&#xff0c;可以使用以下命令查看&#xff1a; docker inspect <ImageID>找到Architecture&#xff0c;可以发现 解决方法 在docker-compose.ym…

低代码开发直聘管理系统

低代码 DeepSeek 组合的方式开发直聘管理系统&#xff0c;兼职是开挂的存在。整个管理后台系统 小程序端接口的输出&#xff0c;只花了两个星期不到。 一、技术栈 后端&#xff1a;SpringBoot mybatis MySQL Redis 前端&#xff1a;Vue elementui 二、整体效果 三、表结…

MySQL的安装及配置

一.以安装包方式下载 1.进入MySQL官网&#xff0c;下载安装包 官网链接&#xff1a;https://downloads.mysql.com/archives/installer/ 2.安装MySQL 二.压缩包方式下载 下载位置&#xff1a;mysql下载位置 解压缩后位置&#xff1a;D:\mysql-8.0.15-winx64 在主目录下复制…

CI/CD—Jenkins配置一次完整的jar自动化发布流程

背景&#xff1a; 实现设想&#xff1a; 要创建自动化发布&#xff0c;需要准备一台测试服务器提前安装好java运行所需的环境&#xff0c;JDK版本最好和Windows开发机器上的版本一致&#xff0c;在Jenkins上配置将构建好的jar上传到测试服务器上&#xff0c;测试服务器自动启动…

C++蓝桥杯皮亚诺曲线距离求解

C蓝桥杯皮亚诺曲线距离求解 一、题目概述二、解题分析2.1解题思路2.2k值范围限制 三、实现代码四、代码测试4.1蓝桥杯测试平台4.2直接传入原始输入的k值4.3限制k值大小4.4pow函数求整数高次幂存在误差4.5满分代码 附录error: ‘long long int y1’ redeclared as different kin…

开源!速度100Kb/s的有线和无线双模ESP32S3芯片的DAP-Link调试器

开源&#xff01;速度100Kb/s的有线和无线双模ESP32S3芯片的DAP-Link调试器 目录 开源&#xff01;速度100Kb/s的有线和无线双模ESP32S3芯片的DAP-Link调试器本项目未经授权&#xff0c;禁止商用&#xff01;本项目未经授权&#xff0c;禁止商用&#xff01;本项目未经授权&…

简记_硬件系统设计之需求分析要点

目录 一、 功能需求 二、 整体性能需求 三、 用户接口需求 四、 功耗需求 五、 成本需求 六、 IP和NEMA防护等级需求 七、 认证需求 功能需求 供电方式及防护 供电方式&#xff1a;市电供电、外置直流稳压电源供电、电池供电、PoE&#xff08;Power Over Ether…

python连接deepseek api实例

步骤一&#xff1a;安装必要的库&#xff0c;如openai&#xff1b; 步骤二&#xff1a;deepseek平台申请api&#xff0c;并充值&#xff08;可先充10元&#xff09;&#xff0c;费用大概一个查询2分钱的样子&#xff1b; 步骤三&#xff1a;设置环境变量&#xff1a;DEEPSEEK…

抽象类与普通类

抽象类和普通类的区别&#xff1a; 抽象类其实就是普通类和接口&#xff08;完全抽象&#xff09;之间的设计工具。通过抽象类&#xff0c;可以更灵活地构建可扩展、可维护的类层次结构。抽象类的核心价值在于平衡代码复用和规范约束。 示例&#xff1a;

免费生成可下载ppt

1.天工AI 免费的&#xff0c;模版很少&#xff0c;效果不是很好&#xff1b; 2.Kimi 免费的&#xff0c;模版不多&#xff0c;效果还可以&#xff1b;

【解决哈希冲突】

哈希冲突 如果两个不同的 key 通过哈希函数得到了相同的索引&#xff0c;这种情况就叫做「哈希冲突」。 哈希冲突不可能避免&#xff0c;只能在算法层面妥善处理出现哈希冲突的情况。 哈希冲突是一定会出现的&#xff0c;因为这个 hash 函数相当于是把一个无穷大的空间映射到…