部署一次网站用到的 30 个 Linux 命令
不是命令大全,是我在阿里云服务器上真实敲过的那些。按「刚连上服务器 → 装环境 → 跑服务 → 出问题排查」的顺序排。
说明
网上的 Linux 命令大全动辄两百条,看完一条也记不住。这篇只收我为了让这个博客跑起来真的敲过的命令,按实际使用顺序排。
一、刚连上服务器
ssh root@你的服务器IP # 连接服务器
whoami # 我现在是谁
pwd # 我现在在哪
uname -a # 这是什么系统
df -h # 磁盘还剩多少(-h = 人类可读)
free -h # 内存还剩多少
df -h 和 free -h 建议养成习惯。轻量服务器通常只有 2G 内存、40G 磁盘,很容易满。
二、找路、看文件
ls -lah # 列出所有文件,含隐藏文件和大小
cd /opt/blog # 进目录
cat app/config.py # 看完整文件
less /var/log/nginx/error.log # 分页看大文件(按 q 退出)
tail -f logs/app.log # 实时盯着日志刷(排错神器)
head -20 requirements.txt # 只看前 20 行
tail -f 是排错时用得最多的命令
开一个终端 tail -f 盯日志,另一个终端去访问网站,
出错的那一瞬间日志会直接刷出来。比事后翻日志高效得多。
三、搜索
grep -rn "DATABASE_URL" app/ # 在 app/ 里递归搜关键词,显示行号
find / -name "nginx.conf" # 全盘找文件
which python3 # python3 这个命令在哪
ps aux | grep uvicorn # 找正在跑的 uvicorn 进程
ps aux | grep xxx 里的 | 叫管道,意思是「把左边命令的输出交给右边命令处理」。这是 Linux 最核心的思想之一。
四、装环境
apt update && apt upgrade -y # 更新软件源(Ubuntu/Debian)
apt install -y python3-pip python3-venv git nginx mysql-server
python3 -m venv .venv # 建虚拟环境
source .venv/bin/activate # 激活它
pip install -r requirements.txt # 装依赖
&& 的意思是「前一个命令成功了才执行后一个」。如果 apt update 失败了,就不该继续 upgrade。
五、权限
chmod +x deploy/deploy.sh # 给脚本加可执行权限
chmod 600 .env # 只有文件主人能读写(放密码的文件必须这样)
chown -R www-data:www-data /opt/blog # 改文件归属
chmod 600 里的数字是权限位:6 = 读+写,4 = 只读,0 = 没权限,三位分别对应「文件主人 / 同组用户 / 其他所有人」。
所以 600 = 主人可读写,其他人完全碰不到。放数据库密码的 .env 必须是 600。
六、管理服务
systemctl start blog # 启动
systemctl stop blog # 停止
systemctl restart blog # 重启
systemctl status blog # 看状态(排错第一步)
systemctl enable blog # 开机自启
journalctl -u blog -f # 实时看这个服务的日志
journalctl -u blog -n 50 # 看最近 50 行
服务起不来的时候,systemctl status 和 journalctl -u 服务名 -n 50 这两条基本能定位到问题。
七、端口和网络
ss -tlnp # 看哪些端口在监听、被谁占用
curl http://127.0.0.1:8000/healthz # 在服务器本机测试服务通不通
ping baidu.com # 测网络通不通
排查「网站打不开」时的正确顺序:
systemctl status blog—— 服务活着吗?curl 127.0.0.1:8000—— 服务器本机能访问吗?ss -tlnp—— 端口真的在监听吗?- 都正常 → 那就是防火墙/安全组的问题
这个顺序是从里往外排,能少走很多弯路。
八、传文件
scp ./本地文件 root@服务器IP:/opt/blog/ # 从本机传到服务器
scp root@服务器IP:/opt/blog/日志 ./ # 从服务器拉回本机
不过用 Git 更好:本地 git push,服务器 git pull。
九、救命的几个
Ctrl + C # 停掉当前命令
Ctrl + D / exit # 退出当前登录
history # 看我之前敲过什么
kill -9 进程号 # 强制杀掉进程(先用 ps aux 找到进程号)
du -sh * # 看当前目录下每个文件夹多大(找谁占满了磁盘)
小结
真正需要背的其实就这些。剩下的等你遇到具体问题时再查,那时候才记得住。
我的建议:把这篇存成书签,每敲一个命令的时候想一下它是干嘛的,而不是复制粘贴。三次之后就不用看了。