Созданное приложение на фреймворк Django - перенести на сервер. На выбор два облака - яндекс и таймвеб. Я зачем-то создал на обоих серверах виртуальные машины. Попихавшись вчера в созданной ВМ на яндексе - мне показалось что он лучше, но там нету арч.линукс как у меня. Но в яндексе удобней, там уже все необходимые приложения есть "из коробки" ничего не нужно доустанавливать. Или мне так показалось. По крайней мере я очень быстро развернул приложение на сервере. Но синтаксис убунту мне мало знаком. Поэтому перешел на ТВ.
Я не зафиксировал то, как я создавал "виртуальную машину" (возможно это было бы полезно для таких же новичков, как и я). Ну да ладно. Едем дальше.
Итак - вот она, моя ВМ, на основе Arch Linux :
Нужно войти, для этого я создавал ssh ключи (один, который ".pub", я указывал при создании ВМ) второй остается на моём компьютере, и будет использоваться при подключении к ВМ через SSH.
Создать ключи можно командой:
ssh-keygen -t rsa -b 2048 -C <"любое имя"> -f <как мы назовем файл>
выглядит это так:
ssh-keygen -t rsa -b 2048 -C "Timeweb Machine" -f timeweb
В домашней папке у нас появятся два файла, один из них посредством команды cat timeweb.pub выведем на экран терминала
Его надо было скопировать и вставить в настройки виртуальной машины при её создании.
Ну раз ВМ создана, подключимся, нужно находиться в той директории где лежат ssh-ключи (верней один ключ, timeweb):
ssh -i timeweb root@217.18.63.218
При первом подключении будет дурацкий вопрос, что-то из разряда "а вы точно хотите подключиться к этой сети?!". Отвечаем "yes" и после чего нас система спрашивает о root пароле. Его можно скопировать тут (нажимаю "скопировать":
А в терминале - сочетание клавиш Shift + Insert вставляет этот пароль. Ни звездочек, ничего, что бы сигнализировало о том что я вставил пароль, как будто ничего не произошло, поэтому у меня первая попытка была не успешной (х.з. чего там в буфере обмена содержалось). Пришлось снова нажать "скопировать" на сайте timeweb.cloud (возможно я хотел нажать, но не нажал в первый раз).
Вот мы вошли в систему, под root'ом. Система абсолютно пустая (как оказалось позже - даже редактора vi нет). Нужно установить всё необходимое программное обеспечение для развертывания созданного мною django приложения (сайта).
Первые шаги в свежесозданной системе
Начинаю с создания пользователя, с уровнем доступа sudo (надеюсь не надо объяснять это). Создаю:
Пользователь создан, необходимо отредактировать файл /etc/sudoers, куда необходимо внести этого пользователя. Но в процессе понял, редактора vi в системе нет и надо было, для начала, обновить систему командой:
pacman -Syu
После завершения обновления установил vim (типа улучшенная версия vi, есть еще neovim, но об этом в другой раз).
Теперь можно редактировать /etc/sudoers, открываем файл и переходим в самый низ до строчки # %wheel ALL=(ALL:ALL) ALL
Теперь созданному пользователю eugene необходимо задать пароль, делаем:
После чего меняем пользователя на созданного eugene и пробуем установить какую-нибудь программу, например mc (midnight commander)
Ну вот, пользователь создан, он может при помощи sudo устанавливать программы, идем дальше.
Нужен git, устанавливаем: sudo pacman -S git
Затем создаем директорию под проекты, например projects: mkdir projects
Переходим в нее: cd projects
Клонируем репозиторий приложения django, ссылку на него я взял из своего репозитория:
git clone git@gitlab.skillbox.ru:evgenii_vorontsov_1/20-prod.git
Клонирование завершилось неудачей
Я еще не создавал ssh-key для этой виртуальной машины и GitLab просто с ней не знаком, для этого создаём ключ:
ssh-keygen -t rsa
Ну вот, теперь гитлаб знаком с виртуальной машиной, можно повторить git clone
Проект теперь на виртуальной машине
Пока я что-то делал и комп пустовал, меня выкинуло из системы, теперь я уже захожу под созданным ранее пользователем и паролем:
Теперь по идее нужно установить docker compose дабы собрать приложение django на виртуальной машине. Делаю поиск в pacman, дабы узнать что же нам предлагается по имени "docker"
sudo pacman -Ss docker
В Pycharm у меня всё работало, следовательно нужно проверить версии docker и docker compose, их и выберу для установки
Установка прошла успешно:
Вот и первая ошибка при попытке создать докер-билд, я забыл сделать файл .env из которого будут браться переменные с ключами.
исправляем это недоразумение, у меня в репозитории есть шаблон: .env_template, из него я создам файл .env, с помощью команды копирования "ср":
cp .env_template .env
и отредактирую его в VIM
Пробую снова собрать билд и опять проблемы, немного погуглив решаю. Снова ошибки. Форумы говорят надо сделать перезагрузку, делаю. И вот сервис докер запустился!!!
Запускаю сборку. Пока "полёт" нормальный.
Сборка завершена
Пробую запустить. Запустилось...
Неужели и в браузере откроется?! Офигеть, открылось!
Но работает не совсем корректно, стили CSS не подгружаются и выглядит совершенно не так как при запуске на локальной машине командой python manage runserver. Тут уже какая то недоработка в docker, ибо и на локальной машине запускалось docker compose up app точно так же.
Задача была выложить проект на сервер и запустить и чтобы он был доступен. Это я сделал.
Но осталось огромное "НО", после запуска приложения на удаленном сервере. Я попытался войти под админом и у меня всё упало. Ладно, время обед, надо прогуляться.
Я всё забываю что я не на локальном компе, а где-то там... и что тут еще ничего нет. Нужно после гит клона установить все зависимости, сделать миграции, создать суперпользователя баз данных.
Пришел с прогулки и тут же принялся за работу. Тут я приведу лишь скриншот того чего я делал... Были ошибки, почему-то папка (и сама база данных) баз данных создалась с неполными правами, то есть только superuser мог читать и править это дело.
Всё снова пересобрал, запустил и всё работает. Почти правильно. Но не работают стили CSS, не знаю почему в docker они теряются, а в python manage.py runserver все работает. Но тема занятия была не об этом...
Для сравнения, запуск без докера, на локальном компьютере.
И от же локальный компьютер но уже в собранном докером пакете
Ну вот в общем такие дела, кому интересно - ссылка на сайт с приложением. Не известно как долго она будет активна. Но сервер пока не выключаю...
Народ, просьба - подписка, лайк.
Да пребудет с вами СИЛА!