python项目做完了,就涉及到了部署,windows可以打包exe,linux如何部署呢?
部署
Python的打包部署方式有多种,具体取决于项目的需求、规模以及所使用的工具。以下是几种常见的Python打包部署方式:
使用pip安装:对于小型的Python库或工具,通常可以直接通过pip进行安装。这种方式下,开发者会将代码打包成Python的wheel或source distribution格式,然后上传到PyPI(Python Package Index)或其他包管理器中。用户可以通过pip install命令直接安装这些包。
虚拟环境:为了避免不同项目之间的依赖冲突,开发者通常会使用虚拟环境(如venv或conda)来隔离每个项目的依赖。在虚拟环境中,可以安装项目所需的特定版本的Python解释器和依赖库。
容器化部署:对于更复杂的应用,可以使用Docker等容器化技术来打包和部署Python应用。通过Docker,可以将Python应用及其所有依赖项打包到一个可移植的容器中,然后在任何支持Docker的环境中运行该容器。这种方式的好处是简化了部署过程,并确保了应用在不同环境中的一致性。
直接上传代码到Linux启动:有时,为了快速部署或调试,开发者可能会选择直接将代码上传到Linux服务器并启动。这种方式简单直接,但可能存在一些问题。例如,没有使用虚拟环境可能导致依赖冲突;没有明确的打包和部署流程可能导致版本控制混乱;直接在服务器上编辑和运行代码也可能增加安全风险。
选择哪种打包部署方式取决于项目的具体需求。对于小型项目或快速原型开发,直接上传代码到Linux启动可能是一个可行的选择。但对于大型、复杂的项目或需要确保一致性和安全性的项目,使用更正规的打包和部署流程(如pip安装、虚拟环境或容器化部署)通常是更好的选择。
总的来说,Python的打包部署方式灵活多样,可以根据项目的需求选择最适合的方式。同时,为了确保项目的稳定性和安全性,建议遵循良好的代码管理和部署实践。
具体
直接上传代码部署,测试环境可以这么干,不过建议还是使用docker容器化部署
配置SFTP
增加ssh
部署路径
排除日志
增加密钥
也可以使用账号密码的方式
启动
需要有python的环境
编译环境
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
源码下载
wget https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tar.xz
解压
tar -Jxvf Python-3.9.5.tar.xz -C /usr/local
安装
cd /usr/local/Python-3.9.5/./configure --prefix=/usr/local/Python-3.9.5
编译
make && make install
测试是否成功
/usr/local/Python-3.9.5/bin/pip3 listpython -V
软连接
mv python python.backln -s /usr/local/Python-3.9.5/bin/python3.9 /usr/bin/python
生成清单文件
pip3 freeze >requirements.txt
上传项目到linux
部署虚拟环境
pip3 install virtualenv
修改源
cd /root/.pip && vim ./pip.conf
如果没有提供启动命令
0.0.0.0 才能让外部访问
创建虚拟环境
python3 -m venv myenv
source myenv/bin/activate # 在 Unix 或 MacOS 上
myenv\Scripts\activate # 在 Windows 上
缺啥模块,就下载啥模块
pip install django
启动
python3 manage.py runserver 0.0.0.0:8401
后台启动
在后台启动 Django 的开发服务器,你可以使用多种方法,因为默认情况下,python manage.py runserver 会将命令行窗口绑定到该进程,使得你不能在后台运行它或者关闭命令行窗口。
以下是几种在后台启动 Django 开发服务器的方法:
- 使用 nohup 和 &(Linux/Unix/macOS)
在命令行中,你可以使用 nohup 和 & 将进程放到后台运行:
bash
nohup python manage.py runserver 0.0.0.0:8401 &
这会启动服务器并在后台运行,即使你关闭了命令行窗口,服务器也会继续运行。所有的输出都会被重定向到一个名为 nohup.out 的文件中(除非你在命令中指定了其他文件)。
- 使用 screen 或 tmux(Linux/Unix/macOS)
screen 和 tmux 是终端复用器,它们允许你在一个终端会话中运行多个终端,并将它们分离到后台。
例如,使用 screen:
bash
screen -S django_server
python manage.py runserver 0.0.0.0:8401
然后按 Ctrl + A, 然后按 D 来分离会话
之后,你可以通过 screen -r django_server 重新连接到该会话。
- 使用第三方工具,如 gunicorn 或 uWSGI
虽然这些不是开发服务器的解决方案,但它们在生产环境中非常有用,并且它们支持以守护进程(daemon)模式运行。然而,它们也可以用于开发环境。例如,使用 gunicorn:
首先,你需要在项目的 requirements.txt 文件中添加 gunicorn。
然后,你可以使用以下命令启动它:
bash
gunicorn your_project.wsgi:application --bind 0.0.0.0:8401 --daemon
注意:–daemon 选项使 gunicorn 在后台运行。但请注意,gunicorn 主要是为生产环境设计的,而不是开发环境。
-
使用 Windows 的服务或计划任务(Windows)
在 Windows 上,你可以使用服务或计划任务来在后台运行 Python 脚本,但这通常比在 Linux/Unix/macOS 上更复杂。 -
使用 IDE 的内置功能(如 PyCharm)
一些集成开发环境(IDE),如 PyCharm,允许你以调试模式或常规模式在后台运行 Django 服务器。你可以查看 IDE 的文档以了解如何执行此操作。