나의 개발일지(김지헌)
네이버 클라우드 server, Object Storage, global dns ,cdn+ 사용 해보기 본문
네이버 클라우드 플랫폼은 도메인 구매 대행 서비스를 하지 않기 때문에 도메인 구입먼저 시작하기
vpc와 classic있는데 classic으로 진행 한다.
1. 도메인 구매 및 글로버DNS 적용
1. 도메인 구매( ex. 가비아, route53 등 도메인을 구매한다)
2. 네이버클라우드 플랫폼 로그인 후 콘솔에 접속 한다
3. 접속해서 services 탭에서 global DNS 검색 후 접속 한다.
4. 접속 후 도메인 추가 버튼 클릭 -> 이름에 구매한 도메인을 적고 추가 버튼 클릭
5. 완료 되면 위와 같은 화면이 뜰꺼고 master Ns가 네임 서버이며 도메인 구매한 사이트에 접속해서 네임서버를 바꿔주면
도메인 설정이 완료 된다. (ex. ns1-1.ns-ncloud.com ns1-2.ns-ncloud.com)
2. 오브젝트 스토리지 등록
1. services 탭에서 Object Storage 검색 후 접속
2. 버킷 생성 클릭 -> 버킷 이름 설정 -> 설정 및 암호화 관리 -> 권한 관리 -> 최종 확인 후 생성 하면 된다.
3. 정상 적으로 완료 했으면 index.html 파일 업로드 할 때 권한 및 메타 데이터 설정 클릭, 공개 클릭 후 업로드 진행
3.1 정적 웹 사이트 호스팅 설정 버튼 활성화
4. 활성화 후 버킷에 업로드 한 index.html 파일을 설정 후 확인 버튼을 누르면 엔드포인트가 정상적으로 뜨고 접속시 정상 작동 할 꺼다.
3. 서버 생성
1. 콘솔에서 서비스에 server 검색 후 접속 후 서버 생성 클릭
2.원하는 설정 선택 후 다음(ubuntu로 진행 할려고 한다)
3. 원하는 서버 타입과 서버 이름 등록 후 다음 -> 인증키 생성
4. 신규 ACG 생성 버튼 클릭 후 -> 아래 처럼 등록 한다. 최종 검토 후 생성
5. 서버가 생성 완료 하면 공인IP를 설정 해야 외부에서 접속이 가능하다. server탭에서 public IP 선택 후 적용서버에서 방금 생성한 서버 클릭 후 최종 확인 하면 된다.
6. gitbash나 puppy로 접속할려면 관리자 비밀번호가 필요하다. 생성한 서버 클릭 -> 서버 관리 및 설정 변경 에서 관리자 비밀 번호 확인 클릭 -> 발급 받은 인증키를 업로드 하면 비밀번호를 알 수 있다-> 서버로 접속 할 때 필요한 pw이다.
7. 그 후 global DNS 접속 후 레코드 추가 버튼 클릭 -> 아래와 같이 선택 후 레코드 값에는 퍼블릭 IP를 적고 추가 클릭->
설정 적용 버튼 클릭 해야 배포가 완료 된다.
3. cdn+
1.콘솔 접속 후 service탭에서 cdn+ 검색 후 접속 후 cdn 신청 클릭
2. 이름 작성 -> https 선택
3. 원본 위치에 전에 생성한 버킷을 선택 한다 -> 나머지 옵션들 설정 해주고 생성
4. 생성 완료 후 cdn+서비스도메인/index.html 입력 하면 https로 접속 된다.
4. nginx로 ssl 적용 및 서비스 리다이렉션 적용
1.
nginx 설치
[NginX 설치]
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install nginx
[Nginx 버전 확인]
sudo dpkg -l nginx
[nginx 시작 및 자동 실행]
sudo service ngnix start
sudo systemctl start nginx
[Nginx 상태 확인]
sudo systemctl status nginx
[Config 테스트]
sudo nginx -t
--------- 경로 바꾸기 ㅍㅐ스 해두됨---------
[nginx proxy_pass 설정하기]
cd /etc/nginx/sites-available/
[default 파일 확인]
ls -al -리스트 형식
[default 파일 수정]
vi default
or
sudo nano default
[location 이하 정보 수정 예시]
[location은 specific uri 에 대한 behavior를 정의하며 server 내부에 작성합니다.]
[proxy_pass는 현재 서버에 / 로 시작하는 path로 접근하면,
http://127.0.0.1:8000;으로 돌려준다는 의미
그러면 실제 사용자는 8000 접근하지 않았지만 8080 포트에 접근한 것과 동일한 효과가 발생한다.
즉 uri1로 시작하는 요청을 3000으로 보내는 것]
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
location /api(요청들어오는 url정보) {
proxy_pass http://127.0.0.1:3000;
proxy_read_timeout 600;
}
[재부팅 할때도 설정 유지]
sudo apt update && sudo apt upgrade
[Nginx 재시작]
sudo service nginx restart
OR
sudo systemctl reload nginx
--------- 경로 바꾸기 ㅍㅐ스 해두됨---------
설정 한 후 접속 하면 nginx 가 표시 되면 정상 작동 되는거다.
2. cerbot 설치
sudo apt update
sudo apt install certbot
[인증서 발급]
sudo certbot certonly --nginx -d <your-domain>
------
[인증서 발급 에러시]
[Error- Saving debug log to /var/log/letsencrypt/letsencrypt.log
Could not choose appropriate plugin: The requested nginx plugin does not appear to be installed
The requested nginx plugin does not appear to be installed]
sudo apt-get update
sudo apt-get install python3-certbot-nginx
[설치 후 다시 인증서 발급 진행]
sudo certbot certonly --nginx -d <your-domain>
------
[sites-available에 구성 파일 생성]
sudo nano /etc/nginx/sites-available/<your-domain>
[<your-domain>]
server {
listen 80;
server_name <your-domain>;
#도메인 접속시 https로 리다이렉션 시키겠다.
return 301 https://<your-domain>$request_uri;
}
server {
listen 443 ssl;
server_name <your-domain>;
ssl_certificate /etc/letsencrypt/live/<your-domain>/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/<your-domain>/privkey.pem;
location / {
proxy_pass http://네이버버킷.s3-website.kr.object.ncloudstorage.com;
proxy_read_timeout 600;
}
location /api {
proxy_pass http://127.0.0.1:3000;
proxy_read_timeout 600;
}
}
[저장 후 종료]
[enabled폴더에 도메인구성파일 심볼 생성]
sudo ln -s /etc/nginx/sites-available/<your-domain /etc/nginx/sites-enabled/<your-domain>
[nginx 설정 테스트]
nginx -t
[정상시 메세지]
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[nginx 재시작]
sudo service nginx restart
3. cron 작업으로 자동갱신
[crontab 접속]
sudo crontab -e
[crontab]
0 0 */90 * * certbot renew --nginx --quiet ***90일 마다 자동 갱신 수행(출력제거)
0 0 */90 * * certbot renew --nginx ***90일 마다 자동 갱신 수행(출력표시)
[갱신 테스트]
sudo certbot renew --dry-run ***실제로 갱신은 되지 않음
이슈 :
1 : 오브젝트스토리지 정적 웹호스팅 엔드포인트(또는 cdn+서비스 도메인)를 global dns에 레코드 추가 후 설정한 도메 인 으로 접속시 엔드포인트로 리다이렉션 적용 안됨.(추가적으로 도메인/index.html로 적어야 정상 작동)
1.2 : 해결방법 - 서버에서 nginx를 이용해서 도메인 접속시 해당 경로(버킷앤드포인트 or cdn+서비스도메인)로 리다이 렉션 적용
**네이버 클라우드 플랫폼은 지정 도메인으로 리다이렉트 되지않는다.
2 : cdn+서비스도메인으로 리다이렉션 할 시 도메인이름으로 표시 안되고 cdn+주소가 입력 되는 이슈
2.1 : 해결방법 - 버킷의 앤드포인트로 이동 시켜서 접속 하게 했다.
3 : 도메인 접속시 https로 이동안하고 http로 접속 되는 점
3.1 : sites-available/default에서 설정은 했지만 sites-enabled에 심볼을 추가해야 정삭 작동 된다.
[sites-available에 구성 파일 생성]
sudo nano /etc/nginx/sites-available/<your-domain>
[<your-domain>]
server {
#http
listen 80;
server_name <your-domain>;
return 301 https://<your-domain>$request_uri;
}
server {
#https
listen 443 ssl;
server_name dd-lms.com;
ssl_certificate /etc/letsencrypt/live/<your-domain>/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/<your-domain>/privkey.pem;
location / {
proxy_pass http://네이버버킷.s3-website.kr.object.ncloudstorage.com;
proxy_read_timeout 600;
}
location /api {
proxy_pass http://127.0.0.1:3000;
proxy_read_timeout 600;
}
}
[저장 후 종료]
[enabled폴더에 도메인구성파일 심볼 생성]
sudo ln -s /etc/nginx/sites-available/<your-domain /etc/nginx/sites-enabled/<your-domain>
[nginx 구성 테스트]
nginx -t
[정상시 메세지]
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[nginx 재시작]
sudo service nginx restart
이후 도메인에 접속 http://your_domain 으로 접속해도 https://your_domain으로 이동하는걸 볼 수 있다.
'공부' 카테고리의 다른 글
413 request entity too large nginx/1.14.0 (ubuntu) 에러 (0) | 2023.08.03 |
---|---|
nginx 설정 (0) | 2023.07.27 |
시퀄라이즈 hooks 사용해보기 (0) | 2023.04.27 |
route53 S3버킷으로 HTTP 도메인 리다이렉션하기 + 클라우드 프론트 (0) | 2023.04.18 |
nodemailer로 메일 보내기 (0) | 2023.04.06 |