Кубернаны были бы слишком сверх
В марте я попробовал изучать 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»