騰訊雲部署Flask應用

 

因爲新浪雲如今難免費了。並且雲豆也用完了。因此去騰訊雲申請了個學生雲主機,一元一個月。html

不過部署開發環境仍是有點麻煩的,搞了好幾天,終於部署成功了!python

下面說部署過程:mysql

我雲主機用的是 Ubuntu 14.04.1 LTS系統,帶LNMP框架,Pyhon2.7(先是嘗試用centose6.5,可是一直由於python版本不對和mysql-python安裝失敗的問題,搞了很久沒有成功因此就換成Ubuntu了)nginx

mysql,nginx,這些都是安裝好了的。web

1.默認安裝好的mysql是沒有密碼的。因此先進安全模式把密碼改了:sql

# 啓動安全模式 /etc/init.d/mysql stop /usr/bin/mysqld_safe --skip-grant-tables >/dev/null 2>&1 /usr/bin/mysql -u root mysql # 進入mysql mysql> update user set password = Password('xxx') where User = 'root'; mysql> flush privileges; # 退出 mysql> exit();

 

而後建立數據庫:數據庫

create database blogapp default character set utf8

 

注:由於是個人博客搬遷,建立好數據庫以後還須要用腳本把數據導入(這個數據腳本是在新浪雲導出的)centos

 

2. 安裝Mysql-Python安全

sudo apt-get install python-setuptools sudo apt-get install libmysqld-dev sudo apt-get install libmysqlclient-dev sudo apt-get install python-dev sudo easy_install mysql-python # 順便把pip也裝上 sudo easy_install pip 

 

3. 安裝VirtualEnvbash

由於不一樣的項目會依賴不一樣的依賴包,爲了方便,把Python的虛擬環境 VirtualEnv也安裝上。VirtualEnv 能夠爲每一個Python應用建立獨立的開發環境,使他們互不影響

pip install virtualenv
# 建立虛擬環境 virtualenv pyFlask 

 

默認狀況下虛擬環境不會依賴系統環境的global site-packages。好比系統環境裏安裝了MySQLdb模塊,在虛擬環境裏import MySQLdb會提示ImportError。若是想依賴系統環境的第三方軟件包,可使用參數--system-site-packages。此外,也可以使用virtualenvwrapper的toggleglobalsitepackages命令控制當前環境是否使用global site-packages。

virtualenv --system-site-packages env1

 

virtualenv的相關命令: 

# 進入對應目錄: cd pyFlask # 啓動虛擬環境: source bin/activate #退出虛擬環境: deactivate 

 

4. 上傳代碼,安裝其餘依賴庫

用ftp把項目代碼上傳到雲主機上,全部雲主機上還須要安裝ftp服務器

安裝教程:http://jingyan.baidu.com/article/67508eb4d6c4fd9ccb1ce470.html

代碼上傳以後,用pip把須要的依賴庫安裝上。

# requirement.txt 爲依賴關係清單
pip install -r requirements.txt

 

測試下代碼是否能成功運行:

python blogapp.py runserver
# blogapp.py 是項目的入口文件

 

5. 安裝配置uWSGI

pip install uWSGI

 

添加uwsgi的配置文件(以下):

[uwsgi]
# uwsgi 啓動時所使用的地址與端口
socket = 127.0.0.1:5000

# 指向網站目錄
chdir = /home/uftp/blog/

# python 啓動程序文件
wsgi-file = blogapp.py

# python 程序內用以啓動的 application 變量名
callable = app

# 進程數
processes = 4

# 線程數
threads = 2

#狀態檢測地址
stats = 127.0.0.1:9191

 

使用uwsgi運行應用

uwsgi config.ini

 

用curl 測試下web項目是否運行成功

curl http://localhost:5000

 

5.   配置nginx

在Nginx的安裝目錄找到Nginx的配置文件,默認安裝目錄通常是/usr/local/nginx/conf/,配置文件是nginx.conf,對其進行編輯,使得Nginx可以加載uwsgi。 

server {
    listen  80;
    server_name 127.0.0.1;
  
    location / {
    include      uwsgi_params;
    uwsgi_pass   127.0.0.1:5000;  # 指向uwsgi 所應用的內部地址,全部請求將轉發給uwsgi 處理
    uwsgi_param UWSGI_PYHOME /home/www/blog/pyFlask; # 指向虛擬環境目錄
    uwsgi_param UWSGI_CHDIR  /home/www/blog; # 指向網站根目錄
    uwsgi_param UWSGI_SCRIPT blog:app; # 指定啓動程序
    }
  }

 

重啓nginx:

sudo service nginx restart

# 如何重啓異常了 能夠直接殺死進程,再啓動
killall nginx
sudo service nginx start

能夠再次用curl命令測試應用運行狀況

 

如今web應用基本能夠成功運行了

 

參考:

http://www.cnblogs.com/Ray-liang/p/4173923.html?utm_source=tuicool&utm_medium=referral

http://juxuan.fu.blog.163.com/blog/static/112129259201411188132562/

 

本文連接: http://www.bugcoding.com/entry/14

相關文章
相關標籤/搜索