Все статьи связаны непосредственно с ОС Linux: разработка сайтов, поддержка серверов, утилиты и лайфхаки при работе с данной ОС.
Имеется статический веб-сайт, никакой динамики, максимум js. Необходимо создать из него Docker-образ, затем загрузить его на Production-сервер и подключить SSL.
FROM nginx
COPY ./ /usr/share/nginx/html/
Здесь From nginx - будет загружен image nginx с репозитория Docker Hub и будет использоваться по умолчанию он
Copy “./” - копируем содержимое текущей папки с сохранением дерева каталогов в каталог /usr/share/nginx/html/ .
В терминале переходим в текущий каталог с сайтом и вводим следующее для сборки image:
docker build -t myproject .
Не забываем поставить в конце точку. “myproject” - название вашего проекта
docker run -it -p 80:80 myproject
Теперь мы хотим загрузить наш образ (image) в свой репозиторий на Docker Hub, необходимо навесить тег на наш образ:
docker tag myproject legeminus/myprojectrepo
Тут tag <myproject> - название нашего имеющегося образа Docker. legeminus - ваш юзернейм на DockerHub, myprojectrepo - название тега (репозитория), в моем случае это endlessnights
docker push legeminus/myprojectrepo
Собираем Образ Docker для amd64/linux из под Apple M1 (arm)
Зачем это нужно. Docker для Apple Silicion готовить образ для ARM, а облачные vps обычно на Linux, поэтому нам нужно изменять целевую платформу, на которой будет запускаться контейнер с данным образом.
Сразу же пушим в Docker Hub, так как локально данный образ не запустится, так как подготовлен для платформы Linux/AMD64
docker buildx create --use
docker buildx build --platform linux/amd64,linux/arm64 --push -t legeminus/en2 .
где legeminis/en2 - тег.
Точка в конце обязательна!
Готовим конфигурации для Nginx. Создаем файл конфигурации самого проекта:
server {
listen 80;
server_name endocker.endlessnights.ru;
location / {
root /data/www;
index index.html;
}
}
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/ensite.conf;
}
FROM nginx
COPY ./ /data/www/
COPY ensite.conf /etc/nginx/conf.d/ensite.conf
COPY nginx.conf /etc/nginx/nginx.conf
docker buildx build --platform linux/amd64,linux/arm64 --push -t legeminus/en3
docker pull legeminus/en3
docker run -p 800:80 legeminus/en3
На данном облачном сервере уже имеется другой экземпляр работающего nginx, на котором "крутятся" другие сервисы/сайты не на рельсах Docker, поэтому мы будем проксировать nginx внутри Docker-контейнера через nginx, который работает в самой ОС Linux как служба, поэтому внешний порт 800, а внутри контейнера 80 порт.
Создаем конфигурацию "внешнего" nginx для нашего проекта, в моем случае endocker (без расширения):
server {
listen 80;
server_name endocker.endlessnights.ru;
location / {
proxy_pass http://127.0.01:800;
}
sudo ln -s /etc/nginx/sites-available/endocker /etc/nginx/sites-enabled/
sudo nginx -t
sudo service nginx restart
certbot
>Saving debug log to /var/log/letsencrypt/letsencrypt.log
>Plugins selected: Authenticator nginx, Installer nginx
Which names would you like to activate HTTPS for?
Выбираем наше доменное имя, которое указывали во "внешнем" конфигурационном файле nginx нашего проекта
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
Здесь выбираем цифру 2, чтобы все запросы на http редиректились на https.
Итоговый результат файл конфигурации nginx endocker.nginx:
server_name endocker.endlessnights.ru;
location / {
proxy_pass http://127.0.01:800;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/endocker.endlessnights.ru/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/endocker.endlessnights.ru/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}server {
if ($host = endocker.endlessnights.ru) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name endocker.endlessnights.ru;
return 404; # managed by Certbot
В данной статье хотелось бы затронуть мобильную тематику в популярной RouterOS, а именно подключение 3G/4G(LTE) модемов к роутерам компании MikroTik
Продолжить Чтение...Развернутая инструкция по настройке nginx, Gunicorn и SSL для вашего Django проекта в продакшене.
Продолжить Чтение...Кратчайшая минималистичная инструкция по сборке кластера на ESXI и немного про резервирование
Продолжить Чтение...