Ubuntu和CentOS的步骤基本一致,主要区别在于包管理工具(apt 代替 yum)和Python 3.9的安装方式。Ubuntu 20.04及更新版本通常自带Python 3.8/3.10,但既然你指定需要3.9,我们可以用更简单的 deadsnakes PPA方式来安装。
第一步:在Ubuntu上安装Python 3.9
方法一:使用deadsnakes PPA(推荐,最简单)
bash
# 更新包列表
sudo apt update
# 安装依赖,让系统支持添加PPA
sudo apt install -y software-properties-common
# 添加deadsnakes PPA(这个源提供了多个Python版本)
sudo add-apt-repository ppa:deadsnakes/ppa
# 再次更新
sudo apt update
# 安装Python 3.9及其开发工具、pip和venv
sudo apt install -y python3.9 python3.9-dev python3.9-venv python3.9-distutils
# 安装pip(如果上面没有自动装好)
curl -sS https://bootstrap.pypa.io/get-pip.py | python3.9
方法二:源码编译安装(如果PPA不可用)
如果因网络原因无法使用PPA,也可以源码编译,步骤和CentOS类似:
bash
sudo apt update
sudo apt install -y build-essential libssl-dev zlib1g-dev libncurses5-dev \
libnss3-dev libsqlite3-dev libreadline-dev libffi-dev curl wget
cd /usr/src
sudo wget https://www.python.org/ftp/python/3.9.18/Python-3.9.18.tgz
sudo tar xzf Python-3.9.18.tgz
cd Python-3.9.18
sudo ./configure --enable-optimizations
sudo make altinstall
验证安装
bash
python3.9 --version
应该输出 Python 3.9.x。
第二步:准备项目的Python环境
这步和CentOS完全一样,进入项目目录创建虚拟环境:
bash
cd /home/wwwroot/b2b_cs/backend
python3.9 -m venv venv
source venv/bin/activate
pip install -r requirements.txt # 如果有依赖文件
# 或单独安装需要的包
deactivate
第三步:使用systemd配置开机自启
Ubuntu从16.04开始就全面使用systemd了,步骤和CentOS一致,只是服务文件的路径相同 /etc/systemd/system/。
创建服务文件
bash
sudo nano /etc/systemd/system/b2b-cs.service
写入以下内容(注意修改关键参数)
ini
[Unit]
Description=B2B CS Backend Python Service
After=network.target
[Service]
Type=simple
# 重要:建议使用非root用户,例如ubuntu或www-data
User=ubuntu
Group=ubuntu
WorkingDirectory=/home/wwwroot/b2b_cs/backend
# 使用虚拟环境中的Python
ExecStart=/home/wwwroot/b2b_cs/backend/venv/bin/python /home/wwwroot/b2b_cs/backend/your_main_script.py
Restart=always
RestartSec=5
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
注意:把 User=ubuntu 改成你实际登录的用户名(可用 whoami 查看),your_main_script.py 改成你的主程序文件名(比如 app.py 或 main.py)。
启动并启用服务
bash
sudo systemctl daemon-reload
sudo systemctl start b2b-cs
sudo systemctl enable b2b-cs
第四步:管理和监控服务
bash
# 查看运行状态
sudo systemctl status b2b-cs
# 查看实时日志(方便调试)
sudo journalctl -u b2b-cs -f
# 如果修改了代码,重启服务
sudo systemctl restart b2b-cs
留言