国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

在阿里云服務器上配置CentOS+Nginx+Python+Flask環境

2019-11-25 16:43:13
字體:
來源:轉載
供稿:網友

項目運行環境

阿里云(單核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服務已經啟動起來了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 克拉玛依市| 鹿泉市| 谢通门县| 东兴市| 东海县| 新泰市| 江城| 信宜市| 枣强县| 铜鼓县| 林口县| 龙陵县| 西乌珠穆沁旗| 叶城县| 米泉市| 三都| 郁南县| 永城市| 南投县| 肇州县| 元氏县| 浑源县| 涞水县| 探索| 梓潼县| 日照市| 怀来县| 元朗区| 武陟县| 特克斯县| 龙州县| 大同县| 丹寨县| 太仆寺旗| 民县| 博罗县| 开封市| 叶城县| 军事| 利辛县| 福海县|