Python 后端基础(十六):Linux 部署基础,目录、进程、端口、日志和常用命令讲清楚

学后端不能只会在本机点运行。

真实项目最终要部署到服务器,而服务器大多数是 Linux。你不一定一开始就很精通 Linux,但必须会看目录、查进程、看端口、读日志、启动服务。

【一、为什么后端要学 Linux】

因为项目上线后,很多问题都发生在服务器上:

- 服务有没有启动。

- 端口有没有被占用。

- 日志报了什么错。

- 配置文件路径对不对。

- 磁盘满没满。

- 进程是不是挂了。

- Nginx 有没有转发到后端。

如果完全不会 Linux,项目一部署就卡住。

【二、常见目录】

常见目录含义:

/home 普通用户目录

/root root 用户目录

/etc 配置文件

/var/log 日志文件

/opt 第三方应用安装目录

/usr/bin 常用命令

/tmp 临时文件

项目常放在:

/opt/myapp

/home/ubuntu/myapp

日志常放在:

/var/log/myapp

【三、常用文件命令】

pwd # 查看当前目录

ls -lah # 查看文件列表

cd /opt/myapp # 进入目录

mkdir logs # 创建目录

cp a.txt b.txt # 复制文件

mv a.txt b.txt # 移动或重命名

rm file.txt # 删除文件

删除命令要小心,尤其是:

rm -rf

不要在不确定路径时乱用。

【四、查看日志】

日志排查常用:

tail -f app.log

tail -n 100 app.log

less app.log

grep "ERROR" app.log

`tail -f` 会实时追踪日志,非常适合看接口请求和报错。

如果你项目部署后访问失败,第一反应应该是看日志,而不是盲猜。

【五、进程管理】

查看进程:

ps aux | grep python

查看端口:

netstat -tunlp

或者:

ss -tunlp

杀进程:

kill PID

kill -9 PID

`kill -9` 是强杀,不要随便用,优先正常停止服务。

【六、端口是什么】

端口可以理解成服务器上的服务入口。

常见端口:

22 SSH

80 HTTP

443 HTTPS

3306 MySQL

6379 Redis

8000 常见后端开发端口

如果服务启动失败,可能是端口被占用。

查看 8000 端口:

lsof -i:8000

【七、后台运行服务】

开发时可能这样启动:

uvicorn main:app --host 0.0.0.0 --port 8000

但关闭终端后服务会停。

生产环境通常会用:

- systemd

- supervisor

- Docker

- pm2

systemd 服务示例概念:

systemctl start myapp

systemctl stop myapp

systemctl status myapp

【八、环境变量】

线上配置不要写死在代码里。

常见环境变量:

DATABASE_URL

REDIS_URL

JWT_SECRET

OPENAI_API_KEY

ENV

查看:

echo $DATABASE_URL

临时设置:

export ENV=production

【九、常见坑】

- 本地能跑,服务器路径不对。

- 忘记开放安全组或防火墙端口。

- 服务只监听 `127.0.0.1`,外部访问不到。

- 日志没有写文件,出错无法排查。

- `.env` 没配置,启动时报密钥错误。

- 用 root 跑所有服务,权限风险高。

【十、面试常问】

1. 线上服务访问不了,你怎么排查?

先看服务是否启动,再看端口是否监听,再看 Nginx 配置和安全组,最后看应用日志。排查顺序是进程、端口、网络、配置、日志。

2. 怎么查看某个端口被谁占用?

可以用 `lsof -i:端口`、`netstat -tunlp` 或 `ss -tunlp` 查看监听端口和进程信息。

3. 为什么生产环境不能直接用开发服务器?

开发服务器主要用于本地调试,不适合生产环境的并发、稳定性、进程管理和安全要求。生产一般使用 Gunicorn/Uvicorn workers、Nginx、systemd 或 Docker。