努力
奋斗

阿里云轻量应用服务器怎么部署python?

服务器价格表

部署 Python 到阿里云轻量应用服务器,核心就两步:选对系统装对环境。别想太复杂,这玩意儿跟在你本地笔记本上装没什么本质区别。

下面分两种情况,看你手里拿的是什么“牌”。

情况一:你买的是“镜像”(最简单,适合新手)

如果你刚创建服务器,或者还没重装系统,直接在镜像市场里搜关键词 “Python”“Django/Flask/FastAPI”

  1. 操作:在控制台找到“重置系统”或者新建实例时,镜像选择页搜索 python
  2. 结果:阿里云官方提供了一键安装好 Python、Nginx、MySQL(可选)的镜像。
  3. 优点:开箱即用,省去了配置环境的痛苦,直接上传代码就能跑。
  4. 缺点:定制性差,版本固定,想换个新版 Python 还得自己折腾。

情况二:你用的是标准 Linux 系统(推荐,适合长期维护)

大多数时候,我们更倾向于使用标准的 Ubuntu 或 CentOS 系统,这样可控性更强。这里以目前最主流的 Ubuntu 20.04/22.04 为例,CentOS 逻辑类似,只是包管理器从 apt 变成 yum/dnf

第一步:连上去

用 SSH 工具(如 Terminal, iTerm2, 或者阿里云自带的 VNC)登录服务器。

ssh root@你的服务器IP

第二步:更新源 & 装基础依赖

别直接装 Python,先保证系统是最新的,且编译环境齐全。

# Ubuntu/Debian 系
sudo apt update
sudo apt upgrade -y

# 安装编译 Python 所需的依赖库
sudo apt install -y build-essential zlib1g-dev libncurses5-dev libgdbm-dev 
libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget curl llvm

注意:如果你用的是 CentOS/RHEL,命令换成 sudo yum groupinstall "Development Tools" 和对应的 -devel 包。

第三步:下载并编译安装 Python(最稳妥的方式)

不要直接用 apt install python3,因为那个版本可能太老(比如 Ubuntu 20.04 默认是 3.8,而你可能需要 3.11+)。手动编译是掌控力最强的方式。

  1. 去官网下源码

    cd /tmp
    wget https://www.python.org/ftp/python/3.11.6/Python-3.11.6.tgz
    tar -xf Python-3.11.6.tgz
    cd Python-3.11.6
  2. 配置、编译、安装

    ./configure --enable-optimizations --prefix=/usr/local
    make -j $(nproc)
    sudo make altinstall

    关键点解释

    • --enable-optimizations:开启性能优化,会让编译慢一点,但运行快一点。
    • make altinstall千万别用 make install!它会覆盖系统默认的 python 命令,导致系统崩溃。altinstall 会生成 python3.11 命令,不影响系统自带的环境。
  3. 验证

    python3.11 --version
    # 输出应该是 Python 3.11.6

第四步:虚拟环境(必做,保命符)

永远不要在系统全局环境下 pip install 各种乱七八糟的包。一定要用虚拟环境隔离项目。

# 创建虚拟环境目录
mkdir ~/myproject
cd ~/myproject

# 创建名为 venv 的虚拟环境
python3.11 -m venv venv

# 激活它
source venv/bin/activate

激活后,你的命令行前面会出现 (venv) 字样。这时候再装包:

pip install flask requests numpy ... # 你想装的任何包

第五步:让程序跑起来

这时候你有两个选择:

A. 简单粗暴法(仅用于测试)

python app.py

Ctrl+C 停止。但这不行,关掉终端进程就死了。

B. 正规军做法(Systemd + Gunicorn/Uvicorn)

  1. 安装 Web 服务器

    • Flask/Django 用 Gunicorn
    • FastAPI 用 Uvicorn
    pip install gunicorn uvicorn[standard]
  2. 编写 Systemd 服务文件
    创建 /etc/systemd/system/myapp.service

    [Unit]
    Description=My Python App
    After=network.target
    
    [Service]
    User=root
    WorkingDirectory=/root/myproject
    Environment="PATH=/root/myproject/venv/bin"
    ExecStart=/root/myproject/venv/bin/gunicorn -w 4 -b 127.0.0.1:8000 app:app
    
    [Install]
    WantedBy=multi-user.target

    注意

    • WorkingDirectory 是你的项目路径。
    • ExecStart 里的 app:app 指的是 app.py 文件里的 app 对象。如果是 Django,通常是 manage.py 启动方式不同,需配合 Nginx。
    • 绑定 127.0.0.1:8000 而不是 0.0.0.0,因为后面会有 Nginx 做反向X_X。
  3. 启动服务

    sudo systemctl daemon-reload
    sudo systemctl start myapp
    sudo systemctl enable myapp  # 开机自启
    sudo systemctl status myapp  # 查看状态

第六步:Nginx 反向X_X(暴露给公网)

光有 Python 跑着没用,用户怎么访问?用 Nginx 挡在前面。

  1. 安装 Nginx

    sudo apt install nginx
  2. 配置站点
    编辑 /etc/nginx/sites-available/default 或新建一个配置文件,添加:

    server {
        listen 80;
        server_name your_domain.com; # 替换为你的域名或 IP
    
        location / {
            proxy_pass http://127.0.0.1:8000;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
  3. 重启 Nginx

    sudo nginx -t   # 检查配置是否有语法错误
    sudo systemctl restart nginx

现在,浏览器输入你的服务器 IP,就能看到你的 Python 应用了。

避坑指南

  1. 防火墙:阿里云轻量应用服务器有个“防火墙”设置(控制台里),记得放行 80 (HTTP) 和 443 (HTTPS) 端口。如果只开了 22 (SSH),其他端口默认是被云厂商墙住的。
  2. 权限问题:很多报错是因为文件权限不对。确保你的 Python 项目文件夹有读写权限,通常 chown -R root:root /path/to/project 能解决大部分问题(生产环境建议用普通用户,但开发阶段 root 最快)。
  3. 日志排查:程序挂了怎么办?看日志!
    • Systemd 日志:journalctl -u myapp -f
    • Nginx 错误日志:/var/log/nginx/error.log

这套流程走下来,你的 Python 环境就是干净、独立、可持久化的。别整那些花里胡哨的一键脚本,理解了原理,以后换服务器、换语言都一通百通。