Şüşə tətbiqinizi Heroku-da necə işə salmaq olar

Yerləşdirmə mürəkkəbdir və bir çox hərəkətli hissə haqqında məlumat tələb edir. Təəssüf ki, müəyyən bir tətbiqin necə yerləşdiriləcəyi barədə tez-tez heç bir addım-addım təlimat yoxdur. Bu yazıda, bir şey səhv olduğu təqdirdə səhvlərinizi düzəltməyinizə kömək edə biləcək əhəmiyyətli bir məlumatla əlaqələndirilirəm.

Bu təlimatda, məlumat bazası olmadan Flask və Python 3 istifadə edərək hazırlanmış Heroku üçün mövcud bir tətbiq yerləşdirdiyiniz düşünülür.

şüşə

Virtualenv

Tətbiqinizi hələ də virtual mühitdə inkişaf etdirməmisinizsə, indi onu yaradın (əks halda növbəti bölməyə keçin):

Layihə qovluğunda aşağıdakıları edin:

$ virtualenv -p python3 env

Sonra aktivləşdirin:

$ source env / bin / activate

Kabuk / terminal pəncərəsini bağlayırsınızsa, virtual pəncərəni yenidən aktivləşdirdiyinizə əmin olun !!

VM və PIP'nizin Python 3 istifadə etdiyinə əmin olun:

$ pip --version && python --version

Python2.7'i heç bir yerdə görməməlisiniz. Bunu etsəniz, virtual maşınınızda bir şey səhvdir və davam etmədən əvvəl onu düzəltməlisiniz.

Tətbiqinizi işə salın. Bağımlılık səhvlərini itirməyiniz ehtimalı var, buna görə onları quraşdırmalısınız. Misal üçün:

$ Pip şüşəsini quraşdırın

İlk dəfə virtual televizordan istifadə edirsinizsə, bu barədə burada oxumağınızı tövsiyə edirəm.

Qurulacaq paketlər

Gunicorn lazımdır:

$ Pip quraşdırma Gunicorn

Gunicorn, tətbiq olunduqda tətbiqinizə edilən istəkləri işləyən bir WSGI HTTP serveridir. Çox insanın Python tətbiqetmələrini yerləşdirmək üçün istifadə etdiyi şeydir.

İşinizi bitirdikdən sonra, bütün düzgün asılılıqların quraşdırıldığından və virtual env-nin aktiv olduğundan əmin olun və aşağıdakıları edin:

$ touch requirements.txt $ pip freeze> requirements.txt

Bu əmr, tətbiqinizin bütün asılılıqlarını Heroku-ya nəyin quraşdırılacağını deyən bir fayla əlavə edəcəkdir. Yeni requirements.txt sənədini yoxlayın. Flask və Gunicorn'un orada olduğundan və təsadüfən bütün yerli Python mühitinizi dondurmadığınızdan əmin olun (əgər etsəniz, Heroku'dan çox narazı qalacaqsınız).

Heroku üçün sənədlər

Aşağıdakı faylları əsas tətbiqinizlə eyni qovluqda yaradın:

Procfile

veb: gunicorn -w 4 app_file: app_name

Procfile xüsusilə Heroku üçündür. App_file-ni əsas tətbiq sənədiniz nə adlanırsa dəyişdirin. Tətbiqin işləməsi üçün ümumiyyətlə tətbiqimə "app.py" adını verirəm.

app_name şüşə tətbiqinizin adıdır. Tətbiqiniz "salmon.py" adlı "aardvark = Flask (__ name__)" kimi bir sətirdədirsə, son sətir "somon: aardvark" kimi görünür.

Ancaq çox güman ki, app = Flask (__ name__) kimi görünən bir xəttli app.py adlı bir sənədiniz var. Bu halda, sənədiniz sadəcə aşağıdakıları ehtiva etməlidir:

veb: gunicorn -w 4 tətbiqetmə: tətbiq

-W 4, dörd işçi ipliyi istədiyimizi göstərir. Prokfilin burada oxuya biləcəyi bir sıra digər parametrləri də ola bilər.

runtime.txt

Python-3.6.6

Heroku, Python'un hansı versiyasını istifadə edəcəyini bilməlidir. Təəssüf ki, hər versiya dəstəklənmir. Bu səbəbdən inkişafda normal olaraq yalnız bir dəstəklənən versiyadan istifadə etməlisiniz. Bunu necə etmək bu təlimatda əks olunmayıb. Beləliklə, yalnız bir versiyanı seçəcəyik. Yerli olaraq hansı iş vaxtınız olduğunu öyrənmək üçün python - versiyasını çalıştırın. Sonra Heroku dəstəklənən iş vaxtlarını yoxlayın və özünüzə ən yaxın olanını seçin (ancaq 2.7 istifadə etməyin).

.gitignore

env * .pyc

Bir .gitignore tələb olunmur, lakin qətiliklə tövsiyə olunur. Biriniz yoxdursa, inkişaf mühitinizdən lazımsız material yükləyirsiniz. Əgər inkişafda SQLite istifadə edirsinizsə, həqiqətən bu faylı əlavə etmək istərsiniz, çünki Heroku-ya ehtiyac yoxdur. Həm də istehsal mühitinizdə lazımsız sənədlərə sahib olmaq, qəribə səhvlərə səbəb ola bilər.

Git

Versiya nəzarəti üçün Git'i hələ istifadə etmirsinizsə, onu Heroku-ya yerləşdirmək üçün istifadə etməlisiniz. [Quraşdırma Bələdçisi]

$ git init $ git add -A $ git commit -m "Heroku'ya yerləşdirin"

Heroku

Heroku-ya daxil olun və hələ yoxsa CLI-ni quraşdırın. Yerləşdirdiyiniz tətbiqetmənin yuxarı qovluğunda olduğunuzdan əmin olun və aşağıdakıları edin:

$ heroku giriş $ heroku nümunə tətbiq adları yaratmaq $ git push heroku master

Çox güman ki, bu böcəklər ortaya çıxdı. Əgər belədirsə, aşağıdakı ayıklama tövsiyələrini nəzərdən keçirin. Bu iş axını əldə edildikdən sonra:

$ heroku açıq

İnşallah işlədi və tətbiqinizi tətbiq etdiniz! Şərhlərdə nəyin səhv olduğunu və bunu necə düzəltməyinizi mənə bildirin.

Debok Heroku

Saçlarınızı Heroku üzərində işləməsi üçün çıxarmazdan əvvəl tətbiqinizin yerli olaraq işlədiyinə əmin olun.

Python tətbiqetmələrini ilk dəfə yerləşdirdiyim zaman aldığım ən çox yayılmış səhv mesajı, Pip quraşdırma uğursuzluğu kimi görünür. Bənzər bir şeyə bənzəyirlər:

uzaqdan: tələbə cavab verən versiya tapılmadı pkg-resources == 0.0.0 (-r / tmp / build_1b06c0323986c42337cfd16a42542c2a / requirements.txt (sətir 11)) (versiyalardan :) uzaq: pkg- üçün uyğun bir paylanma yoxdur Resources == 0.0.0 tapıldı (-r /tmp/build_1b06c0323986c42337cfd16a42542c2a/requirements.txt (sətir 11)) Uzaqdan idarəetmə :! Push imtina etdi, Python tətbiqi tərtib edilə bilmədi.

Əgər belədirsə, requirements.txt sənədindəki versiya nömrəsini düzəltməyə çalışın. Yuxarıdakı səhv əməliyyat sistemimlə əlaqəli bir səhv olduğu ortaya çıxdı. Beləliklə, pkg-resources == 0.0.0-ı Request.txt faylından sildim və yenidən cəhd etdim.

Həqiqətən yayılmış bir başqa (və diaqnoz qoymaq çətindir!) Səhv budur ki, modullarınızdan / fayllarınızdan / qovluqlarınızdan biri Heroku-nun istifadə etdiyi modullardan biri ilə eyni ada sahibdir. İzləmə rejimini izləməklə bunun baş verdiyini deyə bilərsiniz. Yazmadığınız kodu yazmağa çalışdığına görə yazmadığınız koddan qaynaqlanan səhvləri tapmağa çalışın. Bunun düzəldilməsi təəssüf ki, ziddiyyət təşkil edən qovluqların / faylların adını dəyişdirməkdir.

Məlumat elmləri layihələrini (məsələn, tweet generatorları) yerləşdirirsinizsə, bir nöqtədə aşağıdakı kimi bir səhv görəcəksiniz:

Xəta R14 (saxlama kvotası aşıldı)

Bu o deməkdir ki, tətbiqiniz Heroku üçün çox yaddaş istifadə edir və ya kodunuzu çimdikləməlisiniz, ya da Heroku'nun istifadə edəcəyi yaddaş həcmini artırmalısınız.

Ən son səhv mesajlarına baxmaq üçün:

Heroku qeydləri - quyruq

Heroku qeydləri qarışıq görünə bilər, ancaq tanış Python izlərini axtarırlar. "Python Flask tapa bilmir" kimi messages.txt dosyanızda bir şeyin səhv olduğunu göstərə biləcək mesajları axtarın.

Ayrıca söndürə və yenidən aça bilərsiniz.

Tətbiqinizi yenidən başlatmaq üçün:

Heroku'yu yenidən başladın

Bu yazını inkişaf etdirdikcə daha çox tövsiyələrlə yeniləyəcəyəm.

Bu belədir!