天天看點

從0開始在騰訊雲上部署一個 flask 項目1. 前言2. 配置流程3. 效果

  • 前言
  • 配置流程
    • 1 添加個人賬戶
    • 2 為個人賬戶添加sudo 權限
    • 3 添加科大的鏡像源
    • 4 添加 python 和 pip
    • 5 安裝 lnmpa 內建開發環境
    • 6 gunicorn安裝
    • 7 flask 安裝
    • 8 virtualenv 使用
    • 9 從倉庫下載下傳 flask 工程檔案
    • 10 運作工程項目
    • 11 配置nginx 伺服器腳本
    • 12 防火牆設定
    • 13 mysql 配置
  • 效果

1. 前言

今天騰訊雲伺服器終于批下來了, 喜大普奔啊!!!!因為我們需要使用它來搭建自己的網站, 是以趕緊配置一下

項目釋出位址: http://115.159.144.61:8001/

個人網站:http://www.zhyh2010.cn

2. 配置流程

2.1 添加個人賬戶

參考資料: [linux使用者管理(1)—-建立使用者(adduser和useradd)和删除使用者(userdel)]

主要指令:

ps: adduser 會預設建立使用者的主檔案夾

adduser zhyh2010 
passwd zhyh2010
           

(http://blog.csdn.net/beitiandijun/article/details/41678251)

從0開始在騰訊雲上部署一個 flask 項目1. 前言2. 配置流程3. 效果

2.2 為個人賬戶添加sudo 權限

參考資料: Centos 添加sudo使用者(把普通使用者設定為sudoer)

主體流程:

login in root user.
終端執行 visudo。這個指令是打開 /etc/sudoer檔案。
在這個檔案的末尾添加    username    ALL=(ALL)    ALL    然後 ZZ
login in your username.
sudo yum update.//for test
           
從0開始在騰訊雲上部署一個 flask 項目1. 前言2. 配置流程3. 效果

2.3 添加科大的鏡像源

參考資料: Centos鏡像使用幫助

從0開始在騰訊雲上部署一個 flask 項目1. 前言2. 配置流程3. 效果

2.4 添加 python 和 pip

參考資料: CentOS6.5上安裝Python2.7和PIP

從0開始在騰訊雲上部署一個 flask 項目1. 前言2. 配置流程3. 效果

2.5 安裝 lnmpa 內建開發環境

參考資料: LNMPA 一鍵安裝

從0開始在騰訊雲上部署一個 flask 項目1. 前言2. 配置流程3. 效果

2.6 gunicorn安裝

參考資料: Installation

pip install gunicorn
           
從0開始在騰訊雲上部署一個 flask 項目1. 前言2. 配置流程3. 效果

2.7 flask 安裝

參考資料: Installation

pip install flask
pip install virtualenv
           

2.8 virtualenv 使用

參考資料: Installation

$ mkdir myproject
$ cd myproject
$ virtualenv venv
$ . venv/bin/activate
           

2.9 從倉庫下載下傳 flask 工程檔案

  1. git 操作, 當然也可以直接用filezila 将工程傳遞上去
  2. 注意這裡需要同時安裝 工程相關的依賴插件 flask-login 之類的
    • 需要特别注意的是, 使用

      pip install xxx

      sudo pip install xxx

      的效果是不一樣的, 由于我們最終使用sudo運作, 是以, 這裡所有依賴的插件都應該使用

      sudo pip

      進行安裝, 否則運作錯誤
      從0開始在騰訊雲上部署一個 flask 項目1. 前言2. 配置流程3. 效果
      從0開始在騰訊雲上部署一個 flask 項目1. 前言2. 配置流程3. 效果

2.10 運作工程項目

1.這裡使用gunicorn 啟動工程

gunicorn -D -w  -b : application:app
           

2.這裡說明一下:

- D 表示背景運作

- w 表示有3 個 工作線程(感覺有些類似 nginx 的 master-worker 模型)

- b 指定ip 和端口

- 這裡采用本機通路, 主要是為了使用nginx 進行代理, 友善管理

- application 表存放 寫着全局變量 app 的那個工程檔案夾

- 在我們的這個工程中, 即包含 init.py 的那個檔案

- app 為全局變量 (

app = Flask(__name__)

- ps: 在下面圖示檔案夾中運作 gunicorn 指令

從0開始在騰訊雲上部署一個 flask 項目1. 前言2. 配置流程3. 效果

3.參考資料: Docs » Running Gunicorn

從0開始在騰訊雲上部署一個 flask 項目1. 前言2. 配置流程3. 效果

2.11 配置nginx 伺服器腳本

  1. 安裝完的nginx 在

    /usr/local/nginx

    目錄下, 我們可以找到

    conf

    檔案夾下的

    nginx.conf

    檔案, 将其修改
    從0開始在騰訊雲上部署一個 flask 項目1. 前言2. 配置流程3. 效果
  2. 添加nginx 需要監聽的端口資訊
server {
    listen ;
    server_name instagram.zhyh2010.com;
    location /{
        proxy_pass http://127.0.0.1:8000;
    }
}
           

實際上, 我們将外部通過 8001 端口發送過來的請求, 代理給了

127.0.0.1:8000

也就是我們的 flask 項目

從0開始在騰訊雲上部署一個 flask 項目1. 前言2. 配置流程3. 效果

2.12 防火牆設定

  1. 參考資料:
    • 解決 RHEL 7/ CentOS 7/Fedora 出現Unit iptables.service failed to load
    • centOS防火牆中端口的開啟和關閉
    • linux 中防火牆配置 iptables 指令參數的含義介紹
  2. 防火牆設定資訊
    從0開始在騰訊雲上部署一個 flask 項目1. 前言2. 配置流程3. 效果

    可以看到 我們的8000, 8001 端口都是開放的, 但是 8000 端口上沒有程式監聽 (我們的程式隻監聽本機的 8000 端口)

    而 8001 端口是通過 nginx 監聽的。

  3. 端口監聽資訊
    從0開始在騰訊雲上部署一個 flask 項目1. 前言2. 配置流程3. 效果

2.13 mysql 配置

  1. 我們突然想要擴充程式的功能, 為他添加一個爬蟲程式, 這裡設想的是, 爬蟲程式将爬取到的資料存儲到對應的資料庫表中, 即可實作自動發圖功能, 因而不在使用sqlite 資料庫。
    從0開始在騰訊雲上部署一個 flask 項目1. 前言2. 配置流程3. 效果
  2. 安裝 mysqldb
    yum install python-devel mysql-devel
    pip install python-mysql==
               

    出現問題

    參考文章: http://stackoverflow.com/questions/5178292/pip-install-mysql-python-fails-with-environmenterror-mysql-config-not-found

  3. 從0開始在騰訊雲上部署一個 flask 項目1. 前言2. 配置流程3. 效果

    參考資料: http://www.linuxdiyf.com/viewarticle.php?id=75335

    不過應該采用

/etc/init.d/mysql restart
           

3. 效果

項目釋出位址: http://115.159.144.61:8001/

顯示效果:

從0開始在騰訊雲上部署一個 flask 項目1. 前言2. 配置流程3. 效果