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

发布于:2025-03-11 ⋅ 阅读:(33) ⋅ 点赞:(0)

一、使用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