V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
comeding3
V2EX  ›  Python

各位大佬好, Python 如何部署

  •  
  •   comeding3 · 42 天前 · 2884 次点击
    这是一个创建于 42 天前的主题,其中的信息可能已经有所发展或是发生改变。

    兴趣自学了 python ,现在不知道怎么部署上服务器 具体应用到什么技术栈 网上搜索了一下,还是很模糊,什么都有

    28 条回复    2024-05-15 12:05:57 +08:00
    Hopetree
        1
    Hopetree  
       42 天前
    web 项目? Django fastapi flask 这些?使用 Supervisor 部署 Django 应用程序:https://tendcode.com/subject/article/Supervisor_gunicorn_django/
    placeholder
        2
    placeholder  
       42 天前
    反正就是你把 build 之后的文件放到服务器上,然后运行就完事儿了。[doge]
    cnrting
        3
    cnrting  
       42 天前 via iPhone
    python x.py🐶
    milkpuff
        4
    milkpuff  
       42 天前
    miniconda
    LeegoYih
        5
    LeegoYih  
       42 天前
    用 Docker 方便

    FROM python:3.8

    WORKDIR /app
    COPY . /app

    RUN pip install --no-cache-dir -r requirements.txt

    EXPOSE 18000

    CMD ["python3.8", "app.py"]
    0x0208v0
        6
    0x0208v0  
       42 天前
    加个专门 Python 的微信或者 QQ 群吧,v2ex 都是坏东西,你学不会的
    arischow
        7
    arischow  
       42 天前
    https://v2ex.com/t/1031166 你去问他,他说 Python 简单
    v2webdev
        8
    v2webdev  
       42 天前
    如果是公有云的部署环境,直接考虑 Docker 。
    agegcn
        9
    agegcn  
       42 天前   ❤️ 1
    我是最简单的。git ,虚拟环境,systemctl 运行
    taihengw
        10
    taihengw  
       42 天前   ❤️ 2
    这种问题现在最好的方法应该是找 ChatGPT 呀。
    不过还是人工答一下,自己玩玩就直接用本地调试的方式,能跑就行,一般都是给你起个 localhost:8888 这样的端口~如果想正式部署,我用过的是 flask 框架,找个云主机,然后首先装 nginx 做代向代理,配置 nginx 把 80 端口转发到你自己定的一个端口(比如 9999 ),然后再装个 uswgi 这样的软件,这个软件会启动你的 python 服务并监听前面 nginx 转发的端口,这样就实现外部流量->80 端口->nginx 转发到 9999 端口->uswgi 软件分发给你的 python 应用去处理了
    baobao1270
        11
    baobao1270  
       42 天前   ❤️ 2
    Web 的话主要是 WSGI/ASGI 吧
    Flask 有 gunicorn ,FastAPI 有 uvicorn ,都是官方推荐的
    正式环境的话一般会套一个 Nginx ,用来做 load balancing 和 SSL offloading ,当然你用云服务厂的 Load Balancer 也是可以的
    然后就是建议使用一个现代的包管理器,比如 Poetry 或者 PDM
    跨版本部署的话用 pyenv
    kneo
        12
    kneo  
       42 天前 via Android
    你自己会啥?到哪一步了不会?
    都能说出“部署”这个词的,按道理说应该多少会点。
    yqcode
        13
    yqcode  
       42 天前
    我有详细的 windows 搭配 apache 的方案备忘...如果需要的话可以 @我
    pytth
        14
    pytth  
       42 天前 via iPhone
    装个 Python 环境,然后打包,nohup Python xxx.py &
    pytth
        15
    pytth  
       42 天前 via iPhone
    在宝塔面板上部署 Python Flask 项目主要分为以下几个步骤:

    1. **环境准备**:
    - 确保你的开发环境中 Python 版本与宝塔面板中安装的 Python 版本一致。例如,如果你在开发环境中使用的是 Python 3.8.6 ,那么在宝塔面板中也应选择相应的 Python 版本。
    - 使用`pip freeze > requirements.txt`命令导出项目依赖,并确保`requirements.txt`文件中只包含 Flask 及其基本依赖,避免不必要的依赖导致部署失败。

    2. **项目上传**:
    - 将你的 Flask 项目文件上传到服务器的相应目录中,通常推荐上传到`www/wwwroot`目录下,以便于后续配置。

    3. **安装 Python 项目管理器**:
    - 在宝塔面板的应用商店中搜索并安装“Python 项目管理器”插件。安装完成后,进入设置界面,选择“版本管理”并安装你项目所需的 Python 版本。

    4. **添加项目**:
    - 在 Python 项目管理器中点击“添加项目”,填写项目名称,选择对应的 Python 版本和 Flask 框架,并设置启动方式(如 uwsgi 或 gunicorn )。
    - 指定项目路径为你上传的 Flask 项目路径,设置启动文件(如`app.py`),并选择合适的端口(如 5000 或 8001 )。

    5. **配置 UWSGI**:
    - 根据你的项目需求配置 UWSGI ,设置`chdir`为你的项目目录,`wsgi-file`为你的启动文件,`callable`为`app`(如果你的启动文件名为`app.py`)。
    - 如果端口被占用,可以通过服务器终端使用`netstat -anp | grep 端口号`查看占用端口的进程,并使用`kill -s 9 进程号`来释放端口。

    6. **安装并设置 Nginx**:
    - 修改 Nginx 配置文件,设置`server_name`为你的服务器公网 IP ,`root`为你的项目目录。
    - 添加`location`配置,使用`uwsgi_pass 127.0.0.1:端口号;`指向你的 Flask 应用,确保端口号与 UWSGI 配置中的端口号一致。
    - 配置静态文件服务,例如`location /static/`,设置`alias`为你的项目中的静态文件目录。

    7. **端口放行**:
    - 在服务器的安全组设置中放行你设置的端口,确保外部访问不会受到限制。
    - 在宝塔面板的“安全”或“防火墙”设置中放行相应的端口。

    完成以上步骤后,你的 Flask 项目应该可以在通过服务器的公网 IP 地址访问了。如果在部署过程中遇到问题,可以参考宝塔面板的官方文档或者社区中的相关教程进行排查和解决。
    macaodoll
        16
    macaodoll  
       42 天前 via Android
    直接 nohup 运行就行,讲究点就 docker
    Ekid
        17
    Ekid  
       42 天前
    tmux 创个新窗口..然后 python xxx.py
    最简单的快捷的
    ZXiangQAQ
        18
    ZXiangQAQ  
       41 天前
    直接上 docker 就行,手动部署容易出现环境问题
    hnliuzesen
        19
    hnliuzesen  
       41 天前
    sleepybear1113
        20
    sleepybear1113  
       41 天前   ❤️ 3
    别信上面的说走 docker ,既然你是初学 Python ,那么学 docker 就是高射炮打蚊子,楼上那些说用 docker 的根本不是在解决新手的问题。

    先给你几个搜索方向,首先确定你的是什么类型的操作系统,比如 Debian 、CentOS 、Ubuntu 、Windows 这种,不然安装命令都不一样。

    然后去问 GPT ,“在 xxxx 系统下,如何安装 Python 3.x 版本的环境”( 3.x 指的是你用的 Python 版本)。

    然后如果是国内的服务器,去搜索一下,或者 GPT 一下,“Python pip 换源阿里”的操作步骤,让 pip 走国内的源,下载快。

    然后看看你本地在运行前有没有安装什么 pip 的包,如果没有的话不用管,不然就是 pip install xxxx 。

    最后就是运行,python xxxx.py 运行
    amon
        21
    amon  
       41 天前
    新手先 python xxx.py ,跑起来再说。
    Docker 现阶段不太建议,引入了复杂度。
    ohayoo
        22
    ohayoo  
       41 天前 via Android
    赞成 20 楼说的
    lingeo
        23
    lingeo  
       41 天前
    linux 部署:Supervisor
    window 部署:nssm
    完结。
    bitmin
        24
    bitmin  
       41 天前
    新手自学 python ,先最低成本能跑起来就行了

    部署在服务器上,如果是 web 服务 fastapi 这些,先认真看官方文档,官方文档都有介绍,例如 fastapi 专门有个章节说如何部署

    https://fastapi.tiangolo.com/zh/deployment/manually/


    不知道你是啥基础,不好教,是什么计算机知识都不知道就学习 python ,还是前端学习 python ,还是后端学习 python
    iorilu
        25
    iorilu  
       40 天前
    最简单的是登录 shell , 执行 nohup python xxx.py &

    先把这个搞通 , 后面可以看看 supervisor 之类的东西
    jqtmviyu
        26
    jqtmviyu  
       40 天前
    我是 pm2 启动服务.

    设置一个 cron.json. 然后就 pm2 start cron.json, 开机自启, 定时重启, 查看日志, 都是用它.
    zksfyz
        27
    zksfyz  
       40 天前
    1.可以先把 python 源码编译成 pyc 字节码:python -m compileall .
    2.提高运行效率,并且可以简单防止源码泄露
    3.supervisor 守护 python 程序进程,保证挂了会快速恢复。
    xianmofeng3
        28
    xianmofeng3  
       7 天前 via iPhone
    Docker
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2945 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 00:45 · PVG 08:45 · LAX 17:45 · JFK 20:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.