侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

在阿里云服务器上配置CentOS+Nginx+Python+Flask环境

Python  /  管理员 发布于 7年前   165

项目运行环境

阿里云(单核CPU, 1G内存, Ubuntu 14.04 x64 带宽1Mbps), 具体购买和ssh连接阿里云本文不做描述。

实用工具

首先进入阿里云后先要升级下apt-get, 并下载所需软件

sudo apt-get updatesudo apt-get install vim git wget tmux

我还会使用zsh和oh-my-zsh来替换bash

sudo apt-get install zsh# 终端下打以下命令wget --no-check-certificate https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh

替换bash为zsh

chsh -s /bin/zsh

重新连接阿里云就可以看到效果, 具体主题可以根据自己喜好更改主目录下的.zshrc即可

安装python相关模块

使用python的pip包管理工具

sudo apt-get install python-setuptoolssudo apt-get install python-pipsudo pip install python-virtualenv

在主目录下创建文件夹code并把所有项目放进这个目录里

mkdir code# 使用virtualenvvritualenv venv# 开启virtualenvsource /venv/bin/activate# 关闭virtualenvdeactivate# 在开启virtualenv的状态下使用pip会使用venv中的pip,也就是所有模块都会安装到venv中# 如果想要安装全局模块就使用sudo pip # 安装flask, 安装到venv中pip install flask# 两个是不同的, 安装到系统中sudo pip install flask

使用Flask

现在我们已经安装了Flask, 现在我们写一个小的程序来运行一下。
这里我们在一次安装flask的相关模块,并把他们写入到requirements.txt这个文件中。

# 安装flask的相关模块pip install -r requirements# 创建一个manage.py文件, 用作管理我们的应用, 然后创建我们的一个应用。touch manage.py## 创建一个叫bamboo的应用mkdir bamboo## 创建一个应用的文件, 接下来我们要编辑这个文件了。touch bamboo/__init__.py bamboo/app.py


项目目录结构是这样的

/root/code/├── bamboo│  ├── app.py│  ├── config.py│  ├── __init__.py│  ├── static│  ├── templates│  └── views├── gunicorn.conf├── logs│  ├── access.log│  ├── error.log│  ├── supervisord.log│  ├── supervisor_err.log│  └── supervisor_out.log├── manage.py├── requirements.txt├── run.py├── sweep.py└── venv

编辑bamboo/app.py和bamboo/views/main.py

## app.pyfrom flask import Flaskdef create_app():  app = Flask(__name__)  # do something  register_blueprints(app)  return app# 用来注册视图的路由def register_blueprints(app):  from bamboo.views import main, error  for i in (main, error):    app.register_blueprint(i.bp)## main.pyfrom flask import render_template, Blueprintbp = Blueprint('main', __name__)@bp.route('/')@bp.route('/index')def index():  return '<h1>Hello, Bamboo!</h1>'

安装Gunicorn

Gunicorn是一个wsgi服务器, 我们将通过它来启动我们的web服务。

# 注意我们是通过pip来安装,所以该模块所有文件都是在venv里面pip install gunicorn

可以进入目录vevn/bin下查看是否存在gunicorn命令

# 这里我们编辑下manage.py文件,具体文件路径请查看上文中的目录结构## manage.pyfrom bamboo.app import create_appfrom flask.ext.script import Manager, Server, Shellapp = create_app()manager = Manager(app)def make_shell_context():  # 用于shell使用  passmanager.add_command('shell', Shell(make_context=make_shell_context))manager.add_command('runserver', Server(  use_debugger=True,  use_reloader=True,  host='127.0.0.1',  port=5000))if __name__ == '__main__':  manager.run()

运行一下manage.py

# 不适用gunicorn运行python manage.py runserver# 使用gunicorn 运行# 这里需要注意一下, 冒号前面的是文件名也就是manage.py而后面的是应用的名称。我在这里载过跟头。因为服务器需要接受一个wsgi的应用而manager = Manager(app)不是一个wsgi应用所以报错gunicorn manage:app

我们创建一个gunicorn配置文件gunicorn.conf并把他放到code目录下

## gunicorn.confworkers=3bind='127.0.0.1:5000'

安装Nginx

我们通过nginx来反向代理我们的服务。

# 首先下载一个nginxsudo apt-get install nginx

我们可以访问我们的域名或IP地址,如果出现Nginx的提示就表示安装成功了。
nginx安装在/etc/nginx/目录下, 我们把项目的配置文件放到/etc/nginx/sites-available/

server{  listen 80;  server_name xxx.xxx.xxx.xxx;  # nginx log信息, 需要创建logs目录  access_log /root/code/logs/access.log  error_log /root/code/logs/error.log  location / {    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    proxy_set_header HOST $host;    proxy_redirect off;    if (!-f $request_filename){      proxy_pass http://127.0.0.1:5000;      break;    }  }}

需要创建一个软链接到/etc/nginx/sites-enabled/

# 这里bamoo只是文件名你也可以取自己的项目名称ln -s /etc/nginx/sites-available/bamboo /etc/nginx/sites-enabled/bamboo# 然后检查nginx有没有错误nginx -t # 重新启动服务service nginx restart安装Supervisorsupervisor用来监控进程,并在进程挂掉的时候自动重启它。# 这里需要把它安装到系统中sudo pip install supervisor# 生成配置文件sudo echo_supervisord_conf > /etc/supervisord.conf
# 编辑/etc/supervisord.conf,并在最后一行加入一下字段# 这样配置文件会将/etc/supervisor/conf.d下所有.conf结尾的都会导入进来[include]files = /etc/supervisor/conf.d/*.conf# 在创建一个配置文件到/etc/supervisor/conf.d/bamboo.conf[program:bamboo]command=/root/code/venv/bin/gunicorn manage:app -c /root/code/gunicorn.confdirectory=/root/code/user=rootautostart=trueautorestart=truestdout_logfile=/root/code/logs/supervisor_out.logstderr_logfile=/root/code/logs/supervisor_err.log

通过supervisorctl工具用来管理supervisor维护的进程

# reread来检测修改的配置内容, update来更新# 这样就可以看到bamboo的process启动了supervisorctl rereadsupervisorctl update # 也可以通过supervisorctl status 查看所有的项目进程bamboo  RUNNING  pid 12928, uptime 2:13:05

这样我们的web服务已经启动起来了。

您可能感兴趣的文章:

  • Flask框架响应、调度方法和蓝图操作实例分析
  • flask中使用蓝图将路由分开写在不同文件实例解析
  • Python的Flask框架中配置多个子域名的方法讲解
  • Python的Flask框架中SERVER_NAME域名项的配置教程
  • 在python的WEB框架Flask中使用多个配置文件的解决方法
  • Flask配置Cors跨域的实现
  • 解决python flask中config配置管理的问题
  • Python基于Flask框架配置依赖包信息的项目迁移部署
  • Flask框架配置与调试操作示例
  • flask框架配置mysql数据库操作详解
  • flask框架蓝图和子域名配置详解


  • 上一条:
    python3实现暴力穷举博客园密码
    下一条:
    Python中使用装饰器来优化尾递归的示例
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在python语言中Flask框架的学习及简单功能示例(0个评论)
    • 在Python语言中实现GUI全屏倒计时代码示例(0个评论)
    • Python + zipfile库实现zip文件解压自动化脚本示例(0个评论)
    • python爬虫BeautifulSoup快速抓取网站图片(1个评论)
    • vscode 配置 python3开发环境的方法(0个评论)
    • 近期文章
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • Laravel 11.15版本发布 - Eloquent Builder中添加的泛型(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2018-04
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2022-01
    • 2023-07
    • 2023-10
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客