如何在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项目的更多相关文章

  1. 部署Flask项目到腾讯云服务器CentOS7

    部署Flask项目到腾讯云服务器CentOS7 安装git yum install git 安装依赖包 支持SSL传输协议 解压功能 C语言解析XML文档的 安装gdbm数据库 实现自动补全功能 sq ...

  2. CentOS 下部署Nginx+Gunicorn+Supervisor部署Flask项目

    原本之前有一部分东西是在Windows Server,但是由于Gunicorn不支持Windows部署起来颇为麻烦.最近转战CentOS,折腾一段时间,终于简单部署成功.CentOS新手,作为一个总结 ...

  3. 通过Nginx部署flask项目

    用Flask开发之后,很多人,喜欢用nohup python manage.py & 这样的形式,放到后台运行,其实这样只是个发开模式,很简陋,无法支持并发,进程监控等功能.所以采用nginx ...

  4. 使用Nginx和uwsgi部署Flask项目

    前言   之前用Flask框架开发了一个Python的Web项目,使用Nginx和uWSGI部署起来感觉挺麻烦,过程中还因为对Flask框架的不熟悉,花了好长时间才把应用完全部署起来.下面分享部署成功 ...

  5. 通过IIS部署Flask项目

      本文主要介绍在Windows Server 2012R2上通过IIS部署Flask项目的过程,以及对TTFB延迟大问题的思考.关于如何申请云服务器,注册(子)域名,备案,开放云服务器端口,获取SS ...

  6. 通过VM虚拟机安装Ubuntu server部署flask项目

    1. VM安装Ubuntu server 14.04,系统安装完成后,首先安装pip工具方便之后的包安装,此处需先使用 apt-get install update,apt-get install u ...

  7. CentOS 下用 Nginx 和 uwsgi 部署 flask 项目

    前几天利用flask 写了几个调用salt-api 的接口,需要上线到正式环境,搜了一下 都是 用 nginx + uwsgi 来部署,这里记录下关键的配置项. 1.首先将代码上传到服务器上目录为: ...

  8. 使用gunicorn部署Flask项目

    [*] 本文出处:http://b1u3buf4.xyz/ [*] 本文作者:B1u3Buf4 [*] 本文授权:禁止转载 从自己的博客移动过来. gunicorn是一个python Wsgi的WEB ...

  9. centOS+uwsgi+nginx 部署flask项目,问题记录

    用flask做的项目想要部署到centOS系统上,填了一些坑,终于成功了,记录一下遇到的问题: 此次部署主要是按照这个博客进行的 https://www.cnblogs.com/Ray-liang/p ...

  10. centos服务器部署flask项目。

    已安装的环境nginx,python3,mysql,uwsgi,virtualenv 1,创建虚拟环境 virtualenv -p python3 myblog 2,进入虚拟环境 source myb ...

随机推荐

  1. MySql创建高性能的索引

    创建高性能的索引1.树 减少数据的查询次数二叉树 平衡树 b树 节点存储key和datab+树 节点只存储key 叶子节点存储data innodb使用b+树 当页最大16kb可以存储1000个key ...

  2. Java 8 在使用内存爆了以后会发生什么?hs_err_pid 日志如何看?

    问题: Java进程被终止了,然后在应用的目录中发现了hs_err_pid日志. 运维反馈,结论是内存不够了 之前一直运行没有问题,没什么新增访问量,为什么会内存溢出,进程被killer掉类? 1.第 ...

  3. Python中的__new__()方法

    1.__new__()至少要有一个参数cls,代表当前类,此参数在实例时由python解释器自动识别, 2.__new__()必须要有返回值,返回实例化出来的实例,这点在自己实现__new__时要特别 ...

  4. SpringBoot代理图片、文件等路径

    在config文件夹下新增一个配置类即可 /** * @author cyl * @time 2022/10/25 */ @Configuration public class UrlConfig e ...

  5. Linux 下查看mysql 加载的配置文件, 并且解决报错 “this is incompatible with sql_mode=only_full_group_by”

    # 查看命令地址 which mysql /usr/local/mysql/bin/mysql # 查看配置文件地址 /usr/local/mysql/bin/mysql --verbose --he ...

  6. libvirtd升级

    如果对图形化界面没有诉求,能够使用命令行进行虚拟化相关操作,建议使用系统自 带的libvirt-4.5.0. 由于libvirt-4.5.0代码存在bug,所以在使用virt-manager时会触发一 ...

  7. PYTHON中的CONCURRENT.FUTURES模块

    一 : 概述 concurrent.futures模块提供了高度封装的异步调用接口 ThreadPoolExecutor:线程池,提供异步调用 ProcessPoolExecutor: 进程池,提供异 ...

  8. django项目 在进行数据生成迁移文件makemigrations时报Please select a fix:...

    问题:django项目 在进行生成迁移文件:python .\manage.py makemigrations时,报错,如图 原因:在之前项目新建模型的时候,缺少一个字段进行迁移了然后数据表中又产生了 ...

  9. dcat-admin在弹框中使用grid的编辑框不提示也不报错

    显示效果 #版本:2.1.5-beta #点击编辑时没有反应,其实它已经把编辑框显示出来了,只是在当前这个弹框的后面,我们看不见,这样你可以在自己的项目中把弹框挪开或在F12中html搜索应该显示的代 ...

  10. C++——第三方插件

    EasyX库安装教程 官网:https://easyx.cn/ 下载地址:EasyX Graphics Library for C++ 作品:CodeBus - 分享有趣的 C/C++ 代码 图中标注 ...