uwsgi+nginx+ubantu+supervisor部署Flask項(xiàng)目

本機(jī)操作

  1. 首先進(jìn)入項(xiàng)目文件夾汁果,使用命令 pip freeze > requirements.txt 導(dǎo)出 requirements.txt

  2. 然后執(zhí)行命令git push origin master將自己的項(xiàng)目提交到 git

    ?

服務(wù)器操作

  1. 安裝 UbantuCentOS 虛擬機(jī)
  1. 安裝 xshell 诡渴,安裝完成后輸入虛擬機(jī) ip 修陡、port 厌均、用戶名呀非、密碼來連接虛擬機(jī)显拳,連接成功后就可以在xshell 上操作服務(wù)器

推薦使用root用戶操作服務(wù)器氯质,在xshell輸入su螟加,然后輸入密碼進(jìn)入root權(quán)限

如果沒有設(shè)置root密碼直焙,則可以按如下操作設(shè)置root密碼:

第一步:sudo passwd

第二步:輸入密碼

第三步:確認(rèn)密碼

  1. 安裝 python3 景东,apt install python3
  2. 安裝 gitsudo apt install git
    • 生成sshkey: sudo ssh-keygen -t rsa -C "xxxxx@xxxxx.com"
    • 查看sshkey: sudo cat ~/.ssh/id_rsa.pub
    • 添加sshkey: 將sshkey添加在自己的github密鑰中
  1. su賬戶下安裝 virtualenvvirtualenvwrapper奔誓,執(zhí)行pip3 install virtualenvwrapper即可

注:安裝完成后需要設(shè)置環(huán)境變量斤吐,不然無法識(shí)別命令。

1)首先安裝vim厨喂,sudo apt install vim

2)輸入 vim ~/.bashrc進(jìn)入編輯和措,按 ↓ 至底部,輸入i進(jìn)入編輯模式蜕煌,輸入以下兩行代碼:

export WORKON_HOME=$HOME/.virtualenvs

source /usr/local/bin/virtualenvwrapper.sh

輸入完成后派阱,按ESC,然后輸入:wq保存并退出斜纪,然后執(zhí)行source ~/.bashrc激活

  1. 創(chuàng)建虛擬環(huán)境贫母,mkvirtualenv -p "/usr/bin/python3" flask-py3文兑, flask-py3是虛擬環(huán)境名稱,可隨意取名但不可重復(fù)腺劣,-p "/usr/bin/python3"是指定python版本為py3绿贞,這個(gè)py3的路徑通過which python3命令獲取

  2. 安裝mysql

    sudo apt install mysql-server mysql-client

    sudo apt install libmysqld-dev

  3. 設(shè)置項(xiàng)目

    1)進(jìn)入srv文件夾, cd /srv誓酒,srv可以是另外有權(quán)限訪問的文件夾

    2)新建項(xiàng)目文件夾 mkdir Buggg

    3)進(jìn)入Buggg文件夾樟蠕,并初始化為git文件夾,

    ? cd Buggg

    ? git init

    4)與遠(yuǎn)程倉庫連接

    ? git remote add origin git@gitee.com:slowchen/Buggg.git

    ? 備注:如果報(bào)錯(cuò)ssh: Could not resolve hostname gitee.com: Name or service not known靠柑,則執(zhí)行以下操作:

    ? ①ping gitee.com
    ? 獲取到github.comip116.211.167.14
    ? ②在/ etc/hosts中添加一行如下:
    ? 116.211.167.14 gitee.com

    5)拉取倉庫代碼

    ? git pull origin master

    ? 輸入自己的用戶名和密碼即可拉取

    6)進(jìn)入虛擬環(huán)境

    ? workon flask-py3

    7)安裝python package

    ? pip3 install -r requirements.txt

    8)進(jìn)入數(shù)據(jù)庫寨辩,并創(chuàng)建

    ? mysql -uroot -p,輸入密碼歼冰,進(jìn)入數(shù)據(jù)庫

    ? create database buggg charset utf8靡狞,注意此處的buggg與項(xiàng)目config.py里面的database應(yīng)該一 致

    9)進(jìn)入項(xiàng)目文件夾,遷移數(shù)據(jù)庫

    ? python3 manage.py db init

    ? python3 manage.py db migrate

    ? python3 manage.py db upgrade

    ? 遷移完成后隔嫡,可以進(jìn)入數(shù)據(jù)庫查看是否遷移成功

    ? mysql -uroot -p

    ? use buggg

    ? show tables

    10)啟動(dòng)服務(wù)

    ? ①設(shè)置運(yùn)行的host'0.0.0.0'甸怕,否則無法訪問

    ? ②進(jìn)入項(xiàng)目文件夾,直接運(yùn)行主app文件

    ? python3 app.py

    ? ③進(jìn)入項(xiàng)目文件夾腮恩,使用flask_script運(yùn)行

    ? 在manage.py中添加 manager.add_command('runserver', Server(host='0.0.0.0'))

    ? 再運(yùn)行python3 manage.py runserver即可啟動(dòng)服務(wù)

    11)本機(jī)訪問

    ? 本機(jī)訪問虛擬機(jī)ip+port即可訪問梢杭,port未改變則為5000,例如http://192.168.40.128:5000

nginx

安裝: sudo apt-get install nginx
啟動(dòng):sudo service nginx start
重啟:sudo service nginx restart
停止:sudo service nginx stop
測試:sudo service nginx configtest

/etc/nginx/conf.d編寫生成并配置文件buggg.conf

生成: touch buggg.conf

配置:

upstream buggg {
server unix:///srv/Buggg/buggg.sock; #項(xiàng)目目錄下的sock文件
}

server{
        listen 80;
        server_name 192.168.1.104; #虛擬機(jī)ip
        charset utf-8;
        client_max_body_size 75M;

        location / {
                uwsgi_pass buggg; #對(duì)應(yīng)第一行的 upstream
                include /etc/nginx/uwsgi_params;
        }
}

uwsgi

安裝:sudo pip install uwsgi秸滴,注意不要安裝在虛擬環(huán)境中武契,要安裝在系統(tǒng)里面。

啟動(dòng)flask項(xiàng)目:uwsgi --http :5000 --wsgi-file /srv/Buggg/Buggg.py --callable app -H /root/.virtualenvs/buggg-env-py3

在項(xiàng)目文件夾荡含,創(chuàng)建配置文件buggg_uwsgi.ini

[uwsgi]
chdir = /srv/Buggg      #項(xiàng)目文件夾地址
home = /root/.virtualenvs/buggg-env-py3         #虛擬環(huán)境
module = Buggg          #項(xiàng)目文件夾名稱
master = true
processes = 10
wsgi-file = /srv/Buggg/Buggg.py         #項(xiàng)目主程序
callable = app      #主程序app名稱
socket = /srv/Buggg/buggg.sock   #此處的socket應(yīng)與buggg.conf中的upstream一致
chmod-socket = 666

*注:復(fù)制時(shí)要?jiǎng)h除備注咒唆,否則報(bào)錯(cuò)

使用配置文件啟動(dòng)flask項(xiàng)目

進(jìn)入項(xiàng)目文件夾,執(zhí)行uwsgi --ini buggg_uwsgi.ini

同時(shí)啟動(dòng)nginxuwsgi释液,然后在瀏覽器輸入虛擬機(jī)ip即可訪問項(xiàng)目

supervisor

  • 安裝

    pip install supervisor全释,使用python2,安裝在系統(tǒng)python

  • 啟動(dòng)

    supervisord -c supervisor.conf

  • 配置

    • 在項(xiàng)目文件夾下新建supervisor.conf

    • 填寫如下配置

      # 項(xiàng)目名稱
      [program:Buggg]
      # supervisor執(zhí)行的命令
      command=uwsgi --ini /srv/Buggg/buggg_uwsgi.ini
      # 項(xiàng)目的目錄
      directory = /srv/Buggg
      # 開始的時(shí)候等待多少秒
      startsecs=0
      # 停止的時(shí)候等待多少秒
      stopwaitsecs=0
      autostart=true
      # 程序掛了后自動(dòng)重啟
      autorestart=true
      # 輸出的log文件
      stdout_logfile=/srv/Buggg/log/supervisord.log
      # 輸出的錯(cuò)誤文件
      stderr_logfile=/srv/Buggg/log/supervisord.err
      
      [supervisord]
      # log的級(jí)別
      loglevel=info
      
      # 使用supervisorctl的配置
      [supervisorctl]
      # 使用supervisorctl登錄的地址和端口號(hào)
      serverurl = http://127.0.0.1:9001
      
      # 登錄supervisorctl的用戶名和密碼
      username = admin
      password = admin
      
      [inet_http_server]
      # supervisor的服務(wù)器
      port = :9001
      # 用戶名和密碼
      username = admin
      password = admin
      
      [rpcinterface:supervisor]
      supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
      

      *****注:填寫配置文件時(shí)误债,千萬注意不要在配置后面添加注釋浸船,如需注釋應(yīng)該換行

    • 其他

      • 如果報(bào)錯(cuò)另外程序在運(yùn)行中,可執(zhí)行sudo killall supervisord殺掉進(jìn)程寝蹈,然后重新啟動(dòng)
      • 可在瀏覽器中打開虛擬機(jī)ip+配置文件中填寫的port(例如http://192.168.1.104:9001)李命,輸入用戶名+密碼(admin:admin)來管理進(jìn)程

      ?

啟動(dòng)

supervisord -c supervisor.conf啟動(dòng)supervisor

service nginx start啟動(dòng)nginx

在瀏覽器輸入虛擬機(jī)ip,即可打開網(wǎng)站躺盛。

ip綁定域名

在域名控制臺(tái)解析到服務(wù)器ip后项戴,編輯/etc/nginx/conf.d/buggg.conf,在server_name里面添加域名槽惫,例如

server_name 118.89.24.114 www.bug-gg.com www.bug-gg.xyz bug-gg.com bug-gg.xyz;

然后在瀏覽器輸入域名即可訪問周叮。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末辩撑,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子仿耽,更是在濱河造成了極大的恐慌合冀,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件项贺,死亡現(xiàn)場離奇詭異君躺,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)开缎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門棕叫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人奕删,你說我怎么就攤上這事俺泣。” “怎么了完残?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵伏钠,是天一觀的道長。 經(jīng)常有香客問我谨设,道長熟掂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任扎拣,我火速辦了婚禮赴肚,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鹏秋。我一直安慰自己尊蚁,他們只是感情好亡笑,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布侣夷。 她就那樣靜靜地躺著,像睡著了一般仑乌。 火紅的嫁衣襯著肌膚如雪百拓。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天晰甚,我揣著相機(jī)與錄音衙传,去河邊找鬼。 笑死厕九,一個(gè)胖子當(dāng)著我的面吹牛蓖捶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播扁远,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼俊鱼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼刻像!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起并闲,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤细睡,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后帝火,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體溜徙,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年犀填,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蠢壹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡九巡,死狀恐怖知残,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情比庄,我是刑警寧澤求妹,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站佳窑,受9級(jí)特大地震影響制恍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜神凑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一净神、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧溉委,春花似錦鹃唯、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至藻三,卻和暖如春洪橘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背棵帽。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國打工熄求, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人逗概。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓弟晚,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子卿城,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容