Django
Django — фреймворк с открытым исходным кодом для разработки на языке программирования Python. Подходит для создания сложных веб-сервисов, которые используют базы данных.
Фреймворк основан на шаблоне проектирования, близком к Model-View-Controller (MVC). Код сервиса, при разработке которого использован Django, получается компактным, легко читаемым и готовым к быстрому расширению функциональности.
Ubuntu 18.04.5 LTS, Linux 4.15.0-55-generic Django 3.1.6 Python 3.6.9 MySQL 5.7.33 Apache 2.4.29
export FOLDER=$(yc config get folder-id) export ZONE=ru-central1-a export SA=$(yc iam service-account get cameda-service --format json | jq -r '.id') export SG=$(yc vpc sg get cam-all --format json | jq -r '.id') export SUBNET=$(yc vpc subnet get subnet-a --format json | jq -r '.id')
yc compute instance create \ --folder-id $FOLDER \ --name cameda-django \ --hostname cameda-django \ --description "Django" \ --platform standard-v2 \ --zone $ZONE \ --create-boot-disk image-family=django,size=30,type=network-ssd,block-size=8K \ --image-folder-id standard-images \ --memory 2 \ --cores 2 \ --core-fraction 100 \ --preemptible \ --network-interface subnet-id=$SUBNET,address=10.128.0.202,nat-ip-version=ipv4,security-group-ids=$SG \ --metadata serial-port-enable=1 \ --ssh-key ~/.ssh/id_rsa.pub \ --service-account-id $SA \ --async
Подключение к ВМ по ssh осуществляется от имени пользователя yc-user.
python3 -m django --version 3.1.6 Последняя версия django на момент публикации статьи 12.09.2022 - 4.1.1
apachectl -v Server version: Apache/2.4.29 (Ubuntu) Server built: 2020-08-12T21:33:25
mysql --version mysql Ver 14.14 Distrib 5.7.33, for Linux (x86_64) using EditLine wrapper
Все проекты лежат здесь: /usr/share/django-projects/ Все пароли собраны здесь: /root/default_passwords.txt
Ниже bash скрипт настройки данного образа:
#!/bin/bash set -e source /opt/yc-marketplace/yc-welcome-msg.sh source /opt/yc-marketplace/yc-clean.sh echo "Install packages ..." systemd-run --property="After=apt-daily.service apt-daily-upgrade.service" --wait /bin/true apt-get -y update mkdir -p /usr/share/django-projects echo "Updating locales ..." export LC_ALL=en_US.UTF-8 apt-get -q -y install apache2 libapache2-mod-wsgi-py3 \ mysql-client libmysqlclient-dev \ python3-pip python3-dev\ cron debconf-utils \ libssl-dev \ iptables echo "Install Django with pip3 ..." pip3 install django cd /usr/share/django-projects/ django-admin startproject welcome MYSQL_ROOT_PASS=ZkbEsVNb2rXKT echo iptables-persistent iptables-persistent/autosave_v4 boolean false | debconf-set-selections echo iptables-persistent iptables-persistent/autosave_v6 boolean false | debconf-set-selections debconf-set-selections <<< "mysql-server-5.7 mysql-server/root_password password ${MYSQL_ROOT_PASS}" debconf-set-selections <<< "mysql-server-5.7 mysql-server/root_password_again password ${MYSQL_ROOT_PASS}" apt-get -q -y install iptables-persistent mysql-server-5.7 pip3 install mysqlclient mkdir /usr/share/django-projects/welcome/static echo "Setup apache2 ..." cat > /etc/apache2/sites-enabled/000-default.conf <<EOF <VirtualHost *:80 [::]:80> ServerAdmin webmaster@localhost DocumentRoot /usr/share/django-projects/ ErrorLog \${APACHE_LOG_DIR}/error.log CustomLog \${APACHE_LOG_DIR}/access.log combined WSGIDaemonProcess welcome user=www-data group=www-data python-path=/usr/share/django-projects/welcome WSGIProcessGroup welcome WSGIScriptAlias / /usr/share/django-projects/welcome/welcome/wsgi.py <Directory /usr/share/django-projects/welcome/welcome> <Files wsgi.py> Require all granted </Files> </Directory> Alias /static/ /usr/share/django-projects/welcome/static/ <Directory /usr/share/django-projects/welcome/static> Require all granted </Directory> </VirtualHost> EOF sed -i "s/ALLOWED_HOSTS\ =\ \[\]/ALLOWED_HOSTS\ =\ \['*'\]/" /usr/share/django-projects/welcome/welcome/settings.py sed -i "/STATIC_URL/a STATIC_ROOT\ =\ '/usr/share/django-projects/welcome/static/'" /usr/share/django-projects/welcome/welcome/settings.py mkdir -p /usr/local/apache/passwd/ touch /usr/local/apache/passwd/passwords chown -R www-data /usr/share/django-projects/ generate_print_credentials; on_install; print_msg;
Полезные ссылки.
Настройка SG: https://teletype.in/@cameda/qpWd5IvF8EZ
Настройка SA: https://teletype.in/@cameda/w93lPMPQWS4
Про зону доступности тут: https://teletype.in/@cameda/S34zdiTcbUM
Сеть создавали тут: https://teletype.in/@cameda/ZbTkF70KWK9
Страничка продукта: https://cloud.yandex.ru/marketplace/products/yc/django-3
Квоты в облаке: https://teletype.in/@cameda/yTu0k42dbw0