1. Git客户端

Win10安装git for windows

1.1 设置Git全局参数

打开Git Bash

$ git config --global user.name "Alice-HomePC"
$ git config --global user.email "alice@gmail.com"
复制代码

1.2 生成SSH Key

打开Git Bash,可使用-C选项指定公钥的说明信息

$ ssh-keygen -t rsa -C "Alice-HomePC"
复制代码

一直回车确认即可,秘钥对默认保存在C:\Users\你的Win10用户名\.ssh目录下,其中id_rsa是私钥(Private Key),要小心保管;id_rsa.pub是公钥(Public Key),待会要上传到VPS上,实现基于SSH无密码登录VPS。同理,如果你在Github或Coding上有代码仓库,也是先要将公钥上传过去,才能无密码使用Git命令操作远程仓库。

2. 配置VPS

2.1 修改主机名

# hostnamectl set-hostname CentOS
或者:
# vi /etc/hostname
# hostnamectl
复制代码

重新登录.

2.2 修改SSH端口

# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
# vi /etc/ssh/sshd_config
将默认22端口改为你指定的, 例如
Port 12345# systemctl restart sshd
复制代码

2.3 禁用SSH密码认证,改为秘钥认证

首先需要将步骤1中生成的公钥上传到服务器,可以使用xmanager套件中的xftp上传,假设上传到/root目录

1. 添加公钥
# cd /root
# mkdir ~/.ssh && chmod 700 ~/.ssh
# touch ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys
# cat id_rsa.pub >> ~/.ssh/authorized_keys2. 修改SSH配置文件
# vi /etc/ssh/sshd_config修改几处地方,最终内容如下:
# 禁用root登录
PermitRootLogin no
# 启用密钥验证
RSAAuthentication yes
PubkeyAuthentication yes
# 指定公钥数据库文件
AuthorizedKeysFile .ssh/authorized_keys
# 禁用密码验证
PasswordAuthentication no3. SSH重新加载配置文件
# systemctl reload sshd
复制代码

此时,Win10可以通过xshell,无密码登录VPS了,且只能使用私钥认证通过。

3. 安装Python3

CentOS-7.3默认安装的是Python-2.7, 我的Flask程序是基于Python3写的,所以要再安装Python3

1. 准备编译环境
# yum -y install gcc make readline-devel sqlite-devel openssl openssl-devel zlib*2. 编译安装
# wget -P /root http://python.org/ftp/python/3.6.4/Python-3.6.4.tar.xz
# tar xf Python-3.6.4.tar.xz
# cd Python-3.6.4/
# ./configure --prefix=/usr/local/python-3.6
# make && make install
# ln -s /usr/local/python-3.6/bin/python3.6 /usr/bin/python3
# ln -s /usr/local/python-3.6/bin/pip3.6 /usr/bin/pip3
复制代码

更改pip安装源为国内的源,比如aliyun

# mkdir ~/.pip
# vi ~/.pip/pip.conf添加内容如下:
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/[install]
trusted-host=mirrors.aliyun.com
复制代码

(可选)安装IPython

  • Home Page
  • GitHub Project
  • Installing Jupyter Notebook
1. pip方式安装(推荐), 该方式会有语法高亮等特性
# pip3 --version
# pip3 install --upgrade pip
# pip3 install ipython
# ln -s /usr/local/python-3.6/bin/ipython3 /usr/bin/ipython32. 编译安装
# tar xf ipython-0.13.1.tar.gz
# cd ipython-0.13.1/
# python3 setup.py install
# ln -s /usr/local/python-3.6/bin/ipython3 /usr/bin/ipython3
复制代码

4. 安装MongoDB

官方文档

1. 配置repo源
# vi /etc/yum.repos.d/mongodb-org-3.6.repo内容如下:
[mongodb-org-3.6]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc2. 安装并启动服务
# yum install -y mongodb-org
# systemctl start mongod.service
# systemctl enable mongod.service
复制代码

5. Git服务端

1. 安装
# yum install -y git2. 创建裸仓库
# mkdir /home/git && cd /home/git
# git init --bare flask_project.git
复制代码

我在Win10上已经开发好了Flask程序,待会上传到此git仓库中,应用程序代码准备部署到/home/www/flask_project,并通过git的hooks当客户端每次提交代码后,自动同步仓库中的代码到应用部署的位置 Simple automated GIT Deployment using GIT Hooks

1. 创建代码部署目录
# mkdir -pv /home/www/flask_project2. 创建hooks
# vi /home/git/flask_project.git/hooks/post-receive内容如下:
#!/bin/bash
TRAGET="/home/www/flask_project"
GIT_DIR="/home/git/flask_project.git"
BRANCH="master"while read oldrev newrev ref
do# only checking out the master (or whatever branch you would like to deploy)if [[ $ref = refs/heads/$BRANCH ]];thenecho "Ref $ref received. Deploying ${BRANCH} branch to production…"git --work-tree=$TRAGET --git-dir=$GIT_DIR checkout -felseecho "Ref $ref received. Doing nothing: only the ${BRANCH} branch may be deployed on this server."fi
done3. 赋权
# chmod +x /home/git/flask_project.git/hooks/post-receive
复制代码

6. 上传代码

打开Git Bash,准备把服务器上的flask_project.git仓库(目前为空)克隆下来。Git默认使用SSH协议且端口22,由于我们刚修改了服务器的SSH端口,所以克隆时要指定修改后的端口号

6.1 克隆远程仓库

**方法1: **

$ git clone ssh://root@VPS的IP或域名:VPS的SSH端口号//home/git/flask_project.git
复制代码

**方法2: ** 在Win10保存SSH秘钥对的目录下创建配置文件 C:\Users\你的Win10用户名\.ssh\config

host VPS的IP或域名
port VPS的SSH端口
复制代码

然后执行克隆命令:

$ git clone root@VPS的IP或域名:/home/git/flask_project.git
复制代码

6.2 提交代码

克隆后会在当前目录下生成 flask_project 目录,把开发好的flask代码拷贝到这里面,并指定哪些文件不提交到git仓库,在git bash中运行:

$ cd flask_project
$ vi .gitignore
比如我的规则:
.idea/
__pycache__/
uploads/
venv3/
复制代码

提交代码:

$ git add .
$ git commit -m "initial"
$ git push
复制代码

你会发现/home/www/flask_project目录下会自动拷贝git仓库中master分支的最新代码过来。

7. 调试程序

7.1 准备virtualenv环境

# pip3 install virtualenv
# ln -s /usr/local/python-3.6/bin/virtualenv /usr/bin/virtualenv
# cd /home/www/flask_project
# virtualenv --no-site-packages --python=/usr/bin/python3 venv3
复制代码

7.2 安装相关python包

# source venv3/bin/active
(venv3)# pip install flask
依次安装完所有的依赖包后,
(venv3)# pip freeze > requirements.txt
复制代码

7.3 测试用Flask自带的服务器能否运行

(venv3)# python manage.py runserver -h 0.0.0.0 -p 80
复制代码

如果你能通过VPS的IP正常访问Flask应用,那么就可以进行下一步,使用Gunicorn替代Flask自带的开发服务器

8. Gunicorn

  • 官网
  • 文档

8.1 安装

(venv3)# pip install gunicorn
复制代码

8.2 创建包含应用入口app的模块文件

一般我们开发时,都是使用manage.py,里面有flask-script方便调试,生产环境要再创建一个模块,比如:

# vi wsgi.py内容如下:
import osfrom app import create_app###
# 调用工厂函数,初始化Flask程序实例,默认使用生产环境配置
###
app = create_app(os.getenv('FLASK_CONFIG') or 'production')if __name__ == "__main__":app.run(host='0.0.0.0')
复制代码

那么使用gunicorn命令行来启动Flask非常简单:

(venv3)# gunicorn -w 3 wsgi:app -b 0.0.0.0:80
说明:
-w 3 是启用3个进程,建议是CPU核数*2 + 1
wsgi:app 其中wsgi代表当前目录下的wsgi.py模块,后面的app代表wsgi.py模块里面的Flask应用app
复制代码

如果你能通过VPS的IP正常访问Flask应用,那么通过指定gunicorn配置文件来启动Flask,比如:

# mkdir deploy
# vi deploy/gunicorn.conf.py内容如下:
import multiprocessing# bind = '127.0.0.1:8001'
bind = 'unix:/run/gunicorn.sock'
workers = multiprocessing.cpu_count() * 2 + 1
# daemon = True
pidfile = '/run/gunicorn.pid'
loglevel = 'info'
errorlog = '/tmp/gunicorn-error.log'
accesslog = '/tmp/gunicorn-access.log'
access_log_format = '%(h)s %(l)s %(u)s %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s"'
复制代码

更详细的配置可以参考Gunicorn官方示例

那么,此时启动Flask变成:

(venv3)# gunicorn wsgi:app -c deploy/gunicorn.conf.py
复制代码

**想查看完整的内容,请访问我的个人博客: www.madmalls.com/blog/post/d… **

CentOS7部署Flask+Gunicorn+Nginx+Supervisor相关推荐

  1. CentOS docker 部署 flask + uWSGI + Nginx + Supervisor错误

    我用Superviso 启动 Nginx 和 uwsgi Superviso配置如下: Nginx 简单配置: 启动的效果: 启动Nginx的错误日志: 一直提示我端口被占用 但是我 ps -aux ...

  2. Flask 应用部署方式之 Flask+Gunicorn+Nginx

    1. Why Flask+Gunicorn+Nginx Flask+Gunicorn+Nginx是最常用的Flask部署方案,大家深究过为何用这样的搭配么? 1.1 Why? Flask 是一个web ...

  3. [原创]智能化运维平台部署(gunicorn+nginx+gevent+supervisor部署flask+vue)

    2019年6月13日 前言 简要介绍一下,为小白普及基础知识,老司机请自行略过~ Flask本身带着 WSGI server,但是性能差强人意,自带的web server 更多的是测试用途.线上发布时 ...

  4. 【新手向】阿里云上ubuntu+flask+gunicorn+nginx服务器部署(二)项目部署

    本项目实现的是类似于ins的图片分享网站.继续(一),当nginx的配置已修改好后,要在远程服务器上部署网站,只需要几个步骤: 1 前期准备 2 将运行网站的代码从github上下载过来 3 下载依赖 ...

  5. python flask gunicorn nginx 部署

    WSGI协议 Web框架致力于如何生成HTML代码,而Web服务器用于处理和响应HTTP请求.Web框架和Web服务器之间的通信,需要一套双方都遵守的接口协议.WSGI协议就是用来统一这两者的接口的. ...

  6. python web开发c6——阿里云上ubuntu+flask+gunicorn+nginx服务器部署(一)简单测试

    简述 Nginx在服务器部署中的作用 请求通过Nginx实现反向代理,将请求提交给代理服务器.本文中只用了一台服务器,所以是代理到本机. gunicorn的作用 作为服务器代码的容器.接收Nginx的 ...

  7. Linux中 Nginx+uwsgi部署flask项目 Nginx负载均衡 反向代理

    Nginx是一款自由的.开源的.高性能HTTP服务器和反向代理服务器. 轻量级,同样起web服务,比 apache占用更少的内存及资源 抗并发, nginx处理请求是异步非阻塞的,而 apache则是 ...

  8. 【flask】适合生产环境的高并发部署方案(gunicorn + gevent + supervisor)

    文章目录 1.安装docker镜像 2.查看alphin版本 3.更换alpine源 4.更换pip源 5.安装requirements.txt 6.安装完成 7.启动flask应用 8.用gunic ...

  9. Flask+Gunicorn+Ngnix部署笔记

    1 前言 最近自己开发了一个基于Flask Web框架的小应用,用于对外服务.记录下将Web应用部署的步骤.采用比较常见的flask + gunicorn + nginx来部署. 其实我的环境很简单, ...

最新文章

  1. VS各种错误集成总结,持续更新
  2. python经典例题图形_Python 入门经典100实例:实例23 菱形
  3. Linux下启动和关闭Oracle数据库的方法
  4. Qt删除 空格/空白符
  5. 计算机类说课比赛视频,全国“xx杯”计算机类说课大赛课件一等奖作品:制作逐帧动画说课课件...
  6. 安卓学习笔记13:安卓触摸事件
  7. 今天我的MSN提示升级了
  8. Java虚拟机学习总结(3)——JDK内置工具(jps、jstack、jmap、jstat)使用详解
  9. python的raw_对于Python中RawString的理解(引用)
  10. 全国计算机等级考试二级cpp试题,全国高校计算机等级考试(二级C)模拟试题全套.doc...
  11. 软件测试简历常见问题
  12. vue中模拟试卷出题,
  13. postman设置成中文
  14. ubi ubifs学习笔记
  15. 基站、WiFi、IP定位原理介绍与区别
  16. 如何查看本机是否支持IPv6?
  17. 卫健委:2020年基本建立较完善的三级公立医院绩效考核体系
  18. 游戏感:虚拟感觉的游戏设计师指南——第一章 定义游戏感
  19. 秉火429笔记之十七 SPI--操作FLASH
  20. WELL HSR找标识行动起航 - 跨行业国际明星巨匠为“WELL 健康-安全评价”代言

热门文章

  1. 学习响应式BootStrap来写融职教育网站,Bootsrtap第七天PC端轮播图
  2. core-js@2 core-js@3报错问题
  3. Virtual DOM和diff算法 概念理解
  4. 编译Caffe-Win错误集锦
  5. 2009编程语言排名
  6. mysql数据库优化课程---13、mysql基础操作
  7. linux下tomcat部署
  8. ipconfig /flushdns 解释
  9. CNKI中银屑病、大肠菌群、内毒素LPS(调研手稿三)
  10. 鼻塞用鼻喷剂-调研(成分+刺激性)