码恒文档码恒文档
Home
Ubuntu 初始化系统
Home
Ubuntu 初始化系统
  • Ubuntu 初始化系统

Ubuntu 初始化系统

vim 基础命令

​ vi 是 Linux 自带的文本编辑器,仅有基础的文本编辑功能,vim 是基于 vi 扩展出来的程序,具有更强的编辑功能和文字着色功能。vi 和 vim 大部分的指令相同,这里推荐使用 vim 。

​ vim 总共分为三种模式,命令模式(Command Mode)、输入模式(Insert Mode)和命令行模式(Command-Line Mode)。日常使用的话基本只用前两种模式。

命令模式

使用vim 编辑时默认进入的是命令模式,在此状态下输入的字符均被解析为命令。

命令解释
i进入输入模式
u撤销上次操作
:w保存文件
:wq保存并退出文件
:q退出文件
:q!强制退出文件(未保存的内容不会被保存)

输入模式

在输入模式下,文件左下角或右下角会有 INSERT 或 插入 字样,如果是新文件会有New File 或 新文件 字样。

按键解释
enter换行
backspace删除前一个字符
del删除后一个字符
方向键上下左右移动
home / end到行首或行尾
page up / page down上/下翻页
insert替换模式 / 输入模式 切换
ese退出输入模式到命令模式
其他任意字符键输入内容

IP/端口 查看

在大部分 Linux 系统中都可默认使用以下命令查看服务器网口信息。类似于 windows 的 ipconfig 命令。

ifconfig

如果遇到没有ifconfig命令,也可通过以下命令安装相关工具来支持。

apt install net-tools

同时该工具还带来了端口查看功能。查看已占用端口。

netstat -atunp

也可通过 grep 命令来过滤

netstat -atunp | grep 3306

安装 Nginx

检查安装

输入以下命令查看包的安装状态。

dpkg -s nginx

如输出 install ok installed 则表明安装成功。

安装命令

在有外部网络的环境下:

apt install nginx

输入 继续完成安装。

安装完成后需检查安装是否成功。

查看结果

在另一台可访问该服务器的机器上输入该服务器的 IP 地址即可查看默认网站。

如果输出为 "Welcome to nginx!" 则表示 nginx 部署成功,否则需依据错误代码查询解决。

Nginx 网站部署

了解 nginx 部署原理

​ Nginx 是一款高性能的 Web 和反向代理服务器,它广泛用于部署静态和动态网站。其核心功能包括Web服务器、反向代理、负载均衡、缓存等功能。当用户访问一个网站时,浏览器会向 Nginx 发送 HTTP 请求。Nginx 收到请求后,根据配置文件中的规则来处理请求。

配置文件

​ Nginx 拥有两部分,其中位于 /etc/nginx/nginx.conf中的内容为主配置文件,该文件不可删除,删除后影响Nginx 服务运行,位于/etc/nginx/conf.d 目录下的配置文件是模块配置文件,通过会在该目录下新增多个配置文件,一个文件就是一个站点,对于主配置文件,我们原则上不进行改动。

主配置文件初始化

http {
    client_max_body_size 5M;
    
    map $host $html_root {
        default /web/dotnet;
    }
}

在http 配置节下面加入以下代码:

client_max_body_size 接口单次最大响应的数据容量,如果做文件上传可能因为次数据过小而导致上传失败,同时如果过大则可能造成接口无线超时。

default 用户配置项目公共路径。

结构

server {
    listen 80;
    server_name localhost;
    
    location / {
        root /var/www/html;
        index index.html index.htm;
    }
}

上述结构就是一个简单的,可访问的静态网站托管的模块配置文件结构,解释:

listen 监听端口, 对于同IP地址,不同的网站需配置不同的监听端口。对于不同域名或IP的网站,可以配置相同的监听端口。

server_name 绑定的域名或IP地址。

location 匹配的路由地址,/ 表示匹配所有路径。

root 表示工作目录,即静态网站的所属目录。

index 表示启动文件名称,上述配置匹配了 index.html 和 index.htm (htm文件格式是HTML2.0的标准,原则上已经不在提供支持)。

检查配置文件是否正确

nginx -t

该命令用于检查书写的配置是否正确,如果显示ok则表示书写正确,如果提示xx文件xx行,则表示该位置书写错误。每次更新nginx配置前已经要执行检查,如果应用了错误的配置会导致nginx服务不可用。

重载Nginx服务配置

平滑重启,用于重新加载 Nginx 的配置文件而不中断现有的连接。

nginx -s -reload

重新启动 nginx 服务, 会暂时中断nginx上的现有连接。

systemc	restart nginx

建议新增或更新配置时使用第一个命令重新加载配置。

服务管理

​ 在 ubuntu 中,系统默认使用 systemctl 进行任务管理,该组件会在系统启动时自动加载并运行拥有 multi-user.target 标识的任务。同时也可以手动管理任务的运行状态。

链接自启动任务

systemcel enable <服务名称>

通过该命令可以建立一个自动启动任务的快捷链接(类似于超链接),如果任务配置中没有 multi-user.target 标识,任务也不能完成开机自启动。

启动/停止任务

启动任务:

systemctl start <任务名称>

停止任务:

systemctl stop <任务名称>

重新启动任务:

systemctl restart <任务名称>

该命令不会有任务返回,如果执行该命令时系统卡住时间过长,则有极大的可能任务启动失败(也可能任务本身需要很多资源)。

检查任务状态

systemctl status <任务名称>

如果输出中包含 active (running) 则表示该任务正在运行中,active (fail) 则表示任务启动失败, incative (dead) 则表示任务未启动。

任务输出日志

输出任务前 xx 行日志,xx是要输出的行数

journalctl -u <任务名称> -n xx

实时跟踪任务日志

journalctl -u <任务名称> -f

查询指定时间后的日志

journalctl -u <任务名称> --suince "日期"

查询指定时间前的日志

journalctl -u <任务名称> --until "日期"

|结合可查询指定日期内的日志。

查询指定等级的日志

journalctl -u <任务名称> --level err

安装 MySQL

检查安装

输入以下命令查看包的安装状态。

dpkg -s mysql-server

如输出 install ok installed 则表明安装成功。

安装命令

这里使用DEB包来实现安装指定版本的效果,如需其他安装方式请自行搜索。

DEB官方网站:MySQL :: Download MySQL APT Repository 点击下载后,需点击下方 No Tanks, Just download

下载后放到linux的某个目录下,这里建议是root目录下,因为这是默认目录。

安装DEB包

dpkg -i <文件路径>
apt install -f
apt install mysql-server

输入 继续完成安装。

安装完成后需检查安装是否成功。

初始化MySQL

执行初始化脚本

mysql_secure_installation

该脚本会引导你完成以下步骤:

  • 设置 root 用户密码。
  • 删除匿名用户。
  • 禁用远程 root 登录。
  • 删除测试数据库并移除访问权限。
  • 重新加载权限表。

登录到Mysql

mysql -u root -p

默认初始化密码可能为空,所以直接回车即可登录。

修改用户

一般部署时会采用AB账户的形式对MySQL进行配置,即A账户为root,此账户为超级管理员账户,不允许对外连接,B账户为普通账户,允许对外连接,同时由A账户赋予表权限和执行权限。

修改A账户密码

ALTER USER 'your_username'@'%' IDENTIFIED BY 'newrootpassword';

创建B账户

CREATE USER 'your_username'@'%' IDENTIFIED BY 'your_password';

授予B账户权限

GRANT ALL PRIVILEGES ON *.* TO 'your_username'@'%';
FLUSH PRIVILEGES;

|这里授予所有表的权限,一般不建议。

|如果外部无法通过3306访问MySQL 一定要检查 ufw 是否启动,或者 SELinux 是否启用, SELinux会阻止特定端口外的其他端口访问。

|如果通过 netstat -tuln | grep ':3306 ' 查询到MySQL绑定了127.0.0.1这种回环地址,则需要前往配置文件 /etc/mysql/my.cnf 中更改。

安装 Redis

检查安装

输入以下命令查看包的安装状态。

dpkg -s redis-server

如输出 install ok installed 则表明安装成功。

安装命令

在有外部网络的环境下:

apt install redis-server

输入 继续完成安装。

安装完成后需检查安装是否成功。

编辑Redis配置

文件路径是 /etc/redis/redis.conf

  • 监听所有的接口

修改 bind 行,将 127.0.0.1 更改为 0.0.0.0 以允许远程连接:

bind 0.0.0.0
  • 设计密码保护

修改 requirepass 行以设置密码:

requirepass your_password
  • 配置守护进程模式

如果希望 Redis 作为后台进程运行,可以将 daemonize 设为 yes:

daemonize yes
  • 配置最大内存限制

配置 Redis 的最大内存使用量,避免占用过多内存:

maxmemory 128mb

保存退出后启用Redis即可。

安装 EMQX(MQTT中间网关)

检查安装

输入以下命令查看包的安装状态。

dpkg -s emqx

如输出 install ok installed 则表明安装成功。

安装命令

这里使用DEB包来实现安装指定版本的效果,如需其他安装方式请自行搜索。

DEB官方网站:下载 EMQX 开源版 点击下载。

下载后放到linux的某个目录下,这里建议是root目录下,因为这是默认目录。

或者可以通过 weget下载(这里版本是5.8.1,网站内也有安装教程)

wget https://www.emqx.com/zh/downloads/broker/5.8.1/emqx-5.8.1-ubuntu24.04-amd64.deb

安装DEB包

apt install <文件路径>

输入 继续完成安装。

安装完成后需检查安装是否成功。

启动EMQX

systemctl enable emqx
systemctl start emqx

启动后记得检查运行状态

管理后台

在浏览器中输入 http://你的IP:18083 进入管理后台

默认账户:admin

默认密码:public

.NET 环境安装

.NET 6 在 Ubuntu 24.04 的 Ubuntu 后向移植包存储库中提供,而不是在内置包存储库中提供。

检查安装

输入以下命令查看包的安装状态。

dpkg -s dotnet-sdk-6.0

如输出 install ok installed 则表明安装成功。

安装命令

在有外部网络的环境下: 下载 .NET 6.0 (Linux、macOS 和 Windows)

wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh
chmod +x ./dotnet-install.sh
./dotnet-install.sh --version 版本去官网查看 --install-dir /usr/local/dotnet
ln -s /usr/local/dotnet /usr/bin/dotnet

输入 继续完成安装。

安装完成后需检查安装是否成功。

查看结果

使用以下命令查看安装的模板

dotnet --version

SELinux

Ubuntu 没有该组件,所以无需设置。

cat /etc/selinux/config

如果输出中包含 SELINUX=disabled 则表示SELinux未启用,无需更改,否则需要将参数改为 disabled 并重启服务器。

码恒VUE前端项目发布

前端项目发布相对简单,只需将文件上传到某个目录下并填写Nginx站点配置即可完成发布。

nginx配置

  1. 在 /etc/nginx/conf.d/ 目录下创建一个文件,文件名称建议使用 项目英文名称_C.conf 其中 C 代表 Client,方便识别。
vim /etc/nginx/conf.d/文件名称
  1. 输入以下内容:
server {
    listen 80;
    server_name localhost;
    
    # 如果项目使用了gzip,下面这堆gzip开头的配置可以放开
    gzip on;
    gzip_min_length 1k;
    gzip_comp_level 9;
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    gzip_vary on;
    gzip_disable "MSIE [1-6]\.";
    
    location / {
        root $html_root/你的目录;
        index index.html;
        try_files $uri $uri/ /index.html;
    }
}

以上配置仅需更改以下三个地方:

  • listen 监听的端口
  • server_name 你需要绑定的IP地址或域名
  • root 你的前端文件目录

|注释:$html_root 是预先在 nginx.conf 中声明的变量。

|注释:如果项目中未使用 gzip 建议把这些 gzip 开头的配置使用 # 注释。

  1. 保存文件后需使用nginx -t 检查文件是否书写正确。
  2. 书写正确后使用 nginx -s reload 重新加载配置。

前端更新

删掉所有文件后替换。

码恒.NET后端项目发布

后端项目需要配置Nginx代理外还需创建系统任务来保证自动运行。

nginx配置

  1. 在 /etc/nginx/conf.d/ 目录下创建一个文件,文件名称建议使用 项目英文名称_I.conf 其中 I 代表 Interface,方便识别。
vim /etc/nginx/conf.d/文件名称
  1. 输入以下内容:
map $http_connection $connection_upgrade {
    "~*Upgrade" $http_connection;
    default keep-alive;
}

server {
    listen 80;
    server_name digitals.mh-barcode.com;
    location / {
        proxy_pass http://localhost:5010;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        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;
    }
}

以上配置仅需更改以下三个地方:

  • listen 监听的端口
  • server_name 你需要绑定的IP地址或域名
  • proxy_pass 你的后端程序在本地运行的地址,一般都是 localhost 仅需更改端口,端口可在项目配置文件 appsetting.json 查看。
  1. 保存文件后需使用nginx -t 检查文件是否书写正确。
  2. 书写正确后使用 nginx -s reload 重新加载配置。

systemctl 任务配置

  1. 在 /lib/systemd/system/ 目录下创建一个文件,文件名称建议使用 MHS_项目英文名称.service 方便识别。
vim /lib/systemd/system/文件名称
  1. 输入以下内容:
[Unit]
Description=MHS_Digital

[Service]
WorkingDirectory=/web/dotnet/Digital/interface
ExecStart=/usr/bin/dotnet /web/dotnet/Digital/interface/MhAdmin.Web.Entry.dll
Restart=always
# Restart Service after 10 seconds if the dotnet service crashes;
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=mhadmin-digital
User=root
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target

以上配置仅需更改以下四个地方:

  1. Description 你的文件名称(不含扩展名)

  2. WorkingDirectory 你的后端项目所在目录

  3. ExecStart /usr/bin/dotnet 无需更改,仅需将后面的路径指向你的项目文件即可,新框架的名称是MhAdmin.Web.Entry.dll,旧项目的名称是 WebApiServser.dll, 该名称无特殊设置一般就是你的启动项目名称。

  4. SyslogIdentifier 一般为mhadmin- 开头,后面加上小写的项目英文名称

| 注解: 务必区分大小写

  1. 保存后使用 systemctl enable 文件名称 来创建开机启动链接。
  2. 使用 systemctl start 文件名称 启动项目

更新项目

将需更新的文件替换进项目文件夹内进行覆盖即可。

使用以下重启项目即可。

systemctl restart 任务名称
systemctl status 任务名称