一、使用XShell连接
Ubuntu系统初次连接时默认的用户名为:ubuntu,使用此用户名与系统登录密码进行连接。
登录成功效果如下图:
二、root用户登录
linux下有超级用户(root)和普通用户,普通用户不能直接操作没有权限的目录。初始超级用户(root)是没有密码,也就是说root用户不能用,但ubuntu提供了一种以普通用户执行超级管理权限的命令:sudo
2.1、设置root用户密码
sudo passwd root
输入以上命令,按下回车(Enter)之后,终端会提示你让你给root用户设置密码,设置新密码后继续确认新密码(密码是隐藏的,所以不会显示出来)。
看到“passwd: password updated successfully”之后,则代表超级用户(root)的密码设置成功!
2.2、以root用户登录
输入以下命令:
su 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
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
执行效果如下:
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
执行命令效果如下:
7.2、安装命令
sudo apt install postgresql postgresql-contrib
执行命令效果如下:
7.3、确认安装成功
查看安装版本
psql --version
查看PostgreSQL服务运行状态
sudo service postgresql status
7.4、验证安装
登录到 PostgreSQL 数据库,以验证安装是否成功。
sudo -u postgres psql
执行效果如下:
7.5、修改postgres用户的登录密码
安装之后,用户“postgres”默认没有登录密码,所以我们需要使用命令进行密码修改。
alter user postgres with password 'a@12345678';
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
7.6.2、修改postgresql.conf配置文件
执行命令,按“i”进入编辑模式:将postgresql.conf配置文件中的listen_addresses属性设置为"*",设置完成之后,按“ESC”,在输入“:wq”进行强制保存并退出。
sudo vim /etc/postgresql/16/main/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)”即可!
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
执行效果如下:
8.4.5、设置Web服务开机自启动
sudo systemctl enable web.service
执行效果如下:
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