Создать аналог Stack Overflow с возможностью задавать вопросы и отвечать на них.
- Python
- Django
- Gunicorn
- Nginx
- MySQL
- Установить mysql:
sudo apt install mysql-server sudo apt install libmysqlclient-dev python3-dev build-essential
- Запуск mysql:
sudo systemctl start mysql sudo systemctl enable mysql - Вход в cli:
sudo mysql -u root -p
- Создание базы данных:
CREATE DATABASE name_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'projectuser'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON name_db.* TO 'projectuser'@'localhost'; FLUSH PRIVILEGES; EXIT;
- В settings.py указать:
DATABASES['default'] = DATABASES['main']
- Прописать креды для подключения к базе данных в
.env(пример есть в.env.example).
- Установить необходимые пакеты в виртуальное окружение:
pip install -r requirements.txt
- Применить миграции к базе данных:
python manage.py migrate
- *Для заполнения базы данных рандомными данными выполнить команду:
где
python manage.py fill_db [ratio]
ratio- числовой коэффициент, определяющий количество создаваемых объектов:- пользователей = ratio
- вопросов = ratio * 10
- ответов = ratio * 100
- тэгов = ratio
- лайков = ratio * 200
- Запустить gunicorn (backend сервер):
gunicorn -c gunicorn.conf.py
- Запустить nginx (reverse proxy сервер):
Конфигурационный файл nginx находится в папке
sudo systemctl start nginx
nginx. Его нужно скопировать в/etc/nginx/sites-available/и создать символическую ссылку в/etc/nginx/sites-enabled/. После этого, можно запускать nginx командой выше. - Выполнить сбор статических файлов:
python manage.py collectstatic
- Добавить задачу регулярного кэширования в cron:
python manage.py crontab add
- Установка Centrifugo:
cd dir/to/install/centrifugo wget https://github.com/centrifugal/centrifugo/releases/download/v5.0.0/centrifugo_5.0.0_linux_amd64.tar.gz tar -xzf centrifugo_5.0.0_linux_amd64.tar.gz sudo mv centrifugo /usr/local/bin/ - Создание конфигурации:
centrifugo genconfig cat config.json
- В конфиге будут указаны токены, которые необходимо добавить в
.env. - Желательно ещё добавить в конфиг строку
"port": "8001", чтобы centrifugo не конфликтовал с django. - Запуск centrifugo:
centrifugo -c config.json