一、部署准备
在开始之前,请确保你具备以下条件:
- 一台运行 ubuntu(如 ubuntu 20.04 或 22.04)的服务器,具有 ssh 访问权限。
- python 应用程序的代码,确保在本地能够正常运行。
二、安装 python 环境
1. 安装 python 3
ubuntu 20.04 和更高版本默认安装了 python 3,但如果你的系统上没有安装,可以手动安装它:
sudo apt update sudo apt install python3 python3-pip python3-venv -y
python3
:安装 python 3 解释器。python3-pip
:安装 python 包管理工具。python3-venv
:安装虚拟环境支持。
2. 验证 python 安装
安装完成后,可以通过以下命令验证 python 和 pip 是否正确安装:
python3 --version pip3 --version
你应该看到类似下面的输出:
python 3.8.10 pip 21.1.2
三、安装 mysql(如需)
1. 安装mysql服务器
sudo apt install mysql-server -y
2. 启动并设置mysql开机自启
sudo systemctl start mysql sudo systemctl enable mysql
3. 验证mysql安装
登录mysql以确认安装成功。
sudo mysql -u root -p
mysql默认密码是root,直接登录即可。
4. 修改初始密码
alter user 'root'@'localhost' identified with mysql_native_password by 'new_password';
5. 创建库和表
这里我们用sql语句把项目需要的数据库建好即可。
四、创建虚拟环境
为了避免全局安装 python 包和依赖,可以使用 python 的虚拟环境来管理项目的依赖。
1. 创建虚拟环境
在应用程序的目录中,运行以下命令创建虚拟环境:
python3 -m venv myenv
这将创建一个名为 myenv
的虚拟环境。
2. 激活虚拟环境
在创建完虚拟环境后,需要激活它:
source myenv/bin/activate
激活虚拟环境后,你会看到终端提示符前缀变为 (myenv)
,表示虚拟环境已激活。
五、发布 python 应用
1. 上传项目文件
将应用程序文件上传到生产服务器,确保所有的源代码文件和 requirements.txt
文件都已上传。
2. 安装项目依赖
通过 requirements.txt
文件安装依赖。
pip install -r requirements.txt
3. 启动项目
进入到应用程序目录,并运行 python 应用,确保它能够正常启动:
python3 app.py
如果应用运行正常,会显示应用访问地址以及端口号。
六、配置 nginx 作为反向代理(可选)
为了将外部请求转发到 python 应用,通常使用 nginx 作为反向代理。
1. 安装 nginx
如果 nginx 尚未安装,使用以下命令安装:
sudo apt update sudo apt install nginx -y
2. 配置 nginx
打开 nginx 配置文件并编辑反向代理设置:
sudo nano /etc/nginx/sites-available/default
在 server
块中,配置反向代理,将请求转发到 python 应用所在的端口(假设 python 应用运行在 8000 端口):
server { listen 80; server_name your_domain_or_ip; location / { proxy_pass http://127.0.0.1:8000; # 将请求转发到 python 应用 proxy_set_header host $host; proxy_set_header x-real-ip $remote_addr; proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; proxy_set_header x-forwarded-proto $scheme; } }
保存并退出编辑器。
3. 测试 nginx 配置
执行以下命令测试 nginx 配置是否正确:
sudo nginx -t
如果配置正确,输出应该显示 syntax is okay
和 test is successful
。
4. 重新加载 nginx
重新加载 nginx 以应用配置:
sudo systemctl reload nginx
七、设置系统服务(可选)
为了确保 python 应用在系统重启后自动启动,你可以创建一个 systemd 服务文件。
1. 创建 systemd 服务文件
创建一个新的服务文件:
sudo nano /etc/systemd/system/python-app.service
添加以下内容:
[unit] description=python application after=network.target [service] user=your_user group=your_group workingdirectory=/path/to/your/app execstart=/path/to/your/app/myenv/bin/python3 /path/to/your/app/app.py restart=always [install] wantedby=multi-user.target
user
和group
:设置为运行应用程序的用户和组。workingdirectory
:指向应用程序的目录。execstart
:指向 python 虚拟环境中的 python 解释器和应用程序入口。
2. 重新加载 systemd 配置并启动服务
sudo systemctl daemon-reload sudo systemctl start python-app.service sudo systemctl enable python-app.service
3. 检查服务状态
sudo systemctl status python-app.service
确认应用程序是否在后台运行并监听正确的端口。
八、配置防火墙
如果你的服务器启用了防火墙(例如 ufw),确保允许 http(80 端口)和你的应用程序使用的端口(例如 8000)通过防火墙:
sudo ufw allow 80 sudo ufw allow 8000
九、测试部署
在部署完成后,访问你配置的服务器域名或 ip 地址,检查 python 应用是否通过 nginx 正常提供服务。
十、总结
通过本教程,我们成功地在 ubuntu 上部署了一个 python 应用,包括环境准备、依赖管理、配置反向代理、设置系统服务以及日志管理等步骤。这种部署方式非常适合生产环境,能够确保应用程序在系统重启后自动启动,并且能够通过 nginx 处理高并发的外部请求。
以上就是在ubuntu上部署flask应用的流程步骤的详细内容,更多关于ubuntu部署flask应用的资料请关注代码网其它相关文章!
发表评论