Flask项目部署到阿里云服务器(全网最清晰简单完整部署),linux命令和脚本文件 nginx安装到服务器等每一步清晰记录

2024-06-04 4455阅读

目录

一、获取免费阿里云服务

二、远程控制阿里云服务器

三、安装nginx(web服务器)

1. 更新系统软件包:

2. 安装EPEL存储库

3. 安装Nginx

4. 启动Nginx服务并设置开机自启

5. 验证Nginx安装

四、安装python虚拟环境

1.检查系统是否已安装Python3及其pip3:

2. 创建Python虚拟环境

3. 激活虚拟环境:

4. 安装项目所需Python包

5. 退出虚拟环境

五、导入项目文件

1. 确保虚拟环境已激活

2. 配置nginx

3. 确保flask项目中入口文件host='0.0.0.0'

4. 将本地flask项目文件(包括源代码、配置文件、静态资源等)复制到虚拟环境所在的目录下

5. 在虚拟环境中安装Gumicorn


一、获取免费阿里云服务器

没有服务器的话可以在阿里云获取免费服务器

阿里云-计算,为了无法计算的价值

二、远程控制阿里云服务器

本文使用的XShell7

三、安装nginx(web服务器)

在部署flask项目时候,因为flask是一个轻量级的Python Web框架,其本身并不包含一个成熟的Web服务器组件,而是依赖于内置的简易服务器(werkzeug)

1. 更新系统软件包:

sudo yum update

2. 安装EPEL存储库

sudo yum install epel-release

Flask项目部署到阿里云服务器(全网最清晰简单完整部署),linux命令和脚本文件 nginx安装到服务器等每一步清晰记录 第1张

3. 安装Nginx

sudo yum install nginx

Flask项目部署到阿里云服务器(全网最清晰简单完整部署),linux命令和脚本文件 nginx安装到服务器等每一步清晰记录 第2张

4. 启动Nginx服务并设置开机自启

sudo systemctl start nginx

为了让Nginx在系统启动时自动运行,执行:

sudo systemctl enable nginx

5. 验证Nginx安装

(1) 命令行检查Nginx服务状态:

sudo systemctl status nginx

Flask项目部署到阿里云服务器(全网最清晰简单完整部署),linux命令和脚本文件 nginx安装到服务器等每一步清晰记录 第3张

(2) 浏览器访问服务器的公共IP地址

Nginx默认监听在80端口,外部想使用nginx就需要云服务器开发80端口,在云服务器控制台的左侧导航栏找到安全组,点进安全组

Flask项目部署到阿里云服务器(全网最清晰简单完整部署),linux命令和脚本文件 nginx安装到服务器等每一步清晰记录 第4张

点进后:

Flask项目部署到阿里云服务器(全网最清晰简单完整部署),linux命令和脚本文件 nginx安装到服务器等每一步清晰记录 第5张

点击手动添加,授权策略:默认(允许);优先级默认:默认(1);协议类型:默认(TCP);端口: 80 ;授权对象:0.0.0.0/0。

表示允许所有外部IP地址访问,然后点击保存。

Flask项目部署到阿里云服务器(全网最清晰简单完整部署),linux命令和脚本文件 nginx安装到服务器等每一步清晰记录 第6张

如果不能访问,可能是防火墙的问题,关闭防火墙或者允许nginx端口。

四、安装python虚拟环境

1.检查系统是否已安装Python3及其pip3:

python3 --version
pip3 --version

Flask项目部署到阿里云服务器(全网最清晰简单完整部署),linux命令和脚本文件 nginx安装到服务器等每一步清晰记录 第7张

如果没有安装或版本过低:

sudo yum install python3 python3-devel python3-pip

2. 创建Python虚拟环境

在root目录下创建一个新的虚拟环境:

mkdir my_flaskProject
cd my_flaskProject
python3 -m venv my_venv

这里my_venv是虚拟机环境的名称,可以自己命名。

Flask项目部署到阿里云服务器(全网最清晰简单完整部署),linux命令和脚本文件 nginx安装到服务器等每一步清晰记录 第8张

3. 激活虚拟环境:

source my_venv/bin/activate

Flask项目部署到阿里云服务器(全网最清晰简单完整部署),linux命令和脚本文件 nginx安装到服务器等每一步清晰记录 第9张

激活后,命令行提示符前会显示虚拟环境的名字(my_venv),这表明当前正处于此虚拟环境中运行命令,此时安装的Python包将只在这个环境中生效,不会影响全局Python环境。

4. 安装项目所需Python包

在虚环境中,可以使用pip安装Flask和其他项目依赖:

pip install Flask
pip install -r requirements.txt  # 如果存在requirements.txt文件

5. 退出虚拟环境

完成开发或部署任务后,要退出当前虚拟环境,只需运行:

deactivate

五、导入项目文件

1. 确保虚拟环境已激活

如果未激活:

source /root/my_flaskProject/my_venv/bin/activate

可能会提示错误信息:Permission denied 表示当前没有足够的权限来执行 activate 脚本

Flask项目部署到阿里云服务器(全网最清晰简单完整部署),linux命令和脚本文件 nginx安装到服务器等每一步清晰记录 第10张

运行如下命令:

chmod +x /root/my_flaskProject/my_venv/bin/activate

赋予 activate 脚本执行权限

再次激活,前面出现(my_venv)激活成功!

2. 配置nginx

编辑Nginx的服务器配置文件,通常位于/etc/nginx/sites-available/目录下,如果没有sites-available这个目录,可按照如下进行配置:

打开/etc/nginx/nginx.conf文件,在http{...}块内添加

server {
  listen 80;  # 监听公网端口(此处为标准HTTP端口80)
  server_name your_domain.com;  # 替换为您的域名或公网IP
  
  location / {
  proxy_pass http://localhost:5000;  # 替换为项目实际监听的本地端口
  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;
  }
}

这段配置是告诉Nginx监听公网端口80,并将所有到此服务器的请求转发到本地端口8080(是你的python项目本地运行的端口)。同时设置了必要的代理头信息。

重启Nginx服务:

sudo systemctl restart nginx

检查配置和日志

nginx -t

3. 确保flask项目中入口文件host='0.0.0.0'

端口号为上述在nginx配置的项目实际监听的端口号。

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=True)

4. 将本地flask项目文件(包括源代码、配置文件、静态资源等)复制到虚拟环境所在的目录下

cp -r /path/to/your_project /root/my_flaskProject/my_venv/

设置环境变量:如果应用初始化在app.py文件中则:

export FLASK_APP=app.py

如果是其他文件,例如入口在myflask.py中则:

export FLASK_APP=myflask (去掉.py)

运行:flask run

netstat -tulpn | grep :5000

查看端口5000进程

杀***进程:kill -9 进程id

5. 在虚拟环境中安装Gumicorn

虚拟环境(如使用 virtualenv 或 conda 创建的环境)为项目提供了独立的Python运行环境。在其中安装Gunicorn和其他依赖,可以确保项目使用的是特定版本的软件包,避免与其他项目或系统全局包产生版本冲突。这样,每个Flask应用可以拥有自己的依赖集,易于管理和更新,且不会影响到服务器上其他应用程序。

pip install gunicorn

配置Gunicorn运行Flask应用: 创建一个Gunicorn启动脚本:

vim gunicorn_start.sh
#!/bin/bash
# 设置工作目录(这里替换成您的Flask应用所在的目录)
working_directory=" /root/my_flaskProject/my_venv/"
# 切换到工作目录
cd "$working_directory"
# 设置环境变量,如果适用
export FLASK_APP=myflask.py
export FLASK_ENV=production

# 启动Gunicorn,指定监听地址和端口,以及应用入口点

exec gunicorn --bind 0.0.0.0:5000 myflask:app

给启动脚本赋予权限:

chmod +x gunicorn_start.sh

启动Gunicorn服务:

./gunicorn_start.sh

成功后,可以查看进程

然后在nginx.conf配置(刚刚在导入项目时其实已经配置过...):

server {
		listen 80;  # 监听公网端口(此处为标准HTTP端口80)
		server_name 114.55.118.198;  # 替换为您的域名或公网IP
		location / {
			proxy_pass http://localhost:5000;  # 替换为项目实际监听的本地端口
			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;
			proxy_redirect off;
			proxy_buffering off;
			proxy_http_version 1.1;
			proxy_set_header Upgrade $http_upgrade;
			proxy_set_header Connection "upgrade";
			proxy_read_timeout 600s;
		}
	}

完成配置后,执行以下操作以检查配置文件的正确性并重启Nginx服务:

sudo nginx -t
sudo systemctl restart nginx

启动Gunicorn服务: 通过执行该脚本来启动Gunicorn服务:

Flask项目部署到阿里云服务器(全网最清晰简单完整部署),linux命令和脚本文件 nginx安装到服务器等每一步清晰记录 第11张

如果先前有运行的端口占用,杀***进程重新启动

打开公网地址!成功!


    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]