从打包到上线的全流程总结(加密 .whl 项目)

将 Python 项目加密打包后的.whl 文件部署到 Linux 服务器

第一部分:在本地打包 .whl 文件(适用于 Linux)

  1. 1 项目结构(示例)

  1. 2 使用 Cython 加密并生成 .so 文件(window下为.pyd文件)

pip install cython setuptools wheel

python3 setup.py bdist_wheel

  1. 3 得到类似文件:

dist/fdqa-0.1.0-cp38-cp38-linux_x86_64.whl

第二部分:上传并部署 .whl 到服务器

2.1 上传 .whl 文件(用 scp 或 Xftp)

scp dist/fdqa-*.whl lung@your_server:/home/lung/

2.2 登录服务器并准备环境

ssh lung@your_server

cd /home/lung

sudo apt update

sudo apt install python3.8 python3.8-venv

python3.8 -m venv venv

source venv/bin/activate

2.3 安装 .whl 包

pip install ./fdqa-0.1.0-cp38-cp38-linux_x86_64.whl

第三部分:运行你的 FastAPI 项目

3.1 创建启动脚本 run_server.py

from fdqa import api_server  # 你封装的包里必须包含 api_server.py

if __name__ == '__main__':

    import uvicorn

uvicorn.run(api_server.app, host='0.0.0.0', port=9514)

3.2 启动服务

python run_server.py

第四部分:Nginx + HTTPS 反向代理部署

4.1 安装 Nginx 和 Certbot

sudo apt install nginx certbot python3-certbot-nginx

4.2 设置 Nginx 配置文件

创建 /etc/nginx/sites-available/fdqa_ssl

server {

    listen 443 ssl;

    server_name yourdomain.com;

    ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;

    ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;

    location / {

        proxy_pass http://127.0.0.1:9514;

        proxy_set_header Host $host;

        proxy_set_header X-Real-IP $remote_addr;

    }

}

server {

    listen 80;

    server_name yourdomain.com;

    return 301 https://$host$request_uri;

}

4.3 启用配置并申请 HTTPS

sudo ln -s /etc/nginx/sites-available/fdqa_ssl /etc/nginx/sites-enabled/

sudo nginx -t && sudo systemctl reload nginx

sudo certbot --nginx -d yourdomain.com

### 如何在离线环境中使用 pip 安装 Poetry 项目打包生成的 .whl 文件 #### 准备工作 为了能够在离线环境中成功安装 `.whl` 文件,需要提前准备所有必要的依赖项并将其传输至目标机器。 #### 下载所需的轮子文件和依赖关系 确保在有网络连接的计算机上执行此操作: 1. 使用 `poetry export` 命令导出当前环境中的依赖列表到 requirements.txt 文件中[^1]: ```bash poetry export -f requirements.txt --output requirements.txt ``` 2. 利用该文件来批量下载所有的 wheel 包及其依赖项。这可以通过创建虚拟环境并将这些包复制出来完成,也可以直接利用工具如 `pip download` 来获取它们: ```bash pip download -r requirements.txt -d ./wheels/ ``` 3. 将整个 wheels 目录拷贝到 U盘或其他存储介质,并转移到无网的目标设备上去。 #### 在离线环境中安装 Wheel 文件 一旦所有必需的 `.whl` 文件都已准备好并且被放置在一个可访问的位置,在离线模式下就可以按照如下方式来进行安装了: - 进入存放 `.whl` 文件所在的路径; - 对于单个 `.whl` 文件可以直接指定其全名进行安装;对于多个则可以采用通配符匹配的方式一次性处理多版本兼容问题: ```bash pip install --no-index --find-links=/path/to/wheels/ package_name.whl ``` 如果事先已经收集好了完整的依赖树,则只需指向本地仓库即可满足需求而无需在线查找其他资源。 注意:由于是在完全隔离的状态下调用命令,因此务必加上参数 `--no-index` 和 `--find-links` 明确告知 pip 不要尝试去索引站点查询任何东西而是仅限于给定位置寻找可用软件包。 ```python import os os.system('pip install --no-index --find-links=./wheels/ recurly-3.0b2-py3-none-any.whl') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值