liunx部署flask项目
如何在linux上部署flask项目 Python3.7 + virtualenv + uwsgi + git + mysql-5.6.45 + nginx
源码编译安装所需要的环境
yum install gcc
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
安装python3.7.3环境
cd /opt #进入opt目录
mkdir subpack # 创建一个安装包存放的目录(目录名随便起)
cd subpack # 进入到创建的这个目录下
wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tar.xz # 下载python
xz -d Python-3.7.3.tar.xz # 解压
tar -xf Python-3.7.3.tar # 解压
cd Python-3.7.3 # 进入安装包目录
./configure --prefix=/opt/python37/ # 编译第一步,并指定python的安装路径
make # 编译第二步
make install # 编辑第三步
echo $PATH # 取出当前环境变量
vim /etc/profile # 编辑全局配置文件
PATH=”/opt/python37/bin: {$PATH}” # 把当前PATH写入到文件最后一行,并保存退出
source /etc/profile # 读取配置文件,加载变量生效
python3 # 进入python3编辑
exit() # 退出python编辑
安装Virtualenv虚拟环境,进入虚拟环境后再安装uwsgi 和项目依赖包
pip3 install --upgrade pip # 更新pip
pip3 install virtualenv # 安装virtualenv
cd /opt # 进入/opt
virtualenv venv # 创建名为venv的虚拟环境
source venv/bin/activate # 进入venv的虚拟环境
pip3 install uwsgi # 安装uwsgi
pip3 install /项目目录下/requirements.txt # 安装项目的依赖包
deactivate # 退出当前虚拟环境
安装git
yum install git # 安装的是旧版本的git
安装mysql
rpm -qa|grep -i mysql # 查询是否安装过mysql
rpm -ev Mysql服务 # 如果查询到了就先清除mysql服务
find / -name mysql # 查询mysql目录
rm -rf /mysql目录 # 删除掉mysql目录
rm -rf /etc/my.cnf # 删除掉mysql启动配置文件
cd /usr/local/ # 进入目录
mkdir mysql # 创建mysql文件夹
cd mysql # 进入该目录下
wget https://downloads.mysql.com/archives/get/p/23/file/MySQL-server-5.6.45-1.el7.x86_64.rpm # 下载文件
wget https://downloads.mysql.com/archives/get/p/23/file/MySQL-client-5.6.45-1.el7.x86_64.rpm # 下载文件
chmod 777 MySQL-server-5.6.45-1.el7.x86_64.rpm # 授权
chmod 777 MySQL-client-5.6.45-1.el7.x86_64.rpm # 授权
//注:--nodeps --force 表示不检查依赖
rpm -ivh MySQL-server-5.6.45-1.el7.x86_64.rpm --nodeps –force # 编译安装
rpm -ivh MySQL-client-5.6.45-1.el7.x86_64.rpm --nodeps –force # 编译安装
service mysql start # 启动mysql服务
vi /root/.mysql_secret # 查看默认密码
mysql -uroot -p 默认密码 # 进入数据库
use mysql; # 进入mysql库,会提示你必须先修改密码
select host,user from user; # 查询用户表
// 默认只允许本机连接,非必要不用配置
update user set host=’%’ where user=’root’ and host=’localhost’; # 授权所有用户访问
flush privileges; # 刷新权限
exit # 退出数据库
安装nginx
cd /usr/local # 进入目录
mkdir nginx # 创建nginx文件目录
cd nginx # 进入该目录
wget http://nginx.org/download/nginx-1.13.7.tar.gz # 下载nginx的tar包
tar -xvf nginx-1.13.7.tar.gz # 解压缩
cd nginx-1.13.7 # 进入到nginx解压后的安装包
//编译第一步:执行命令,考虑到后续安装ssl证书 添加两个模块
./configure --with-http_stub_status_module --with-http_ssl_module
make # 编译第二步
make install # 编译第三步
启动uwsgi
cd 项目目录下 # 进入项目目录
touch uwsgi.ini # 在项目目录下创建文件
touch uwsgi.pid
touch uwsgi.log
touch uwsgi.status
vim uwsgi.ini # 编辑文件
[uwsgi]
socket=127.0.0.1:9001 # 并非 flaskrun的端口,而是内部tcp通讯的端口
chmod-socket=662
wsgi-file=/项目目录/run_server.py # 指定项目启动文件
callable=app_server # app_server = Flask(__name__),这里的app_server
touch-reload=/项目目录/
master=true
processes=4 # 进程数不要大于服务器的核心数
threads=20 # 每个进程可以有多少个线程
virtualenv=/opt/venv/ # 指定应用的虚拟环境
vacuum=true
thunder-lock = True # 防止惊群
daemonize = /项目目录/uwsgi.log
pidfile = /项目目录/uwsgi.pid
# harakiri = 60 # 超时时间
uwsgi --ini uwsgi.ini # 启动
uwsgi --reload uwsgi.pid # 重启
uwsgi --stop uwsgi.pid # 关闭
启动nginx
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf # 启动nginx服务,也可以像python一样加入环境变量
vi /usr/local/nginx/conf/nginx.conf # 编辑nginx配置
server {
listen 9000; # 随便找个未被占用的端口
server_name localhost; # 将localhost修改为你服务器的公网ip地址
charset utf-8;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:9001; # uwsgi.ini 文件中的IP与端口
}
}
/usr/local/nginx/sbin/nginx -s reload # 重启nginx服务
若想使用外部主机访问nginx,需要关闭服务器防火墙或开放nginx服务端口,端口为nginx.conf的配置端口
centOS7关闭防火墙命令: systemctl stop firewalld.service
关闭防火墙会导致服务器有一定风险,所以建议是单独开放服务端口
查询端口号80 是否开启:firewall-cmd --query-port=80/tcp
开放80端口:firewall-cmd --zone=public --add-port=80/tcp --permanent
重启防火墙:firewall-cmd --reload # 重启服务之后才能生效
收回开放的80端口:firewall-cmd --zone=public --remove-port=80/tcp --permanent
查看所有开放的端口:firewall-cmd --zone=public --list-ports
# 重启项目
cd /home/bom_system/ # 进入项目目录
source /opt/venv/bin/activate # 进入虚拟环境
uwsgi --reload uwsgi.pid # 重启uwsgi
nginx -s reload # 重启nginx
liunx部署flask项目的更多相关文章
- 部署Flask项目到腾讯云服务器CentOS7
部署Flask项目到腾讯云服务器CentOS7 安装git yum install git 安装依赖包 支持SSL传输协议 解压功能 C语言解析XML文档的 安装gdbm数据库 实现自动补全功能 sq ...
- CentOS 下部署Nginx+Gunicorn+Supervisor部署Flask项目
原本之前有一部分东西是在Windows Server,但是由于Gunicorn不支持Windows部署起来颇为麻烦.最近转战CentOS,折腾一段时间,终于简单部署成功.CentOS新手,作为一个总结 ...
- 通过Nginx部署flask项目
用Flask开发之后,很多人,喜欢用nohup python manage.py & 这样的形式,放到后台运行,其实这样只是个发开模式,很简陋,无法支持并发,进程监控等功能.所以采用nginx ...
- 使用Nginx和uwsgi部署Flask项目
前言 之前用Flask框架开发了一个Python的Web项目,使用Nginx和uWSGI部署起来感觉挺麻烦,过程中还因为对Flask框架的不熟悉,花了好长时间才把应用完全部署起来.下面分享部署成功 ...
- 通过IIS部署Flask项目
本文主要介绍在Windows Server 2012R2上通过IIS部署Flask项目的过程,以及对TTFB延迟大问题的思考.关于如何申请云服务器,注册(子)域名,备案,开放云服务器端口,获取SS ...
- 通过VM虚拟机安装Ubuntu server部署flask项目
1. VM安装Ubuntu server 14.04,系统安装完成后,首先安装pip工具方便之后的包安装,此处需先使用 apt-get install update,apt-get install u ...
- CentOS 下用 Nginx 和 uwsgi 部署 flask 项目
前几天利用flask 写了几个调用salt-api 的接口,需要上线到正式环境,搜了一下 都是 用 nginx + uwsgi 来部署,这里记录下关键的配置项. 1.首先将代码上传到服务器上目录为: ...
- 使用gunicorn部署Flask项目
[*] 本文出处:http://b1u3buf4.xyz/ [*] 本文作者:B1u3Buf4 [*] 本文授权:禁止转载 从自己的博客移动过来. gunicorn是一个python Wsgi的WEB ...
- centOS+uwsgi+nginx 部署flask项目,问题记录
用flask做的项目想要部署到centOS系统上,填了一些坑,终于成功了,记录一下遇到的问题: 此次部署主要是按照这个博客进行的 https://www.cnblogs.com/Ray-liang/p ...
- centos服务器部署flask项目。
已安装的环境nginx,python3,mysql,uwsgi,virtualenv 1,创建虚拟环境 virtualenv -p python3 myblog 2,进入虚拟环境 source myb ...
随机推荐
- 【Direct3D 12】学习准备
学习资料 微软官方文档地址: https://docs.microsoft.com/en-us/windows/win32/direct3d12/direct3d-12-graphics 左下角可以根 ...
- shell脚本程序的撰写
一.让我们浏览一下整体步骤第一步,你要先用ll命令来列出该目录中都包含那些文件(目的是为了防止文件重名不利于查找等等).第二步 ,使用命令touch来建立一个shell脚本文件 , 后缀名为.sh : ...
- wpa_supplicant 交叉编译
交叉编译 wpa_supplicant 指定交叉编译环境: CC=arm-linux-xxxxx-gcc 运行错误 : wlan0: Unsupported driver 'nl80211' 在.c ...
- springboot中实现逆向工程
如果这篇文章能给你带来帮助 不胜荣幸,如果有不同的意见也欢迎批评指正,废话不多说直接上代码.(参考文档:https://www.cnblogs.com/kibana/p/8930248.html) 第 ...
- iOS 静态库与动态库的区别
静态库相关命令 查看静态库架构 lipo -info ***.a 合并两个不同架构的库 lipo -create **.a **.a -output hecheng.a
- echarts地图上的坐标更换为自定义的图标
ECharts 是一个开源的数据可视化库,支持多种图表类型,包括地图.在 ECharts 地图中,可以通过自定义的方式来更换坐标点的图标. 下面是一些实现自定义坐标图标的步骤: 首先,你需要准备自定义 ...
- CTreeView和CTreeCtrl的使用方法(转)
(一)树控制的主要功能 树控制和视(Tree Control&View)主要用来显示具有一定层次结构的数据项,如资源管理器中的磁盘目录等,以供用户在其中进行各种选择.树控制中的每个数据项包括数 ...
- apollo源码同时兼容mysql、postgresql、oracle解决思路
本文摘录 apollo源码采用的是jpa规范 Hibernate 进行持久化的ORM框架 解决思路: 思路一:使用jpa配置文件persistence.xml文件,根据使用的数据库动态加载实体类与数据 ...
- 2022-03-02 关于 react-native 如何使用 react-native-image-crop-picker
前言:react-native项目(下称rn)中需要用到图片裁剪.从相册取照片以及调用手机相机,主要用到这个插件react-native-image-crop-picker. 安装: yarn add ...
- mybatis-plus 时间查询
QueryWrapper userquery= new QueryWrapper<>(); user.and(true,wrapper -> wrapper.ge("CRE ...