Кубернаны были бы слишком сверх
В марте я попробовал изучать Nginx, балансировщик нагрузки, обратный прокси и гораздо больше. В то же время я смотрел на покупку домена для моего портфолио. Сейчас пытаясь применить эту новую суперпулющую силу, которую я получил, я пытался развернуть его статическое резюме на виртуальной машине. Как я это сделал, продолжайте читать статью …
Шаг 1: Доберизировать свой сайт
Я использую Vite-Vue, чтобы сделать мой портфолио. Почему вы можете спросить, потому что я могу сломать разные разделы на компоненты, а также легче обновить информацию. Окончательная сборка компактна, и никто не может легко скопировать его легко (я не знаменитость, ни выдающийся инженер-программист).
Это мой файл конфигурации: Dockerfile Отказ Это будет работать с реагированием, Vue, угловой или любой структурой (надеюсь, что это работает для других)
FROM node:15.12.0-alpine3.10 as build-stage WORKDIR /app COPY . ./ RUN yarn install && yarn run build FROM nginx as production-stage RUN mkdir /app COPY --from=build-stage /app/dist /app COPY nginx.conf /etc/nginx/nginx.conf
- Если вы решаете эту статью, пожалуйста, чек версия Docker Base Image здесь Отказ
- Также посмотрите на финальную папку сборки вашей рамки генерируют, для Vue его
/свбольше ничего не будет работать
Создать другой файл с именем .dockerignore.
**/node_modules **/dist
Опять смотреть на /св
Создать файл с именем: nginx.conf Файл в Ваш каталог проекта , а не ваша виртуальная машина /etc/nginx
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;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root /app;
index index.html;
try_files $uri $uri/ /index.html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
}
Сохранить и совершать изменения
Создать виртуальную машину
Теперь это часть, где я полагаю, у вас есть виртуальная машина и иметь немного знаний об этом
- Если вы используете AWS EC2, то создайте новую группу безопасности, давая доступ ко всем в порту 80
- Если вы используете цифровой океан или подобное обслуживание, то я надеюсь, что это сделано для вас
После создания VM установите следующие
sudo apt-get install nginx nano letsencrypt
наноДля редактора вам также может понадобиться git.
Затем запустите: nginx -s перезагрузить И перейдите на внешний IP вашей виртуальной машины с помощью браузера, вы увидите страницу приветствия Nginx, если вы не можете, попробуйте перезапустить виртуальную машину или подождать 5 минут, есть некоторые проблемы с сетью.
Все сделано до сюда, отлично
Затем установите Docker
curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh
Строительство контейнера Docker
- Клонировать репо в вашу виртуальную машину
CDвнутрь- Бегать
sudo docker build . -t resume sudo docker run -d -p 8080:80 resume
Сделать это онлайн
Если у вас еще нет собственного доменного имени, продолжайте чтение в остальном Перейти к следующей части
- Как администратор, удалите по умолчанию
nginx.confФайл в/etc/nginxпапка
sudo rm -f /etc/nginx/nginx.conf
- Создать новый
nginx.confв/etc/nginxкаталог с помощью бега
sudo nano /etc/nginx/nginx.conf
- Вы должны супер пользователя, чтобы использовать этот файл
- Вставить следующий контент
http {
server {
listen 80;
location / {
proxy_pass http://127.0.0.1:8080/;
}
}
}
events { }
Сохраните свой файл, нажав Ctrl + O , подтверждая его и выйти нажав Ctrl + X.
потом бегать
sudo nginx -s reload
Вы переходите к внешнему IP вашей виртуальной машины, вы увидите свой сайт
Если у вас есть собственный домен
Запустите следующее, чтобы генерировать сертификат TEMP
sudo certbot certonly --standalone
Пройти все шаги
Ключи расположены по адресу:
/etc/letsencrypt/live/[ dns ]/fullchain.pem /etc/letsencrypt/live/[ dns ]/privkey.pem
Открыть nginx.conf в /etc/nginx папка и заменить содержание с помощью {dns без http и www}
http {
server {
listen 80;
listen 443 ssl http2;
ssl_certificate /etc/letsencrypt/live/{dns without http and www}/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/{dns without http and www}/privkey.pem;
ssl_protocols TLSv1.3;
location / {
proxy_pass http://127.0.0.1:8080/;
}
}
}
events { }
Беги sudo nginx -s перезагрузить и подождите и проверьте домен
Надеюсь, вам понравится, если вы найдете любую проблему, ошибка, пожалуйста, прокомментируйте ниже
Оригинал: «https://dev.to/dev117uday/deploying-react-vue-on-a-virtual-machine-52dj»