溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何在SAE上部署Python+Django應(yīng)用

發(fā)布時(shí)間:2021-12-02 17:41:27 來(lái)源:億速云 閱讀:100 作者:柒染 欄目:云計(jì)算

如何在SAE上部署Python+Django應(yīng)用,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

正象之前所說(shuō)的那樣,我想要做一個(gè)自己的博客,同時(shí)又要少花錢,少做事(呵呵,太懶了吧),因此我選擇了Python+Django,經(jīng)過(guò)了幾天的折騰,終于基本完成,甚至都還沒(méi)有完善,就迫不及待地將其部署到了SAE,現(xiàn)在就把這個(gè)部署過(guò)程分享一下。

1、準(zhǔn)備工作

準(zhǔn)備工作中最最重要的當(dāng)然準(zhǔn)備好自己的應(yīng)用代碼了,廢話少說(shuō),代碼最重要,但我卻要略過(guò),不了解的朋友可以參考Django向?qū)?/strong>(又廢話了吧),一步步做就行了。其實(shí)在準(zhǔn)備階段我覺得最重要的還是SAE上的一些配置。

首先,你需要在SAE上建立自己的應(yīng)用,并將其用SVN下載到本機(jī),如果你希望在本機(jī)使用模擬的SAE環(huán)境,還需要下載安裝SAE本地開發(fā)包。然后將自己的代碼根目錄下的所有內(nèi)容拷貝到SVN目錄下的1目錄。具體操作命令如下:

svn co https://svn.sinaapp.com/your_app_name

以上是下載應(yīng)用代碼,假設(shè)你本機(jī)的代碼根目錄為mysite,則你需要如下操作:

cp mysite/* your_app_name/1

這樣的話,準(zhǔn)備工作就做完了,前面說(shuō)了一大堆,其實(shí)就只有這么兩句話有用。

2、配置文件編寫

SAE的配置文件主要有兩個(gè):config.yaml和index.wsgi。我們所要做的就是在根目錄下建立這兩個(gè)文件,然后再根據(jù)應(yīng)用的實(shí)際情況對(duì)其進(jìn)行編輯。

好了,不說(shuō)了,上代碼。

首先是index.wsgi,這是標(biāo)準(zhǔn)的SAE模板,除了將應(yīng)用名稱改為你自己的,沒(méi)什么復(fù)雜的東東。

import sys
  import os.path
  
  os.environ['DJANGO_SETTINGS_MODULE'] = 'YOUR_APP_NAME.settings'
  sys.path.append(os.path.join(os.path.dirname(__file__), 'YOUR_APP_NAME'))
  
  import sae
  from YOUR_APP_NAME import wsgi
  
  application = sae.create_wsgi_app(wsgi.application)

注意:只需要簡(jiǎn)單地將其中的YOUR_APP_NAME替換成你的應(yīng)用的名稱就行了,不要加其他任何符號(hào)

接下來(lái)再來(lái)看看config.yaml,這個(gè)文件的配置相對(duì)要復(fù)雜一些,不過(guò)也沒(méi)有太復(fù)雜的東西,只要你理解了其中每個(gè)配置選項(xiàng)的含義,一切都好辦了,如果有什么不清楚,可以參考SAE應(yīng)用程序配置文檔。先來(lái)看看我們初始的配置文件吧。

name: YOUR_APP_NAME
 version: 1
 
 libraries:
 - name: django
   version: "1.5"

呵呵,還是簡(jiǎn)單地做一些替換吧,YOUR_APP_NAME還是簡(jiǎn)單地替換成你的應(yīng)用的名稱;另外就是多了個(gè)引用庫(kù)的配置,我的應(yīng)用中用到了django框架,因此需要引入,同時(shí)我用的版本是1.5的,因此千萬(wàn)記得,將其版本設(shè)為1.5,如果你用的是1.4版,千萬(wàn)設(shè)置成1.4版,不然……呵呵,當(dāng)然就是可以報(bào)一大堆錯(cuò)誤了。

配置文件就到這里了,So easy!!!不是嗎?

3、靜態(tài)文件處理

靜態(tài)文件處理起來(lái),說(shuō)麻煩也麻煩,但真的做起來(lái),如果只要簡(jiǎn)單的能用就行,那也真是簡(jiǎn)單。本人就基于能用就行,簡(jiǎn)單地進(jìn)行靜態(tài)文件的處理。

首先,請(qǐng)確認(rèn)你沒(méi)有修改應(yīng)用中的setting文件中與靜態(tài)文件有關(guān)的設(shè)置,說(shuō)簡(jiǎn)單點(diǎn)就是所有以STATIC開始的設(shè)置都沒(méi)有改動(dòng)。

接下來(lái)就是執(zhí)行django的靜態(tài)文件搜集命令了,只需要在你的應(yīng)用根目錄下執(zhí)行如下命令就行了。

./manage.py collectstatic

其中會(huì)有一個(gè)提示信息,也就是讓你確認(rèn),輸入"yes"即可。

最后,再次打開config.yaml文件,添加如下代碼:

handlers:
- url: /static/
  static_path: ./

4、數(shù)據(jù)庫(kù)設(shè)置

 我實(shí)在難以想象,在現(xiàn)在的環(huán)境下,一個(gè)應(yīng)用沒(méi)有數(shù)據(jù)庫(kù)的支持,將會(huì)是什么樣子。不管別人怎樣,我的應(yīng)用就要用數(shù)據(jù)庫(kù),當(dāng)然還是要用MySQL。數(shù)據(jù)庫(kù)的配置很簡(jiǎn)單,而且配置好后基本就不用動(dòng)了。呵呵,傻笑什么呢,還不動(dòng)手。

首先,打開settings.py文件,在原有的DATABASES配置前加上如下代碼:

if 'SERVER_SOFTWARE' in os.environ:
     from sae.const import (
         MYSQL_HOST, MYSQL_PORT, MYSQL_USER, MYSQL_PASS, MYSQL_DB
     )
 else:
      MYSQL_HOST = 'localhost'
      MYSQL_PORT = '3306'
      MYSQL_USER = 'root'
      MYSQL_PASS = '******'
      MYSQL_DB   = 'YOUR_DATABASE_NAME'

然后將原有的DATABASES配置改成如下代碼:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': MYSQL_DB,                      # Or path to database file if using sqlite3.
        # The following settings are not used with sqlite3:
        'USER': MYSQL_USER,
        'PASSWORD': MYSQL_PASS,
        'HOST': MYSQL_HOST,                      # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.
        'PORT': MYSQL_PORT,                      # Set to empty string for default.
    }
 }

最后別忘了在SAE中啟用MySQL數(shù)據(jù)庫(kù)支持哦。這樣你就既可以在SAE環(huán)境中運(yùn)行應(yīng)用,也可以在本機(jī)不用SAE模擬環(huán)境里運(yùn)行了。

OK,大功告成,現(xiàn)在執(zhí)行如下命令:

svn add *
svn ci -m "Deploy app into SAE"

看完上述內(nèi)容,你們掌握如何在SAE上部署Python+Django應(yīng)用的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI