当前位置:首页>Linux>Linux从零部署实战指南(一):服务器选购与环境初始化

Linux从零部署实战指南(一):服务器选购与环境初始化

  • 2026-08-18 23:11:28
Linux从零部署实战指南(一):服务器选购与环境初始化

Linux 从零部署项目实战指南(一):服务器选购与环境初始化

本系列面向零基础或初中级开发者,手把手教你将一个项目从零部署到 Linux 服务器,并解决过程中遇到的常见问题。


一、前言

"项目写好了,怎么部署到服务器上?"

这是很多开发初学者最头疼的问题。买好了服务器却不知道从何下手,配置环境时各种报错,项目上线后遇到问题不知如何排查……

别担心,这个系列就是从零开始,把一个项目完整部署到 Linux 服务器上,每一步都有图有代码,每篇都附 "常见问题" 板块,把踩过的坑都告诉你。

本篇目标:拥有一台配置好基础环境的云服务器,能够通过 SSH 安全登录,目录结构清晰规范,防火墙配置到位。


二、云服务器选购指南

2.1 轻量应用服务器 vs 云服务器 ECS

很多新手买服务器时,会看到两个类似的产品,容易混淆:

对比维度
轻量应用服务器
云服务器 ECS
定位
开箱即用,适合个人/小项目
企业级,高度可定制
配置方式
预装环境,控制台可视化操作
全手动配置,更高灵活性
网络
固定带宽,流量包模式
可自定义带宽、独立 IP
扩展性
较难升级,通常只能整机升级
灵活升降配,可挂载独立数据盘
价格
便宜,适合入门
相对贵一些
适用场景
个人博客、测试环境、小型 Web 应用
生产环境、微服务、高并发场景

💡 建议:个人学习、小博客项目选 轻量应用服务器 就够了,便宜且省心。如果是公司项目或学习完整的运维技能,选 ECS 更有操作空间。本系列以 ECS 为例讲解,但 90% 的内容在轻量服务器上同样适用。

2.2 主流云平台对比

云平台
新用户优惠
特点
适合人群
阿里云
99元/年(2核2G)
产品线最全,文档丰富,社区活跃
初学者首选
腾讯云
轻量服务器 88元/年
轻量应用服务器性价比高,小程序/CDN配套好
个人开发者
华为云
学生优惠较多
企业级稳定,网络质量好,AI算力有优势
追求稳定性的开发者
UCloud
全球节点多
免备案,适合海外部署,带宽大
面向海外用户

2.3 配置选择建议

核心配置维度:CPU、内存、带宽、磁盘

CPU & 内存

# 按场景推荐配置学习练手:  CPU: 2  内存: 2G  (最小可行配置)  说明: 能跑一个单机应用,但若同时跑 MySQL + Redis 内存会吃紧个人博客/小项目:  CPU: 2  内存: 4G  (推荐配置,性价比最高)  说明: 同时跑 Nginx + MySQL + Redis + 应用进程,内存基本够用企业生产/高并发:  CPU: 4核+  内存: 8G+  说明: 需要预留弹性空间应对流量高峰

带宽

带宽是容易被忽略的配置。带宽决定你的用户访问速度

  • • 1Mbps:理论最大下载速度约 128KB/s,仅够 API 接口交互,页面带大量图片就吃力
  • • 3Mbps:约 384KB/s,个人博客轻度使用勉强够
  • • 5Mbps:约 640KB/s,推荐起步配置,页面加载体验尚可
  • • 10Mbps:约 1.25MB/s,小型生产环境舒适区

带宽计费模式

按固定带宽(推荐新手):  优点:费用固定,不怕流量突增  缺点:流量用不用都付一样的钱  示例:5Mbps 包月 ≈ 100-150元/月按使用流量:  优点:闲时费用低  缺点:被攻击或流量突增时费用飙升  示例:1GB ≈ 0.8元,如果网站日流量 10GB,一天就 8 元

⚠️ 新手强烈建议选"按固定带宽"。按流量计费看着便宜,但如果网站被刷流量或者代码有 bug 循环请求,一觉醒来欠费几百块的情况并不少见。

磁盘

云服务器通常有两类磁盘:

系统盘(必选):  - 默认 40GB,建议扩大到 60GB  - 用于安装操作系统和系统软件  - 类型:高效云盘(便宜)或 SSD 云盘(快)数据盘(可选但推荐):  - 单独挂载,用于存放项目代码、数据库、日志  - 优势:重装系统时数据盘不受影响  - 建议:至少 40GB SSD 数据盘

为什么要区分系统盘和数据盘?

# 场景:系统出问题需要重装系统# 有数据盘 ➜ 只重装系统盘,数据盘的数据还在# 无数据盘 ➜ 所有数据都得先备份,否则重装就丢了

2.4 地域选择

地域选择影响访问速度和备案要求:

国内节点:  华东(上海/杭州)—— 适合华东用户  华南(深圳/广州)—— 适合华南用户  华北(北京/张家口)—— 适合北方用户  注意:国内节点必须 ICP 备案才能绑定域名海外节点:  香港 —— 访问速度快,无需备案  新加坡 —— 东南亚用户首选  美国(硅谷/弗吉尼亚)—— 欧美用户首选  注意:海外节点延迟较高,但免备案

选地域口诀:离用户近、同运营商快、国内需备案。

2.5 购买实操指引

以阿里云 ECS 为例,购买时关键选项:

① 计费方式:包年包月(新手选这个,价格优惠)② 地域:华北2(北京)/ 华东1(上海)③ 实例:ecs.t6-c1m1.large(2核2G,入门够用)④ 镜像:Ubuntu 22.04 64位⑤ 系统盘:高效云盘 40GB⑥ 数据盘:SSD云盘 40GB(可选)⑦ 带宽:按固定带宽 5Mbps⑧ 安全组:创建后开放 22、80、443 端口

三、服务器初始化

3.1 操作系统选择

系统选择原则:  1. 选 LTS(长期支持)版本,不要追新  2. 选你熟悉的包管理器(apt / yum)  3. 选社区活跃的,出问题能搜到答案推荐排行:  🥇 Ubuntu 22.04 LTS —— 首选,文档最全,教程最多  🥇 Ubuntu 24.04 LTS —— 新版,但部分软件兼容性稍差  🥈 Debian 12 —— 稳定省资源,适合生产环境  ❌ CentOS 7 —— 2024年6月已停止维护,不要再用了  ⚠️ Rocky Linux / AlmaLinux —— CentOS 的替代品,但国内用户少

本系列以 Ubuntu 22.04 LTS 为例,命令和操作在 Ubuntu 24.04 和 Debian 12 上基本通用。

3.2 SSH 连接服务器

购买服务器后,云平台会提供初始登录信息:

  • • 公网 IP:如 123.123.123.123
  • • 用户名:Ubuntu 系统默认为 root 或 ubuntu
  • • 密码:你设置的登录密码(购买时设置或重置密码)

方式一:密码登录

Windows 用户(使用 PowerShell 或 CMD 或 Terminal):

# 基础登录命令ssh root@123.123.123.123# 如果提示 "Permission denied",可能是用户名不对,试试 ubuntussh ubuntu@123.123.123.123# 如果 SSH 端口不是默认的 22(比如改了端口)ssh -p 2222 root@123.123.123.123

首次连接会提示确认主机指纹,输入 yes 回车即可,然后输入密码登录。

🔑 密码输入技巧:Linux 输入密码时屏幕不会显示任何字符(没有 ******),这是正常的,输入完直接回车即可。

方式二:密钥登录(推荐,更安全)

密钥登录的原理是非对称加密:你有一对密钥,公钥放在服务器上,私钥留在本地。登录时,服务器用公钥验证你的私钥,匹配成功才允许登录。

第 1 步:在本地生成密钥对

# Windows PowerShell / macOS Terminal / Linux 均可执行ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

执行后会提示你:

Generating public/private rsa key pair.Enter file in which to save the key (C:\Users\你的用户名\.ssh\id_rsa):# 直接回车,使用默认路径Enter passphrase (empty for no passphrase):# 可选:给私钥加个密码,这样即使私钥泄露也需要密码才能使用# 建议设置,但每次登录需要输入这个密码(也可以配合 ssh-agent 缓存)Enter same passphrase again:

生成成功后,你会看到两个文件:

~/.ssh/id_rsa       ← 私钥(自己保管,绝对不要给任何人)~/.ssh/id_rsa.pub   ← 公钥(可以公开,上传到服务器)

第 2 步:将公钥上传到服务器

# 方法一:使用 ssh-copy-id(推荐,一行搞定)ssh-copy-id root@123.123.123.123# 输入密码后,ssh-copy-id 会自动将你的公钥追加到服务器的 authorized_keys 中# 方法二:如果 ssh-copy-id 不可用(Windows 默认没有此命令)# 先查看公钥内容cat ~/.ssh/id_rsa.pub# 复制输出的全部内容,然后登录服务器手动添加:mkdir -p ~/.sshchmod 700 ~/.sshecho "这里粘贴你复制的公钥内容" >> ~/.ssh/authorized_keyschmod 600 ~/.ssh/authorized_keys

⚠️ 权限一定要设置正确,否则 SSH 服务器会忽略这个文件:

  • • ~/.ssh 目录权限必须是 700(只有自己有读写执行权限)
  • • ~/.ssh/authorized_keys 文件权限必须是 600(只有自己有读写权限)

第 3 步:测试密钥登录

ssh root@123.123.123.123

如果配置正确,应该直接登录成功,不再需要输入密码(除非你设置了私钥 passphrase)。

第 4 步:配置 SSH 客户端(简化登录)

每次输入 ssh root@123.123.123.123 太长了,配置 SSH 别名可以简化:

在本地编辑 ~/.ssh/config 文件(Windows 路径:C:\Users\你的用户名\.ssh\config):

# 基础配置Host my-server    HostName 123.123.123.123    User root    Port 22    IdentityFile ~/.ssh/id_rsa# 你还可以配置多台服务器Host test-server    HostName 111.111.111.111    User deploy    Port 2222    IdentityFile ~/.ssh/id_rsa_test

配置后,只需要这样连接:

ssh my-server# 等同于 ssh root@123.123.123.123 -p 22 -i ~/.ssh/id_rsa

提高 SSH 安全性

修改 SSH 默认端口

默认的 22 端口每天被全球的扫描器疯狂探测,改个端口能挡掉 99% 的暴力破解:

# 1. 编辑 SSH 配置文件sudo vim /etc/ssh/sshd_config# 2. 找到以下行并修改# 修改前:#Port 22# 修改后:Port 22        # 保留 22 端口作为备用,先添加新端口测试Port 2222      # 自定义端口(建议 1024-65535 之间)# 3. 保存后重启 SSH 服务sudo systemctl restart sshd# 4. 重要!不要关闭当前连接,新开一个终端测试新端口ssh -p 2222 root@123.123.123.123# 5. 新端口确认能登录后,再回去注释掉 Port 22,重启 sshd

禁用密码登录(仅允许密钥登录)

# 编辑 /etc/ssh/sshd_configPasswordAuthentication noPubkeyAuthentication yesChallengeResponseAuthentication noUsePAM no# 重启 SSH 服务sudo systemctl restart sshd

⚠️ 禁用密码前,务必确认密钥登录已经配置成功且能正常登录,否则你会把自己锁在服务器外面!建议先开两个 SSH 窗口测试。

SSH 连接保活配置

默认 SSH 连接一段时间不操作就会断开,配置心跳包可以保持连接:

# 编辑服务端 /etc/ssh/sshd_configClientAliveInterval 60       # 每 60 秒发送一次心跳ClientAliveCountMax 3        # 连续 3 次心跳无响应后断开# 或者配置客户端侧(推荐,只影响当前机器)# 编辑 ~/.ssh/configHost *    ServerAliveInterval 30    ServerAliveCountMax 3

3.3 基础环境配置

登录服务器后,按顺序执行以下操作:

步骤 1:更新系统软件包

# 更新软件源索引sudo apt update# 升级所有已安装软件包到最新版本sudo apt upgrade -y# 可选:升级内核和系统组件(更彻底,但耗时较长)sudo apt dist-upgrade -y# 清理不再需要的依赖包sudo apt autoremove -y

这几个命令的区别:

  • • apt update:只更新软件包列表,不实际安装
  • • apt upgrade:升级已有软件,但不安装新依赖或删除旧包
  • • apt dist-upgrade:更激进的升级,会处理依赖关系变更

步骤 2:安装常用工具

# 一次安装所有常用工具sudo apt install -y \    curl \           # 网络请求工具    wget \           # 下载工具    git \            # 版本控制    vim \            # 文本编辑器    htop \           # 进程监控    net-tools \      # 网络工具(ifconfig、netstat)    lsof \           # 查看打开的文件/端口    tree \           # 目录树展示    unzip \          # 解压 zip 文件    tar \            # 解压 tar 文件    telnet \         # 端口连通性测试    dnsutils \       # DNS 工具(dig、nslookup)    software-properties-common \  # PPA 管理工具    apt-transport-https \          # 支持 HTTPS 源    ca-certificates                # CA 证书

步骤 3:配置时区和时间同步

# 查看当前时区timedatectl# 设置为北京时间(东八区)sudo timedatectl set-timezone Asia/Shanghai# 确认时间正确date# 查看时间同步状态timedatectl status# 如果显示 "NTP service: active",说明时间自动同步已启用# 如果没有启用,手动启用:sudo timedatectl set-ntp true

步骤 4:配置 Swap 交换分区(重要!)

为什么需要 Swap?

当物理内存不够时,系统会把不活跃的内存数据换到磁盘上的 Swap 分区。对于 2G 内存的服务器,配置 Swap 可以防止内存不足时 OOM(Out Of Memory)杀死进程。

# 检查当前是否有 Swapfree -h# 如果 Swap 行显示全是 0,说明没有配置# 创建 2GB 的 Swap 文件(按需调整:一般设为物理内存的 1-2 倍)sudo fallocate -l 2G /swapfile# 设置正确的权限(Swap 文件包含内存数据,必须仅 root 可读写)sudo chmod 600 /swapfile# 格式化为 Swap 格式sudo mkswap /swapfile# 启用 Swapsudo swapon /swapfile# 验证是否生效sudo swapon --showfree -h# 应该能看到 Swap 总量为 2G# 配置开机自动挂载echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab# 调整 Swappiness(控制内核使用 Swap 的积极程度,默认 60 偏积极)# 对于云服务器,建议设为 10,避免过于频繁地使用磁盘交换sudo sysctl vm.swappiness=10echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf

Swappiness 说明

  • • 范围 0-100,值越大越积极使用 Swap
  • • 默认 60 意味着内存使用超过 40% 就可能开始换出
  • • 设为 10 意味着内存使用超过 90% 才使用 Swap
  • • 云服务器磁盘 I/O 是瓶颈,减少 Swap 使用能提升性能

步骤 5:优化系统内核参数

创建 /etc/sysctl.d/99-custom.conf 文件:

sudo tee /etc/sysctl.d/99-custom.conf << 'EOF'# ---- 网络优化 ----# 扩大网络连接队列长度(应对短时并发)net.core.somaxconn = 1024# 加快 TCP 连接回收(减少 TIME_WAIT 状态的连接数)net.ipv4.tcp_fin_timeout = 30# 允许更多的 TIME_WAIT 连接被复用net.ipv4.tcp_tw_reuse = 1# 扩大 TCP 接收/发送缓冲区net.core.rmem_max = 16777216net.core.wmem_max = 16777216# ---- 文件描述符 ----# 系统级别的最大文件打开数fs.file-max = 100000EOF# 应用配置sudo sysctl -p /etc/sysctl.d/99-custom.conf

步骤 6:调整文件描述符限制

# 修改 limits.confsudo tee -a /etc/security/limits.conf << 'EOF'*    soft nofile 65535*    hard nofile 65535*    soft nproc  65535*    hard nproc  65535EOF# 退出重新登录后,用 ulimit -n 验证ulimit -n# 应该输出 65535

步骤 7:修改主机名

# 查看当前主机名hostnamectl# 修改为有意义的名字(如项目名)sudo hostnamectl set-hostname myproject-server# 更新 hosts 文件,避免 sudo 时提示 "unable to resolve host"sudo sed -i "s/127.0.0.1.*/127.0.0.1 localhost myproject-server/" /etc/hosts

3.4 创建部署用户

出于安全考虑,不建议直接用 root 操作项目。创建专用用户来管理项目代码和服务:

# 创建名为 deploy 的普通用户# adduser 会交互式询问密码等信息,全部填写完整sudo adduser deploy# 将用户加入 sudo 组(使其拥有 sudo 权限)sudo usermod -aG sudo deploy# 切换到新用户su - deploy# 验证 sudo 权限sudo whoami# 应该输出 "root"# 为新用户配置密钥登录(可选,但推荐)# 在本地执行:# ssh-copy-id deploy@123.123.123.123

为什么不用 root?

root 权限过大,误操作可能损坏系统即使被入侵,攻击者得到的是 root 权限,后果严重sudo 有日志,可以追溯谁执行了什么命令

3.5 安装 Fail2ban 防暴力破解

互联网上每时每刻都有人在扫描 SSH 端口尝试暴力破解密码,Fail2ban 可以自动封禁频繁失败的 IP:

# 安装 fail2bansudo apt install -y fail2ban# 创建本地配置文件(覆盖默认配置)sudo tee /etc/fail2ban/jail.local << 'EOF'[DEFAULT]# 封禁时间:1 小时(单位:秒)bantime = 3600# 在 findtime 秒内失败 maxretry 次则封禁findtime = 600maxretry = 5# 忽略本机 IPignoreip = 127.0.0.1/8[sshd]enabled = trueport = sshlogpath = %(sshd_log)sEOF# 重启 fail2bansudo systemctl restart fail2ban# 查看状态sudo fail2ban-client status sshd# 查看被封禁的 IP 列表sudo fail2ban-client status sshd

3.6 配置自动安全更新

# 安装 unattended-upgradessudo apt install -y unattended-upgrades# 配置自动更新sudo dpkg-reconfigure --priority=low unattended-upgrades# 在弹出的界面中选择 "Yes"# 查看配置sudo cat /etc/apt/apt.conf.d/20auto-upgrades# 应该显示:# APT::Periodic::Update-Package-Lists "1";# APT::Periodic::Unattended-Upgrade "1";

四、项目目录规划

4.1 为什么需要规范的目录结构?

没有规范的目录结构,部署几个月后,你会面临这些混乱:

/ ─┬─ root   ├─ home  ─── 项目代码东一处西一处   ├─ data  ─── 数据库文件找不到   ├─ var   ─── 日志散落在各目录   └─ tmp   ─── 临时文件堆积成山

而规范的目录结构应该是这样的:

/ ─┬─ home/www/project/  ← 项目代码(统一管理)   ├─ data/              ← 数据存储(数据库、缓存、备份)   ├─ etc/nginx/         ← 服务配置(Nginx 等)   └─ var/log/           ← 系统日志

4.2 推荐的标准目录结构

/home/www/                        # 项目根目录(所有项目都在这里)  └── myproject/                  # 项目名称(按项目名分目录)       ├── source/                #   源码目录(git clone 到这里)       ├── config/                #   项目配置文件       │   ├── appsettings.json   #     .NET 配置文件       │   ├── app.env            #     环境变量文件       │   └── nginx.conf         #     Nginx 站点配置       ├── logs/                  #   运行日志       │   ├── app.log            #     应用日志       │   ├── access.log         #     访问日志       │   └── error.log          #     错误日志       └── static/                #   静态资源(图片、CSS、JS等)            ├── uploads/          #     用户上传文件            └── assets/           #     前端构建产物/data/                            # 数据存储根目录  ├── mysql/                      # MySQL 数据文件  │   └── data/                   #   数据库文件(由 MySQL 管理)  ├── redis/                      # Redis 持久化数据  │   └── dump.rdb                #   RDB 快照文件  └── backup/                     # 备份目录       ├── db/                    #   数据库备份       ├── code/                  #   代码备份       └── config/                #   配置文件备份/etc/nginx/                       # Nginx 配置目录  ├── sites-available/            #   可用站点配置  └── sites-enabled/              #   已启用站点配置(软链接到 available)/var/log/nginx/                   # Nginx 访问与错误日志

4.3 创建目录并设置权限

# 创建完整的项目目录结构sudo mkdir -p /home/www/myproject/{source,config,logs,static/{uploads,assets}}sudo mkdir -p /data/{mysql,redis,backup/{db,code,config}}sudo mkdir -p /var/log/nginx# 将目录所有权交给 deploy 用户(deploy 用户可以正常读写)sudo chown -R deploy:deploy /home/wwwsudo chown -R deploy:deploy /datasudo chown -R deploy:deploy /var/log/nginx# 用 tree 命令查看创建结果tree -L 3 /home/wwwtree -L 3 /data

4.4 配置环境变量

环境变量用于存储敏感信息(数据库密码、API Key 等),避免硬编码在代码中:

# 为 deploy 用户配置环境变量vim ~/.bashrc# 在文件末尾添加:export DB_HOST="localhost"export DB_PORT="3306"export DB_USER="myapp"export DB_PASSWORD="your_secure_password"export REDIS_HOST="localhost"export REDIS_PORT="6379"export APP_ENV="production"# 使配置生效source ~/.bashrc# 验证echo $DB_HOST# 输出:localhost

💡 生产环境建议:对于更复杂的环境变量管理,可以使用 .env 文件,配合 direnv 工具按目录自动加载。

4.5 使用软链接管理站点配置

Nginx 的 sites-available 和 sites-enabled 机制是软链接的经典应用:

# 创建站点配置(在 sites-available 中)sudo vim /etc/nginx/sites-available/myproject# 启用站点(创建软链接到 sites-enabled)sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled/# 检查配置语法sudo nginx -t# 重新加载 Nginxsudo systemctl reload nginx# 禁用站点(删除软链接)sudo rm /etc/nginx/sites-enabled/myproject

这种机制的好处:配置和启用分离,可以随时开关站点而不丢失配置。


五、防火墙配置

5.1 Linux 防火墙体系

Linux 防火墙的底层是 Netfilter(内核网络过滤框架),上层通过 iptables 管理规则。Ubuntu 的 UFW(Uncomplicated Firewall)是对 iptables 的封装,让防火墙配置更简单。

┌──────────────────────────────────────────────────┐│                  用户空间                         ││   ┌──────┐   ┌──────────────────────────────┐    ││   │ UFW  │──▶│  iptables / nftables 命令    │    ││   └──────┘   └──────────┬───────────────────┘    │├──────────────────────────┼────────────────────────┤│               内核空间   │                       ││                  ┌──────▼──────────┐             ││                  │   Netfilter     │             ││                  │  (内核网络过滤)  │             ││                  └─────────────────┘             │└──────────────────────────────────────────────────┘

5.2 使用 UFW 配置防火墙

# 安装 UFW(Ubuntu 默认已安装,确认一下)sudo apt install -y ufw# 先检查状态(默认是 inactive)sudo ufw status# 设置默认策略:拒绝所有入站,允许所有出站sudo ufw default deny incomingsudo ufw default allow outgoing# 开放必要端口(按需开放,越少越安全)sudo ufw allow 22/tcp    # SSH 远程连接sudo ufw allow 80/tcp    # HTTP Web 访问sudo ufw allow 443/tcp   # HTTPS 加密访问# 如果需要其他服务,再加(如 MySQL 只允许内网访问)sudo ufw allow from 10.0.0.0/8 to any port 3306  # 内网 MySQL# 启用防火墙(会提示是否继续,输入 y)sudo ufw enable# 查看详细状态sudo ufw status verbose# 输出示例:# Status: active# Logging: on (low)# Default: deny (incoming), allow (outgoing), deny (routed)# New profiles: skip## To                         Action      From# --                         ------      ----# 22/tcp                     ALLOW IN    Anywhere# 80/tcp                     ALLOW IN    Anywhere# 443/tcp                    ALLOW IN    Anywhere# 3306                       ALLOW IN    10.0.0.0/8# 22/tcp (v6)                ALLOW IN    Anywhere (v6)# 80/tcp (v6)                ALLOW IN    Anywhere (v6)# 443/tcp (v6)               ALLOW IN    Anywhere (v6)

UFW 常用管理命令:

# 删除规则(按编号)sudo ufw status numberedsudo ufw delete 3# 拒绝特定 IPsudo ufw deny from 1.2.3.4# 临时禁用防火墙(排错时使用)sudo ufw disable# 重置所有规则(回到初始状态)sudo ufw reset

5.3 云平台安全组(双重保险)

重要概念:安全组是云平台层面的防火墙,UFW 是服务器内部的防火墙。两者都放行才能访问

用户请求 → 云平台安全组 → 服务器 UFW → 服务进程            ↓                ↓        必须放行          必须放行

配置安全组规则(以阿里云为例):

登录阿里云控制台 → 云服务器 ECS → 网络与安全 → 安全组 → 配置规则 → 入方向

规则方向:入方向优先级:1协议类型:TCP端口范围:22/22(SSH)授权对象:0.0.0.0/0(所有 IP)→ 建议改为你公司的公网 IP描述:SSH 远程连接规则方向:入方向协议类型:TCP端口范围:80/80(HTTP)授权对象:0.0.0.0/0描述:HTTP Web 访问规则方向:入方向协议类型:TCP端口范围:443/443(HTTPS)授权对象:0.0.0.0/0描述:HTTPS 加密访问

⚠️ 安全组配置技巧

  1. SSH 端口(22)的授权对象建议绑定你的 IP,而不是 0.0.0.0/0
  2. 如果 IP 不固定,可以使用云平台的 安全组规则备注 功能管理多个 IP
  3. 最好不要同时把所有端口都放行

5.4 防止自己被锁在门外

每次修改防火墙规则前,建议先创建一个定时任务来重置防火墙,以防把自己锁在外面:

# 在修改防火墙前,设置一个 5 分钟后自动关闭防火墙的任务# 如果修改后发现自己被锁了,等 5 分钟就能恢复sudo shutdown -r +5 "紧急恢复:防火墙配置可能有问题"# 如果修改成功,取消重启sudo shutdown -c

六、验证环境

执行完以上所有步骤后,做一次全面检查,确保服务器状态正常:

# ========== 系统信息 ==========echo "=== 系统版本 ==="lsb_release -a 2>/dev/null || cat /etc/os-releaseecho ""echo "=== 内核版本 ==="uname -recho ""echo "=== 主机名 ==="hostnamectl# ========== 资源状态 ==========echo "=== CPU 信息 ==="nproc              # CPU 核心数lscpu | grep "Model name"  # CPU 型号echo ""echo "=== 内存信息 ==="free -hecho ""echo "=== 磁盘信息 ==="df -h# ========== 网络状态 ==========echo "=== 公网 IP ==="curl -s ifconfig.meecho ""echo "=== 防火墙状态 ==="sudo ufw status verboseecho ""echo "=== 监听端口 ==="sudo ss -tlnp# ========== 外网连通性 ==========echo "=== DNS 解析测试 ==="nslookup baidu.comping -c 2 baidu.com# ========== 安全状态 ==========echo "=== Fail2ban 状态 ==="sudo fail2ban-client status sshdecho ""echo "=== SSH 登录日志(最近5次失败)==="sudo lastb | head -5

验证清单,逐项打勾:

[✅] SSH 密钥登录成功[✅] 密码登录已禁用[✅] SSH 端口已修改(可选)[✅] 系统软件包已更新[✅] 时区设置为 Asia/Shanghai[✅] Swap 已配置(2GB)[✅] Fail2ban 已启动[✅] 自动安全更新已配置[✅] deploy 用户已创建且有 sudo 权限[✅] 目录结构已创建[✅] UFW 防火墙已启用且端口正确[✅] 云平台安全组已配置[✅] 外网访问正常

七、常见问题

❓ Q1:SSH 连接超时 Connection timed out

错误信息ssh: connect to host 123.123.123.123 port 22: Connection timed out

排查步骤

① 服务器是否已开机?   → 登录云平台控制台,查看实例状态② 安全组是否放行了 22 端口?   → 控制台 → 安全组 → 入方向规则 → 检查是否有 22 端口③ 本地网络能否到达服务器?   → ping 123.123.123.123   → 如果 ping 不通,说明网络层面不通   → 如果 ping 通但 SSH 连不上,说明端口问题④ 是否是公司网络限制?   → 尝试切换手机热点连接

❓ Q2:Permission denied (publickey)

错误信息root@123.123.123.123: Permission denied (publickey)

原因:SSH 服务器拒绝了你的密钥认证。

排查步骤

① 公钥是否正确上传?   → 登录云平台控制台(使用 VNC 或远程连接功能)   → 检查 ~/.ssh/authorized_keys 文件内容   → 检查权限:chmod 600 ~/.ssh/authorized_keys; chmod 700 ~/.ssh② 是否使用了正确的私钥?   → ssh -i ~/.ssh/id_rsa -v root@123.123.123.123   → -v 参数会输出详细调试信息,查看 "Authentication succeeded" 或失败原因③ 服务器 SSH 配置是否允许密钥登录?   → 检查 /etc/ssh/sshd_config 中:     PubkeyAuthentication yes

❓ Q3:apt update 报错 "Could not resolve"

错误信息Temporary failure resolving 'archive.ubuntu.com'

原因:DNS 解析失败,无法解析软件源域名。

解决方案

# 检查当前 DNS 配置cat /etc/resolv.conf# 手动添加 DNS 服务器sudo tee /etc/resolv.conf << 'EOF'nameserver 8.8.8.8nameserver 114.114.114.114EOF# 如果服务器重启后 /etc/resolv.conf 会被重置,改为配置 netplansudo vim /etc/netplan/00-installer-config.yaml# 在 network.ethernets.eth0 下添加:#     nameservers:#       addresses: [8.8.8.8, 114.114.114.114]# 应用配置sudo netplan apply

❓ Q4:SSH 登录很慢,要等很久才出现密码提示

原因:SSH 服务开启了 DNS 反向解析,但你的 IP 没有 PTR 记录。

解决方案

# 编辑 /etc/ssh/sshd_configUseDNS noGSSAPIAuthentication no# 重启 SSH 服务sudo systemctl restart sshd

❓ Q5:sudo 提示 "unable to resolve host"

错误信息sudo: unable to resolve host myproject-server

原因:主机名未正确添加到 hosts 文件。

解决方案

# 查看主机名hostname# 将主机名加入到 hosts 文件sudo vim /etc/hosts# 确保有一行:127.0.0.1 localhost myproject-server

❓ Q6:端口明明开了但访问不了?

问题:服务已启动,防火墙也放行了,但就是访问不了。

排查步骤

# ① 检查服务是否在监听正确端口sudo ss -tlnp | grep 80# 应该看到类似:LISTEN 0 511 *:80 *:* users:(("nginx",pid=1234,fd=6))# ② 检查服务绑定的是 0.0.0.0 还是 127.0.0.1# 如果绑定的是 127.0.0.1,只能本机访问,需要改为 0.0.0.0# ③ 检查 UFW 是否放行sudo ufw status | grep 80# ④ 检查云平台安全组# 登录控制台检查入方向规则# ⑤ 本地测试端口连通性telnet 123.123.123.123 80# 如果卡住没反应,说明端口不通;如果显示 Connected,说明通

❓ Q7:磁盘空间不够用怎么办?

# 查看磁盘空间分布du -sh /* 2>/dev/null | sort -rh | head -20# 清理 apt 包缓存sudo apt cleansudo apt autoclean# 清理 journal 日志(保留最近7天的)sudo journalctl --vacuum-time=7d# 清理旧内核(释放 /boot 空间)sudo apt autoremove --purge -y# 清理 /tmp 临时文件sudo rm -rf /tmp/*# 如果还不够,在云平台控制台扩容数据盘,然后扩展文件系统# 扩容后执行:sudo growpart /dev/vdb 1sudo resize2fs /dev/vdb1

八、总结

至此,你的服务器已经完成了完整的初始化,可以开始部署项目了。

本文要点回顾:

第一篇:服务器选购与环境初始化├── ✅ 选购了合适的云服务器(ECS vs 轻量服务器)├── ✅ 选择了 Ubuntu 22.04 LTS 系统├── ✅ 配置了 SSH 密钥登录并禁用密码登录├── ✅ 修改了 SSH 端口(可选)├── ✅ 更新了系统软件包├── ✅ 配置了时区、Swap、内核参数├── ✅ 创建了 deploy 用户├── ✅ 安装了 Fail2ban 防暴力破解├── ✅ 配置了自动安全更新├── ✅ 规划了标准化的项目目录结构├── ✅ 配置了 UFW 防火墙├── ✅ 配置了云平台安全组└── ✅ 通过了全面验证检查

📌 下一篇预告:《Linux 从零部署项目实战指南(二):Nginx + MySQL + Redis 运行环境搭建》我们将搭建完整的项目运行环境,包括 Nginx 反向代理、MySQL 数据库、Redis 缓存,以及常见配置问题的排查方法。


如果你在操作过程中遇到任何问题,欢迎在评论区留言交流!

📌 本系列持续更新中,关注 IT在线自学 第一时间获取最新教程。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-21 23:45:55 HTTP/2.0 GET : https://f.mffb.com.cn/a/507607.html
  2. 运行时间 : 0.285228s [ 吞吐率:3.51req/s ] 内存消耗:4,409.44kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=ace3b110caf49a8bc46b9111a59d8875
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000947s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001391s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.002375s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.018871s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001504s ]
  6. SELECT * FROM `set` [ RunTime:0.000678s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001850s ]
  8. SELECT * FROM `article` WHERE `id` = 507607 LIMIT 1 [ RunTime:0.010260s ]
  9. UPDATE `article` SET `lasttime` = 1787327156 WHERE `id` = 507607 [ RunTime:0.003732s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000665s ]
  11. SELECT * FROM `article` WHERE `id` < 507607 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.003353s ]
  12. SELECT * FROM `article` WHERE `id` > 507607 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.009142s ]
  13. SELECT * FROM `article` WHERE `id` < 507607 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001495s ]
  14. SELECT * FROM `article` WHERE `id` < 507607 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.025005s ]
  15. SELECT * FROM `article` WHERE `id` < 507607 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.032069s ]
0.288862s