主页
文章
分类
标签
关于
第一次买云服务器别慌:Ubuntu 初始化 + 1Panel,一小时把服务器用起来
发布于: 2026-10-11   更新于: 2026-10-11   收录于: cloud
文章字数: 2625   阅读时间: 6 分钟   阅读量:

第一次买云服务器别慌:Ubuntu 初始化 + 1Panel,一小时把服务器用起来

写在前面

买下服务器的那一刻,很多人盯着一个黑漆漆的终端不知道从哪下手。

这篇把「新服务器拿到手」这一整套动作整理成清单:先体检、再调时区语言、装基础工具、上一块可视化面板、配好告警和定时任务。照着敲一遍,一小时之内这台机器就能正式干活了。

环境说明:Ubuntu 22.04.5 LTS。同为 Debian 系的 20.04 / 24.04 基本通用; CentOS 用户请把 apt 换成 yum / dnf,其余思路一致。

第 0 步:先给服务器做个体检

登录之后先别急着装东西,花一分钟看看这台机器到底长什么样:

1
2
3
4
5
6
df -h                 # 磁盘占用与挂载点
free -h               # 内存
nproc                 # CPU 核数
lsblk                 # 磁盘分区结构
ip a                  # 网卡与内网 IP
cat /etc/os-release   # 系统版本

重点看两件事:

  • 系统盘大小对不对:有些镜像默认只挂了一部分容量,剩下的需要手动扩容,df -h 一眼就能看出来
  • 时间对不对:时区不对,日志、定时任务、证书校验全都会错位,下一步就修它

第 1 步:时区与中文语言环境

1.1 时区(一条命令)

1
sudo timedatectl set-timezone Asia/Shanghai

1.2 中文语言环境

Ubuntu 默认把 zh_CN 注释掉了,需要手动打开再生成:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# 1. 取消注释,启用 zh_CN 与 en_US
sudo sed -i 's/^# zh_CN.UTF-8 UTF-8/zh_CN.UTF-8 UTF-8/' /etc/locale.gen
sudo sed -i 's/^# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen
sudo locale-gen zh_CN.UTF-8 en_US.UTF-8

# 2. 写入系统默认 locale(登录时由 PAM 读取)
sudo tee /etc/default/locale > /dev/null <<'EOF'
LANG=zh_CN.UTF-8
LANGUAGE=zh_CN:zh
EOF

# 3. 写入全局环境变量
sudo tee -a /etc/environment > /dev/null <<'EOF'
LANG=zh_CN.UTF-8
EOF

# 4. 重新登录(或重启)之后验证
date
locale

我第一次跑这段时的三个坑

  1. 不要把 LC_ALL 写进 /etc/default/locale。 LC_ALL 是优先级最高的临时调试变量,官方明确不建议长期设置。 写死之后个别软件会报警、甚至行为异常(比如某些 Python 程序的编码判断)。 长期配置只需要 LANG 和 LANGUAGE 这两个,效果完全一样。
  2. 脚本中间别夹 reboot。它会让 SSH 会话直接断开,写在它后面的所有命令都不会执行。 重启(或者退出重新登录)请当成独立的一步,前面全跑完再手动做。
  3. heredoc 建议写成 <<'EOF'(EOF 带引号),这样内容里的 $、反引号不会被 shell 提前展开, 写配置文件时更安全。

第 2 步:基础工具

1
2
sudo apt update
sudo apt install -y vim curl wget git

第 3 步:装 1Panel,一条命令的事

命令行用久了会发现,看日志、改配置、传文件都要来回敲。这时候上一个服务器管理面板能省非常多事。

我选的是 1Panel:开源、由飞致云出品、Docker 原生、界面清爽,应用商店里常用服务一键部署。

1
bash -c "$(curl -sSL https://resource.fit2cloud.com/1panel/package/v2/quick_start.sh)"

安装过程会依次问你:安装目录、面板端口、安全入口、是否使用镜像加速。装完最后会打印:

面板地址: http://服务器IP:端口/安全入口
用户名:   xxx
密码:     xxx

这三样务必存进密码管理器。 尤其是那个「安全入口」——它是面板地址里的一段随机路径,忘了它就进不去面板,只能登服务器执行 1pctl user-info 找回。

千万别以为直接访问 IP:端口 就能打开面板,那是打不开的。 这正是它防全网扫描的设计:不知道安全入口的人,连登录页都看不到。

第 4 步:进面板,先做这四件事

刚装完先别急着部署应用,花十分钟把安全项过一遍:

  1. 改掉初始密码(面板设置里)
  2. 确认端口和安全入口,不合适就改掉
  3. 配置告警:顶部的「监控报警」里可以绑定邮件 / 钉钉 / 飞书等,CPU、内存、磁盘、容器异常都会主动推给你——这是服务器能不能放心跑长期任务的关键
  4. 云控制台的安全组:只放行 22、80、443 和面板端口,其它全部拒绝。这一步在云厂商的控制台做,不在服务器里

面板长这样,应用商店里 MySQL、Redis、OpenResty、WordPress 这些都是一键安装:

1Panel 应用商店

面板设置里可以调主题、语言、端口、默认访问地址等(下图中的内网地址已打码):

1Panel 面板设置

我最常用的几个入口

功能用途
网站建站、反向代理、一键申请与续期 SSL 证书
数据库MySQL / Redis 一键安装、备份恢复
计划任务界面化替代 crontab,还能看执行日志
容器Docker 可视化:启停、日志、进入终端
文件网页版文件管理器,传文件改配置不用再开 FTP
日志审计SSH 登录记录、操作记录,出问题能溯源

第 5 步:两个定时任务

5.1 自动清理 7 天前的日志

1
crontab -e

加入:

# 每天 10:00 清理 7 天前的日志
0 10 * * * find /data/your-app -type d -name logs -exec find {} -type f -name "*.log" -mtime +7 -delete \; 2>/dev/null

思路拆开看:

  • -mtime +7:修改时间在 7 天以前
  • 外层 find 先把所有名叫 logs 的目录找出来,里层再删其中的 .log 文件——这样不管应用把日志散在几层子目录里都能覆盖到
  • 末尾的 2>/dev/null:目录不存在时不往系统邮箱里塞报错

用 1Panel 的话,也可以在「计划任务」里界面化配置,效果一样,还能看到每次执行的输出。

5.2 每天把面板地址推到飞书

服务器一多、隔上半个月,很容易忘记面板地址。让服务器每天中午自己把地址推到飞书群:

第一步,先写成脚本(千万别把一长串转义 JSON 直接塞进 crontab,能转到你怀疑人生):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
sudo tee /usr/local/bin/panel-notify.sh > /dev/null <<'EOF'
#!/bin/bash
# 每天 12:00 由 crontab 调用,把 1Panel 面板地址推送到飞书群机器人
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

url=$(/usr/bin/1pctl user-info | grep -oE 'http[s]?://[^ ]+' | head -1)
[ -z "$url" ] && url="未获取到,请到服务器执行 1pctl user-info 查看"

curl -s -X POST \
  -H "Content-Type: application/json" \
  -d "{\"msg_type\":\"text\",\"content\":{\"text\":\"面板地址:$url\"}}" \
  "https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
EOF

sudo chmod +x /usr/local/bin/panel-notify.sh

第二步,crontab 里只留一行:

0 12 * * * /usr/local/bin/panel-notify.sh

两个细节值得单独说:

  • cron 的 PATH 极其精简,脚本里显式 export PATH 能避免一大类「命令明明存在却找不到」的问题
  • 飞书机器人的 webhook 地址等于你这个群的门钥匙,拿到它的人就能往群里发任意消息。 所以别写进公开页面、别提交到 git,截图时记得打码

我一开始就是把整段命令塞在 crontab 里的,能跑,但改一次转义一次, 后来抽成脚本才算舒服。功能上两者等价,维护性差一个量级。

关于域名(简单说说)

服务器有了,想让人记得住,还得有个名字:

  • 在腾讯云 / 阿里云买,常见后缀几十块一年,.top / .xyz / .online 促销时几块钱
  • 必须先实名认证,否则解析不生效
  • 解析一条 A 记录指向服务器公网 IP 就能用
  • 国内服务器对外提供网站服务,域名需要 ICP 备案(个人可办,线上提交,一般一周左右); 不备案就只能走非 80/443 端口或境外节点
  • 有了域名 + 1Panel,SSL 证书(Let’s Encrypt)一键申请、自动续期

收尾

第一次买服务器,最容易在两件事上翻车:一是安全项没做(默认密码、全端口开放),二是配置散落各处没记录。

上面这套跑完,你的服务器至少做到了:时区语言正确、有可视化面板、异常会主动通知、日志不会撑爆磁盘、面板地址随时能找回来。剩下的就是往里面装你真正想跑的东西了。

有问题欢迎在评论区留言。

本文首发于我的博客,转载请注明出处。