Установка Debian сервера: Nginx, Python, PostgreSQL, PHP
Эта статья нужна мне самому, чтобы не забывать что нужно поставить и вообще что делать.
Ниже простой список команд после того как вы попали в root
Обновление пакетов
apt update
apt upgrade
Установка пакетов
apt install zsh git wget curl tmux sudo python3 nginx htop sudo nginx apt install python3-pip apt install postgresql postgresql-contrib apt install python3-acme python3-certbot python3-mock python3-openssl python3-pkg-resources python3-pyparsing python3-zope.interface apt install python3-certbot-nginx apt install libpq-dev python3-dev
Включение Oh My Zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" chsh -s /bin/zsh
Чтобы поменять тему — открыть файл ~/.zshrc, и в поле ZSH_THEME заменить значение. Другие темы тут
ZSH_THEME="agnoster"
Включение сервисов автоматически после перезапуска
sudo systemctl enable nginx sudo systemctl enable postgresql
Установка основных PIP пакетов
У меня их достаточно много, у меня на все репозитории одинаковые так что как-то так
python3 -m pip install psycopg2 flask flask_cors flask_restful marshmallow PyYAML urllib3 requests peewee backoff setproctitle flask_restful hashlib
Добавление пользователя и переход к нему
adduser daniilak usermod -aG sudo daniilak su - daniilak
Генерация ssh-ключа
ssh-keygen -t ed25519 cat /home/daniilak/.ssh/id_rsa.pub
Настройка PostgreSQL
sudo passwd postgres usermod -aG sudo postgres su - postgres sudo -u postgres psql -c "SELECT version();" sudo su - postgres -c "createuser daniilak" sudo su - postgres -c "createdb daniilak" sudo nano /etc/postgresql/13/main/postgresql.conf
Чтобы узнать как настраивать параметры — можно глянуть в PG Tune
sudo nano /etc/postgresql/13/main/pg_hba.conf
Это я сейчас не помню, так что пусть будет так:
# "local" is for Unix domain socket connections only local all all trust # IPv4 local connections: host all all 127.0.0.1/32 md5 # IPv6 local connections: host all all ::1/128 md5 # Allow replication connections from localhost, by a user with the # replication privilege. local replication all peer host replication all 127.0.0.1/32 md5 host replication all ::1/128 md5
Перезапустить службу
sudo systemctl restart postgresql.service
Настройка NGINX
Нужно зайти в конфиг, который можно переименовать в виде названия домена, но и так норм (нет)
sudo nano /etc/nginx/sites-available/default
Конфиги приведены для flask приложений, которые запускаются как python3 app.py и имеют команду, например
app.run(host='0.0.0.0', port=5001)
Тут два варианта:
- Если есть домен и настроен certbot для let’s encrypt и можно настроить https. Не забыть заменить example.ru на свой
server { client_max_body_size 100M; listen [::]:80 default_server ipv6only=on; listen 80 default_server; server_name example.ru; return 301 https://$host:443$request_uri; } server { client_max_body_size 100M; listen [::]:443 ssl ipv6only=on; listen 443 ssl; server_name example.ru www.example.ru; location /path/ { proxy_pass http://localhost:5001; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } location / { proxy_pass http://localhost:5000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
- Если домена нет, то придется обойтись http
server { listen 80 default_server; client_max_body_size 100M; listen [::]:80 default_server ipv6only=on; server_name _; location /path/ { proxy_pass http://localhost:5001; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } location / { proxy_pass http://localhost:5000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
Проверить на ошибки кофиг и перезапустить службу
nginx -t nginx -s reload
Настройка ssl на домен
certbot --nginx -d example.ru -d www.example.ru nginx -t nginx -s reload
Вроде бы всё из самого основного