ubuntu 部署Flask(阿里雲)

聲明:本文轉載於知乎看戲(https://zhuanlan.zhihu.com/p/28204251

開始粘貼

sudo apt-get update 
sudo apt-get install python-pip python-dev nginx

粘粘粘

sudo pip install virtualenv

好了,粘到這了我要說一下,virtualenv這個python中的神器不需要我再細說了,下面我要說的是我們要創建一個目錄也是一樣,粘粘粘,這個路徑你也可以自己設置

mkdir /home/project
cd /home/project

我們現在在當前的目錄下/home/project/繼續粘貼

virtualenv venv

粘貼完成後你會發現在/home/project/下會有一個venv的文件夾,我們繼續

cd venv

現在路徑就是/home/project/venv 這個路徑下會有幾個文件夾,管它呢?我就要結果,好的

source bin/activate

執行完後你會發現我們已經在虛擬環境中了

(venv)user@host:~/project類似這樣的前面有個括號裏面是venv

—————————————-這是分割線—————————————

我們已經在虛擬環境中了,下面不要退出我們繼續在虛擬環境中搞事情。

pip install uwsgi flask

在虛擬環境中繼續安裝…….

正常情況下,此時別的教程就開始了,我們要新建一個test.py的項目類似這樣的

from flask import Flask
app = Flask(__name__)

.....然後讓你請求返回hello world

if __name__ == "__main__":
    app(host='0.0.0.0')

然後讓你python test.py ,又讓你在瀏覽器輸入,滾滾滾滾,md老子哪裏的瀏覽器,都是大黑屏。

上傳項目
我們先把我們的項目傳到服務器上面去

sudo scp -r /你本地電腦路徑/appservice/ root@ip:/home/project

會讓你輸入密碼,輸入就好了,注意:sudo scp -r /你本地電腦路徑/appservice/ root@ip:/home/project 是在你的本地電腦上輸入的!

現在你的項目已經來到了服務器上面,

創建uWSGI入口
比較麻煩的正題開始了。創建wsgi入口:這個不要慌張因爲剛剛你把項目傳上來的時候已經創建了一個appservice的文件夾,下面繼續粘貼命令

nano /home/project/appservice/wsgi.py

讓你創建一個wsgi.py內容是

from 你項目入口裏面的application import application

if __name__ == "__main__":
    application.run()

然後我們保存一下!記得保存!!

保存成功後我們繼續,先把虛擬環境關掉

deactivate

現在開始很重要了!雖然可以直接粘貼,但是最好要理解的粘貼,別因爲你的文件夾名稱不同導致失敗。

創建uWSGI配置文件

nano /home/project/appservice/myproject.ini

粘貼內容

[uwsgi]
module = wsgi

master = true
processes = 5

socket = myproject.sock
chmod-socket = 660
vacuum = true

die-on-term = true

完成後保存,友情提示 輸入 :wq

創建一個Upstart腳本
就是粘貼

sudo nano /etc/init/myproject.conf

粘貼

description "uWSGI server instance configured to serve myproject"

start on runlevel [2345]
stop on runlevel [!2345]

setuid root
setgid www-data

env PATH=/home/project/venv/bin           
chdir /home/myproject/appservice
exec uwsgi --ini myproject.ini

env:就是最開始我們創建的虛擬環境路徑

chdir:我們的項目路徑

這兩個根據實際情況改一下子就可以了

完成後保存並關閉文件。 :wq

您可以通過鍵入以下內容立即開始進程:

sudo start myproject

此時應該顯示的運行成功,之前我運行一次不成功的情況是,setuid那個root沒改

將Nginx配置爲代理請求
繼續粘貼

sudo nano /etc/nginx/sites-available/myproject

server {
    listen 80;
    server_name 你的服務器對外ip;
    access_log /home/project/log/access.log;
    error_log /home/project/log/error.log;
    location / {
        include uwsgi_params;
        uwsgi_pass unix:/home/project/appservice/myproject.sock;
    }
}

粘貼到這裏有的朋友會發現myproject.sock這個東西出現了很多次阿,哪裏來的啊,不要怕,此時這個myproject.sock正安靜的躺在你的appservice裏。

保存 :wq

注意/home/project/log/文件夾得先創建出來

要啓用我們剛剛創建的Nginx服務器塊配置,請將該文件鏈接到sites-enabled目錄:

sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled

我們可以鍵入以下內容來測試語法錯誤:

sudo nginx -t

balabalabalabtla%^& * 出現success ok 臥槽,恭喜你。

如果這返回沒有指示任何問題,我們可以重新啓動Nginx進程來閱讀我們的新配置:

sudo service nginx restart

您現在應該可以在Web瀏覽器中訪問服務器的域名或IP地址

md等待爲什麼我的不好用?費了一大頓勁爲什麼還是鏈接不上。

這裏面是因爲你的阿里雲80端口沒給你開,你去添加一個80端口就ok了!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章