Розгортання!
Розгортання!
Зауваження Цей розділ може бути дещо складним для освоєння. Наполегливо продовжуйте і дійдіть до кінця; розгортання - важлива частина процесу розробки веб-сайту. Цей розділ розташований посередині посібника, щоб ваш наставник зміг допомогти із дещо хитрим процесом випуску веб-сайту в Інтернет. Це означає, що ви все ще можете завершити цей курс самостійно, якщо раптом не встигаєте.
До цього часу ваш веб-сайт був доступний лише локально на вашому комп'ютері, тепер ви дізнаєтесь, як його розгорнути! Розгортання - це процес публікації вашого додатку в Інтернеті таким чином, що люди можуть зайти і побачити його :).
Як ви вже знаєте, веб-сайт має бути розміщений на сервері. В Інтернеті є багато компаній які пропонують такі послуги. Ми будемо використовувати той, який має відносно простий розгортання процес: PythonAnywhere. PythonAnywhere безкоштовний для малих додатків, в яких не дуже багато користувачів, тож нам цього точно буде достатньо.
Інший зовнішній інструмент, який ми будемо використовувати - це GitHub, платформа для розміщення коду. У нього є альтернативи, але майже кожен програміст зараз має GitHub профіль, і скоро ви будете серед них!
Ці три місця є дуже важливими для вас. Ваш локальний комп'ютер буде місцем, де ви розробляєте і тестуєте. Після того, як впевнитесь в змінах, ви перемістите копію програми на GitHub. Веб-сайт буде на PythonAnywhere і ви оновите його, роблячи нову копію коду з GitHub.
Git
Git - це "система контролю версій", яка використовується багатьма розробниками. Ця програма дозволяє відслідковувати зміни у файлах з часом так, що ви можете повернутись до певних версій пізніше. Схоже на функцію "слідкувати за змінами" в Microsoft Word, але набагато потужніше.
Встановлення Git
Примітка Якщо ви вже виконали процес встановлення, немає потреби робити це ще раз, - можете перейти до наступного кроку і почати створення свого Git репозиторію.
Створення свого Git репозиторію
Git відслідковує зміни певних файлів в репозиторії коду (коротко – "репо"). Давайте створимо "репо" для нашого проекту. Відкрийте вашу консоль та запустіть наступні команди в папці djangogirls
:
Примітка Перевірте поточну директорію за допомогою команд
pwd
(OSX/Linux) абоcd
(Windows) перед стартом репозиторію. Ви маєте бути в папціdjangogirls
.
Створення git-репозиторію відбувається тільки один раз на кожен проект (і тобі більше не потрібно буде заново вводити ім'я чи електронну пошту).
Git стежитиме за змінам всіх файлів у цій директорії, але є певні файли, які ми хочемо ігнорувати. Ми зробимо це шляхом створення файлу з назвою .gitignore
в базовій директорії. Відкрий свій редактор і створи новий файл з наступним змістом:
І збережи його як .gitignore
в директорії "djangogirls".
Примітка Крапка на початку імені файлу важлива! У разі виникнення будь-яких труднощів при створенні (наприклад, Mac не любить, коли через Finder створюють файли, імена яких починаються з крапки), використовуйте "Зберегти як" у редакторі, це повинно спрацювати.
Примітка Одним із файлів, вказаних в
.gitignore
єdb.sqlite3
. Цей файл є вашою локальною базою даних, де зберігаються пости. Ми не хочемо додавати його до нашого репозиторію, тому що веб-сайт на PythonAnywhere використовуватиме іншу базу. Ця база даних може бути SQLite, як на вашій локальній машині, але зазвичай, ми будемо використовувати базу MySQL, яка може обслуговувати набагато більше відвідувачів сайту, ніж SQLite. У всякому разі, ігнорування бази даних SQLite для копії коду на GitHub, означає, що всі створені вами пости залишаться і будуть доступні локально, але ви можете додати їх також і на продакшн. Ви повинні думати про локальну базу як про хороший майданчик, де можна тестувати різні речі і не боятися, що можна видалити реальні пости з блогу.
Перед тим, як виконати команду git add
(також, коли ви просто не впевненні що змінилось) непоганою ідеєю буде виконати git status
. Це допоможе уникнути сюрпризів, наприклад, додавання чи коміту небажаного файлу. Команда git status
повертає інформацію про файли у вашому репозиторії: untracked (не додані до репозиторію файли), modified (змінені файли), staged (файл додані до коміту), статус поточної гілки і багато іншого. Вивід повинен бути схожий на:
Зрештою, зберігаємо наші зміни. Перейдіть до консолі і виконайте наступні команди:
Викладемо наш код на GitHub
Відкриємо GitHub.com і створимо новий безкоштовний обліковий запис. (Ті хто зробили це ще на етапі підготовки - справжні молодці!)
Створимо новий репозиторій з назвою "my-first-blog". Залишимо опцію "initialise with a README" не вибраною, .gitignore порожньою (пізніше ми додамо це вручну) і License також залишимо як None.
Примітка Ім'я
my-first-blog
важливе - ви можете вибрати щось інше, але воно буде використовуватись багато разів в інструкціях нижче, і потрібно буде замінити його кожного разу. Мабуть легше просто його залишити якmy-first-blog
.
В наступному екрані ми побачимо посилання для клонування репозиторію - clone URL, скопіюємо його і вставимо у термінал:
Зараз нам потрібно під'єднати Git репозиторій на локальному комп'ютері до щойно створеного на GitHub.
Введіть у вашій консолі (замінивши <ваше-github-ім'я>
іменем користувача, вказаним під час створення облікового запису GitHub, але без кутових дужок):
Введемо наше ім'я користувача та пароль від GitHub, і побачимо щось на зразок:
Ваш код тепер на GitHub. Ходімо перевіримо! Виявляється, він у хорошій компанії - Django, Цей посібник і багато інших чудових проектів з відкритим вихідним кодом також публікуються на GitHub :)
Налаштування нашого блогу на PythonAnywhere
Примітка Можливо, ви вже створили обліковий запис на PythonAnywhere під час підготовки - якщо це так, немає необхідності робити це знову.
Завантажимо наш код на PythonAnywhere
Після входу до PythonAnywhere, ми опинимось на головній панелі або сторінці "Consoles". Виберемо опцію почати нову "bash" консоль (Start a new console - bash) - це PythonAnywhere версія консолі, схожа на ту, що на вашому комп'ютері.
Примітка PythonAnywhere побудований на основі Linux, тому, якщо ви на Windows, консоль буде трохи відрізнятись від тієї, що на вашому комп'ютері.
Давайте завантажимо наш код з GitHub у PythonAnywhere, клонувавши наш репозиторій. Наберіть наступне у консолі PythonAnywhere (не забудьте використовувати ім'я користувача GitHub замість < ваше-github-ім'я>
):
Ця команда завантажить копію вашого коду на PythonAnywhere. Давайте перевіримо, набравши tree my-first-blog
:
Створення virtualenv на PythonAnywhere
Так само як і на власному комп'ютері, створіть virtualenv на PythonAnywhere. У консолі Bash введіть:
Примітка Крок
pip install
може зайняти кілька хвилин. Терпіння і ще раз терпіння! Але якщо він займає більш ніж 5 хвилин, щось пішло шкереберть. Попросіть допомоги у вашого тренера.
Збирання статичних файлів.
Можливо ви поцікавились, що за штука цей "whitenoise"? Це інструмент для обслуговування так званих "статичних файлів". Статичні файли - це файли, які зазвичай не змінюються і не виконують ніякого коду, наприклад, HTML чи CSS файли. На серверах вони працюють інакше, ніж на вашому локальному комп'ютері, щоб сервер міг їх віддавати, нам потрібен спеціальний інструмент, такий як "whitenoise".
Пізніше, коли ми змінимо CSS для нашого сайту, ми дізнаємось трохи більше про статичні файли.
Поки що нам просто потрібно виконати додаткову команду collectstatic
на сервері. Ця команда каже Django про усі статичні файли на сервері, які йому потрібні. На даний момент це в основному файли, що допомагають зробити красивою сторінку адміністрування.
Введемо "yes" і помчали! Чи не прекрасно, коли ми можемо змусити комп'ютер друкувати незрозумілий текст сторінка за сторінкою? Кожного разу я додаю невеликий звуковий супровід: дир-дир-дир...
Створимо базу даних на PythonAnywhere
Ось ще одна річ, яка відрізняється на локальному комп'ютері і на сервері: вони використовують різні бази даних. Так що облікові записи користувачів і статті блогу можуть відрізнятися на сервері і локальному комп'ютері.
Ми можемо ініціалізувати базу даних на сервері таким самим чином, як і на локальному комп'ютері - з допомогою migrate
і createsuperuser
:
Опублікуємо наш блог як веб-додаток
Тепер наш код на PythonAnywhere, віртуальне середовище готове, статичні файли зібрані, база даних встановлена. Ми готові до публікації веб-додатку!
Перейдемо до панелі керування PythonAnywhere, натиснувши на лого сайту і виберемо вкладку Web. Тепер натиснемо Add a new web app.
Після підтвердження нашого доменного імені, виберемо ручне налаштування (manual configuration) у діалоговому вікні, зверніть увагу: варіант "Django" нам не годиться. Далі виберемо Python 3.4 і натиснемо Next для завершення.
Примітка Пересвідчіться, що ви вибрали варіант "Manual configuration", а не "Django". Ми занадто круті для стандартних налаштувань PythonAnywhere для Django ;-)
Налаштуємо virtualenv
Ми опинились на сторінці налаштувань веб-додатку на PythonAnywhere. Сюди слід переходити, якщо ви хочете зробити якісь зміни до додатку на сервері.
У розділі "Vitrualenv" натиснемо на червоний текст "Enter the path to a virtualenv" (введіть шлях до virtualenv) і напишемо: /home/<your-username>/my-first-blog/myvenv/
. Перед тим, як продовжити, натиснемо синю кнопку з галочкою, щоб зберегти шлях.
Примітка Замініть на своє ім'я користувача. Якщо ви помилитесь, PythonAnywhere покаже вам невеличке попередження.
Сконфігуруємо WSGI файл
Django використовує у роботі "WSGI протокол" - стандарт взаємодії веб-додатків на Python із веб-серверами. Він підтримується PythonAnywhere. Отже, поредагувавши конфігураційний файл WSGI, ми дозволимо PythonAnywhere розпізнати наш блог на Django.
Перейдемо за посиланням напроти "WSGI configuration file" (у розділі "Code" близько до початку сторінки - посилання матиме якусь таку назву: /var/www/<your-username>_pythonanywhere_com_wsgi.py
). Ми опинились на сторінці з редактором.
Зітремо весь вміст файлу і замінимо його таким:
Примітка Не забудьте вказати своє ім'я користувача замість
<your-username>
Примітка Третій рядок вказує PythonAnywhere, як знайти наш додаток. Дуже важливо, щоб цей шлях був коректним і щоб не було зайвих пробілів. Інакше ви побачите "ImportError" в логах помилок.
Завдання цього файлу - розповісти PythonAnywhere, де живе наш веб-додаток і як знайти файл із налаштуванням Django. Також він налаштовує інструмент для статичних файлів "whitenoise".
Натиснемо Save і перейдемо назад до вкладки Web.
Готово! Натискаємо на велику зелену Reload кнопку і можемо глянути на свій веб-додаток. Посилання на нього вгорі сторінки.
Підказки для відлагодження (debug)
Якщо відвідавши ваш сайт, побачили повідомлення про помилку, найперше, куди слід подивитись - це лог помилок. Перейти до нього можна із вкладки Web PythonAnywhere. Гляньте, чи є там повідомлення про помилки; найновіші будуть внизу файлу. Найчастіше трапляються такі проблеми:
Забули ввести одну із команд у консолі: створення віртуального середовища, його активацію, встановлення туди Django, збирання статичних файлів, міграцію бази даних.
Зробили опечатку в шляху до virtualenv на вкладці Web - в такому разі, там можна буде побачити маленьке червоне повідомлення про помилку.
Помилились у конфігураційному файлі WSGI - перевірте шлях до своєї директорії my-first-blog.
Ви точно вибрали таку ж версію Python для віртуального середовища, як і для веб-додатку? Обидві повинні мати версію 3.4.
Пам'ятайте, що ваш тренер може допомогти!
Ми вийшли у світ!
На сторінці за замовчуванням нашого сайту має бути напис "Welcome to Django" так само, як і на вашому локальному комп'ютері. Спробуємо додати admin
у кінці URL і опинимось у панелі адміністратора. Використаємо для входу логін і пароль та побачимо, що тут можна додавати нові пости на сервер.
ДОБРЯЧЕ похваліть себе! Розгортання на сервер - один з найхитромудріших етапів веб-розробки. Зазвичай люди витрачають дні, щоб усе запрацювало. Але вам вдалось вийти у справжній інтернет, запросто!
Last updated