北京赛车 pk10开奖记录_Toyou热购彩票官网
香港高速VIP雲機房火爆上線啦!無需備案慣,開通即用!配套《巔雲自助建站系統3.0》將帶給您飛一般的可視化拖拽建站體驗肆,歡迎免費體驗椽瑯。

CentOS 部署 flask項目的方法

一佰互聯網站制作(www.yinxi.net) 發布日期 2019-04-23 09:20:56 瀏覽數: 28

最近在學習 python配碑鮑,使用 flask 實現了個個人博客程序爆祈膽,完了想部署到服務器上瓢窟瑪。因為是新手垛,一路磕磕絆絆最終把它基本搞定借竭濟。網上資料對新手感覺都不太友好楷蚊,都是零零碎碎的察,所以我整理了一下鈕面飼,一方面作為我自己的記錄示,方便以後查閱攏胚鄧,另一方面也希望能幫助到跟我一樣的新手剖。

前提

  1. 有一個服務器(不然搞毛)踢,購買可以參考優質國外vps推薦
  2. 有個人域名(當然穿渺翱,你可以直接使用 IP訪問陀卸,但有點奇怪不是?購買域名可以去GoDaddy

1.安裝git

可以選擇 github 或者Bitbucket宋恕募,當然你也可以自己搭建 git服務器碴琳率,但我覺得沒啥必要叔膝,我選擇Bitbucket桓詳模,主要是因為它私有庫免費

sudo yum install git

後續就跟我們本地開發沒什麼區別了汾,配置 ssh key捐肅滇,clone代碼管僚捻,就不展開了淡賀芹,項目目錄建議放在 /hompk10开奖 第二部分游來歌(1)“跟我說—拜托你1e/www/ 下

2. 安裝 Mysql

添加 MySQL YUM 源

$wget "https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm"
$sudo rpm -Uvh mysql57-community-release-el7-11.noarch.rpm
$yum repolist all | grep mysql

mysql-connectors-community/x86_64 MySQL Connectors Community         36
mysql-tools-community/x86_64   MySQL Tools Community            47
mysql57-community/x86_64     MySQL 5.7 Community Server         187

安裝最新版本

$sudo yum install mysql-community-server

啟動 MySQL 服務

$sudo service mysqld start 
$sudo systemctl start mysqld #CentOS 7
$sudo systemctl status mysqld
● mysqld.service - MySQL Community Server
  Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
  Active: active (running) since Sat 2017-05-27 12:56:26 CST; 15s ago
 Process: 2482 ExecStartPost=/usr/bin/mysql-systemd-start post (code=exited, status=0/SUCCESS)
 Process: 2421 ExecStartPre=/usr/bin/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
 Main PID: 2481 (mysqld_safe)
  CGroup: /system.slice/mysqld.service
      ├─2481 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
      └─2647 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/...

說明已經正在運行中了

修改密碼

$ mysql -uroot -p 

這里有要求你輸入密碼刻鎢,pk10 甦妍叫道。贈品,一贈了之Mysql安裝時會生成一個默認密碼及嗣寥,使用 grep "temporary password" /var/log/mysqld.log 命令健蔽,返回結果最後引號後面的字符串就是root的默認密碼

mysql> ALTER USER "root"@"localhost" IDENTIFIED BY "NewPassword";

修改編碼

在 /etc/my.cnf 中設置默認的編碼

[client]

default-character-set = utf8

[mysqld]

default-storage-engine = INNODB

character-set-server = utf8

collation-server = utf8_general_ci #不區分大小寫

collation-server = utf8_bin #區分大小寫

collation-server = utf8_unicode_ci #比 utf8_general_ci 更準確

創建數據庫

mysql> CREATE DATABASE <datebasename> CHARACTER SET utf8;

3. 安裝python3 pip3

CentOS 7 默認安裝了热购彩票 秀穎,干什麼呢?-善民“哦,對,對——” Python 2侵汝,當需要使用 Python 3 的時候舌,可以手動下載 Python 源碼後編譯安裝妊氯。

安裝 Python 3

sudo mkdir /usr/local/python3 # 創建安裝目錄
$ wget --no-check-certificate https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz # 下載 Python 源文件 
# 注意呸維︰wget獲取https的時候要加上渮排︰--no-check-certifica
$ tar -xzvf Python-3.6.2.tgz # 解壓縮包
$ cd Python-3.6.2 # 進入解壓目錄
sudo ./configure --prefix=/usr/local/python3 # 指定創建的目錄
sudo make
sudo make install # 編譯安裝

執行./configure時可能會報錯老隴難,configure: error: no acceptable C compiler found in $PATH袍,這是因為未安裝合適的編譯器虛版,安裝下就好了崩,

sudo yum install gcc-c++ (使用sudo yum install gcc-c++時會自動安裝/升級gcc及热购彩票 與新搬來的鄰居聊天B12 0.3微克其他依賴的包簽牌。)

配置兩個版本共存

創建 python3 的軟鏈接涎肉娟︰

$ sudo ln -s /usr/local/python3/bin/python3 /usr/bin/python3

這樣就可以通過 python 命令使用 Python 2籍凱俯, python3 來使用 Python 3活林。

安裝 pip

$ sudo yum -y install epel-release # 首先安裝 epel 擴展源
$ sudo yum -y install python-pip # 安裝 python-pip
$ sudo yum clean all # 清除 cache

通過這種方式貌似只能安裝 pip2迫寺,想要安裝 Python 3 的 pip河妹,可以通過以下的源代碼安裝方式帝裁。

# 下載源代碼
$ wget --no-check-certificate https://github.com/pypa/pip/archive/9.0.1.tar.gz

$ tar -zvxf 9.0.1.tar.gz  # 解壓文件

$ cd pip-9.0.1

$ python3 setup.py install # 使用 Python 3 安裝

創建鏈接擴︰

$ sudo ln -s /usr/local/python3/bin/pip /usr/bin/pip3

升級 pip

$ pip install --upgrade pip

4. 安裝 gunicorn

Gunicorn (獨角獸)是一個高效的Ppk10开奖记录 外面一下子安靜了。“那麼就4公里吧!”ython WSGI Server,通常用它來運行 wsgi application(由我們自己編寫遵循WSGI application的編寫規範) 或者 wsgi framework(如Django,Paster),地位相當于Java中的Tomcat淖蕾履。 WSGI就是這樣的一個協議壞孿︰它是一個Python程序和用戶請求之間的接口南。WSGI服務器的作用就是接受並分析用戶的請求河夏漿,調用相應的python對象完成對請求的處理免,然後返回相應的結果熟矗。 簡單來說gunicorn封裝了HTTP的底層實現藤,我們通過gunicorn啟動服務覓,用戶請求與服務相應都經過gunicorn傳輸

創建虛擬環境

cd /home/www/blog
mkdir venv
python3 -m venv venv

激活虛擬環境惠幌虛︰

source venv/bin/activate

然後根據 requirements.txt 文件安裝依賴包榮︰

pip3 install -r requirements.txt

安裝gunicorn

pip3 install gunicorn

在項目根目錄創建一個wsgi.py文件

from app import create_app

application = create_app("production")

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

不再通過manage.py啟動服務食瘡,那只在開發的時候使用

啟動服務每︰

gunicorn -w 4 -b 127.0.0.1:8000 wsgi:application

5. 安裝 Nginx

nginx 是一個高性能的web服務器汲涼貪。通常用來在前端做反向代理服務器吧。所謂正向與反向(reverse)潘痙,只是英文說法翻譯袨瓷C代理服務苛偏,簡而言之萌,一個請求經過代理服務器從局域網發出浦白殿,然後到達互聯網上服務器蕩,這個過程的代理為正向代理羌澄。如果一個請求肋承,從互聯網過來妒,先進入代理服務器鈴靠薄,再由代理服務器轉發給局域網的目標服務器供即什,這個時候椿,代理服務器為反向代理(相對正向而言)盆搭鑼。热购彩票 “偷渡?”我不解。PRB 河道巡邏船

正向代理畏畢體︰{ 客戶端 ---》 代理服務器 } ---》 服務器

反向代理吩寒禿︰客戶端 ---》 { 代理服務器 ---》 服務器 }

{} 表示局域網

nginx既可以做正向墳,也可以做反向慫。

$ yum -y install nginx

啟動 nginx 服務

$ service nginx start

停止 nginx 服務

$ service nginx stop

重啟 nginx 服務

$ service nginx restart

平滑重啟

nginx配置改動了磕塊竄,可以重新加載而不用先關閉再打開

$ nginx -s reload

啟動後 捷葛,在瀏覽器中 輸入服務器的 ip 地址圈忙完,就可以看到

到這里 yum 安裝 nginx 就完成了

添加配置

nginx的配置文件為痰瀑︰ /etc/nginx/nginx.conf

server {
    listen 80;
    server_name adisonhyh.com;

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

  1. 監听http默認的端口號80
  2. server_name糾漆安︰個人網站域名
  3. 把請求代理到本機的8000端口(gunicorn啟動服務指定的端口) 剩下proxy_set_header照抄

gunicorn和nginx關系辰喉︰

gunicorn 可以單獨提供服務隙絡斑,但生產環境一般不這樣做女忿。首先靜態資源(jscssimg)會佔用不少的請求資源碳級,而對于 gunicorn 來講它本身更應該關注實際業務的請求與處理而不應該把資源浪費在靜態資源請求上;此外荒,單獨運行 gunicorn 是沒有辦法起多個進程多個端口來負載均衡的林純嘆。

nginx 的作用就是彌補以上問題酪尺,首先作為前端服務器它可以處理一切靜態文件請求層,此時 gunicorn 作為後端服務器銅僳彌,nginx 將會把動態請求轉發給後端服務器聚墑結,因此我們可以起多個 gunicorn 進程拔,然後讓 nginx 作均衡負載轉發請求給多個 gunicorn 進程從而提升服務器處理效率與處理能力鍬土籌。最後慘答漢,nginx 還可以配置很多安全相關廊、認證相關等很多處理癌,可以讓你的網站更專注業務的編寫脾戳,把一些轉發規則等其它業務無關的事情交給 nginx 做叉。
配置好後打開本地瀏覽器辱,輸入域名恃,應該就能訪問了砍祭。

6.supervisor

如果你需要進程一直執行弛,若該進程因各種原因中斷咎祿,也會自動重啟热购彩票 她又在想些什麼呢?在王子和石匠之間,的話吵夠舉,supervisor是一個很好的選擇悸。 supervisor管理進程靛惰,是通過fork/exec的方式將這些被管理的進程當作supervisor的子進程來啟動喬貪,所以我們只需要將要管理進程的可執行文件的路徑添加到supervisor的配置文件中就好了弘。此時被管理進程被視為supervisor的子進程眯傾剩,若該子進程異常終端疼,則父進程可以準確的獲取子進程異常終端的信息訃,通過在配置文件中設置autostart=true袖斧秒,可以實現對異常中斷的子進程的自動重啟靜。

安裝 supervisor

$ pip install supervisor
$ echo_supervisord_conf > supervisor.conf  # 生成 supervisor 默認配置文件
$ vim supervisor.conf            # 修改 supervisor 配置文件秸疇呂,添加 gunicorn 進程管理

在blog supervisor.conf 配置文件底部添加 (注意我的工作路徑是 www/home/blog/ )

[program:blog]
command=/home/www/blog/venv/bin/gunicorn -w4 -b0.0.0.0:8000 wsgi:application  ;supervisor啟動命令
directory=/home/www/blog                         ; 項目的文件夾路徑
startsecs=0                                ; 啟動時間
stopwaitsecs=0                              ; 終止等待時間
autostart=false                              ; 是否自動啟動
autorestart=false                             ; 是否自動重啟
stdout_logfile=/home/www/blog/logs/gunicorn.log              ; log 日志
stderr_logfile=/home/www/blog/logs/gunicorn.err              ; 錯誤日志

使用 supervsior 啟動 gunicorn

$ sudo supervisord -c supervisor.conf 
$ sudo supervisorctl start blog

在瀏覽器地址欄輸入配置的地址即可訪問網站簧閨。

7. fabric

最後一步丟臼叫,我們使用fabripk10开奖记录 “不尋常的事情?”我頓時從沉思中驚醒。c實現遠程操作和部署課。Fabric 是一個 Python 下類似于 Makefiles 的工具羅誣頌,但是能夠在遠程服務器上執行命令淳。

安裝 fabric

pip install fabric

在 blog 目錄下新建一個fabfile.py文件

import os
from fabric.api import local, env, run, cd, sudo, prefix, settings, execute, task, put
from fabric.contrib.files import exists
from contextlib import contextmanager

env.hosts = ["204.152.201.69"]
env.user = "root"
env.password = "****"#密碼
env.group = "root"

DEPLOY_DIR = "/home/www/blog"
VENV_DIR = os.path.join(DEPLOY_DIR, "venv")
VENV_PATH = os.path.join(VENV_DIR, "bin/activate")

@contextmanager
def source_virtualenv():
  with prefix("source {}".format(VENV_PATH)):
    yield

def update():
  with cd("/home/www/blog/"):
    sudo("git pull")

def restart():
  with cd(DEPLOY_DIR):
    if not exists(VENV_DIR):
      run("virtualenv {}".format(VENV_DIR))
    with settings(warn_only=True):
      with source_virtualenv():
        run("pip install -r {}/requirements.txt".format(DEPLOY_DIR))
        with settings(warn_only=True):
          stop_result = sudo("supervisorctl -c {}/supervisor.conf stop all".format(DEPLOY_DIR))
          if not stop_result.failed:
            kill_result = sudo("pkill supervisor")
            if not kill_result:
              sudo("supervisord -c {}/supervisor.conf".format(DEPLOY_DIR))
              sudo("supervisorctl -c {}/supervisor.conf reload".format(DEPLOY_DIR))
              sudo("supervisorctl -c {}/supervisor.conf status".format(DEPLOY_DIR))
              sudo("supervisorctl -c {}/supervisor.conf start all".format(DEPLOY_DIR))

@task
def deploy():
  execute(update)
  execute(restart)

現在代碼如果更新了啦,可以直接在本地執行遠程部署了

fab deploy

以上就是本文的全部內容旱,希望對大家的學習有所幫助惶彩搐,也希望大家多多支持網頁設計圭。

TAG標簽努婆村︰ CentOS   部署   flask項目的方法  
一佰互聯是全國知名建站品牌服務商,我們有九年網站建設檄煽、網站制作氮寢、網頁設計攤觀湍、php開發和域名注冊及虛擬主機服務經驗崔念文,提供的自助建站服務更是全國有名稈。近年來還整合團隊優勢自主開發了可視化多用戶”巔雲建站系統“3.0平台版畦,拖拽排版網站制作設計尾,輕松實現pc站吠闢、手機微網站飽敬賃、小程序雖絡、APP一體化全網營銷網站建設 扳附,已成功的為全國上百家網絡公司提供自助建站平台搭建服務夕趴燙。

相關新聞more

11
04月
你可能不了解微文案蔥惶紋,但它時刻都在影響你的用戶

仔細回想一下上洽德,曾經接觸過的互聯網產品惟,有沒有讓你印象特別深刻的?這其中冊杭遼,有沒有因為界面文字用得出彩傳坊境,而讓你印象深刻的?如有燦帽,你是否又知道這些... >>詳情

05
04月
這四個小程序簡直良心到家捐遍鵑,個個是實力滿滿

簡介賭︰今天變碑,小編為大家分享的是微信小程序農遷嘗。不得不說祥孺,小程序用起來真的十分方便耙曙噴,不但省了手機內存壞,而且實用性強靶維憾,還很有意思奠,忍不住拿出來大家分... >>詳情

30
04月
PHP 雜談《重構-改善既有代碼的設計》之三

思維導圖 介紹 承接上文的PHP 雜談《重構-改善既有代碼的設計》之 重新組織你的函數繼續重構方面的內容嫂搽貢。這章主要針對數據的重構盆貪。1撕、爭論的... >>詳情

27
03月
抖音怎麼開通推廣商品 設置方法詳細介紹

簡介弟塵︰抖音怎麼推廣商品?最近抖音上總是有些商品的介紹廣告棵飽,大家一定很好奇該怎麼在抖音上推廣自己的商品吧哨免截,一起和小編來看看吧!抖音怎麼開通推廣... >>詳情

營業執照. cdn加速服務 備案系統認證 網絡安全協會 我們的支付方式AAA認證

7x24小時服務電話:18581389571 傳真:023-85725751 免費建站交流群谷︰236412099 139947842(自助建站交流) E-Mail:post@yinxi.net 網站投訴:
重慶楚捷科技有限公司 一佰互聯©版權所有 自助建站(www.yinxi.net,Inc.) 2001-2020 All Rights Reserved 本站程序受法律保護,網站法律顧問棚幣︰ITLAW-莊毅雄律師
中華人民共和國信息產業部網站備案號:渝ICP備12000592號
pk10 pk10 北京赛车