IT/클라우드

[오라클 클라우드] 무료 웹 서버 구축기 (2024년 기준 평생 무료 VPS 호스팅, 무료 도메인 등록, SSL 인증서 자동갱신)

snapcoder 2024. 8. 5. 19:28
728x90
반응형
SMALL

[오라클 클라우드] 무료 웹 서버 구축기 (2024년 기준 평생 무료 VPS 호스팅, 무료 도메인 등록, SSL 인증서 자동갱신)

 

 

 

 

 

 

도커 생각 있으신분들은 2번부터 보시면 됩니다.

2024.08.11 - [IT/기타] - [오라클 클라우드] 무료 웹 서버 구축기2 (인텔리제이, 도커)

 

[오라클 클라우드] 무료 웹 서버 구축기2 (인텔리제이, 도커)

[오라클 클라우드] 무료 웹 서버 구축기2 (인텔리제이, 도커)   대범이가 노래를 부른 그놈의 도커.이번 기회에 나도 한번 직접 해보자는 생각이 들었다.    도커란 무엇인가?Go언어로 

snapcode.tistory.com

 

 

 

 

 

 

 

이 무궁무진한 WWW 세상 속에

나도 내 웹페이지 하나쯤 만들어 보자

코딱지만하더라도 재밌지 않겠는가

 

 

 

 

 

 

 

첫번째 시도. 구글 클라우드

구글로 하려다가

미국 일부 지역에서의 특정 스펙에 대해서만 무료라던데

찾아봐도 안보이고 정책이 바뀐 것 같았다.

인스턴스 생성시 어떤 리전과 스펙을 선택해도 과금된다고 뜨길래, 그냥 안눌렀다.

 

 

 

저번에 정리했던 블로그 글에서 내용이 업데이트된걸로 보인다.

2024.07.04 - [IT/기타] - [서버] 서버 개발을 위한 평생 무료 클라우드 및 가상머신 알아보기 (+무료 호스팅 배포는 덤)

 

[서버] 서버 개발을 위한 평생 무료 클라우드 및 가상머신 알아보기 (+무료 호스팅 배포는 덤)

나는 지금 개발하기 위해 서버가 필요하다.  각 클라우드 서비스와 가상 머신 설치 방법에 대한간결하고 구체적인 정보와각 항목 서비스의 장점과 단점, 사용 방법을 요약해보았다.     클

snapcode.tistory.com

 

 

 

 

 

 

다시 비교해보자

무료 VPS(호스팅) 서비스 비교 표

 

 

 

 

 

 

 

갓라클 오라클 ! ARM으로 해보자

사이트 들어가자마자 "상시 무료 클라우드" 단어가 눈에 띈다.

 

https://www.oracle.com/kr/cloud/free/

 

클라우드 서비스 무료 이용

Oracle Cloud Free Tier는 기업에게 무제한으로 사용할 수 있는 상시 무료 클라우드 서비스를 제공합니다.

www.oracle.com

 

 

 

 

 

사전준비 완료

계정생성

로그인

결제정보 입력

 

 

 

 

 

 

 

 

 

ARM서버 만들기

ARM이란?

오라클 클라우드에서 ARM은 "Advanced RISC Machine"을 의미하며, 효율적이고 저전력 소모의 RISC 기반 프로세서 아키텍처를 지칭함

 

 

 

 

 

 

 

무료 설정 그대로 인스턴스 생성 완료

 

 

 

 

 

 

고정 IP 만들기 (선택이라곤 하나 사실상 필수코스)

서버를 만들었으니 이제 인터넷에 연결될 주소를 고정시켜 줘야 합니다. 서버가 인터넷 통신을 하기 위해서는 IP주소가 필요한데, 이 IP주소가 유동적으로 움직이게 되면 움직일 때 마다 도메인 속성을 바꿔줘야 하기 때문입니다.
컴퓨트 – 인스턴스 – 만든 인스턴스 선택 후 연결된 VNIC 를 선택합니다.

 

기본으로 만들어져있는 VNIC 이름 클릭

 

 

 

 

 

최우측 ... 클릭해서 편집

 

 

공용ip 없음 선택 후 업데이트

 

 

 

 

 

다시 편집 매뉴로 들어가서 예약된 공유 IP – 새 예약된 IP주소 생성을 누릅니다. 이름은 알아볼 수 있는 것으로, IP주소 소스는 Oracle로 선택

 

 

 

 

 

 

 

IP주소 고정 완료

 

이제 이 ip주소를 도메인에 연결해줄 예정입니다

 

 

 

 

 

 

SSH 연결하기

무료 SSH 클라이언트 및 터미널 에뮬레이터 중에서 MobaXterm 를 다운받아서 진행했습니다.

host에 공용ip를 입력

private key에 아까 다운받은 key파일을 입력

ssh 접속!

 

 

 

 

 

 

 

 

인스턴스 타임존 한국시간 적용

sudo cp /usr/share/zoneinfo/Asia/Seoul /etc/localtime

 

 

 

 

 

 

 

yum 오류 해결

개발 리소스를 다운받는 미러 주소가 vault.centos.org로 영구적으로 바뀌었다고 합니다.

https://www.centos.org/centos-linux-eol/

 

해결방안 (진짜 오래걸립니다 꾹 참으셔야 합니다 10분 넘게...)

# cd /etc/yum.repos.d/
 
# sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
# sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
 
// 다시 업데이트를 해보면
# yum update -y

 

 

 

 

 

 

 

 

 

CentOS 8 OpenJDK 11 설치

JDK(Java Development Kit)는 Java 플랫폼 프로그래밍에 사용되는 소프트웨어 개발 환경이다.

JDK에는 유료로 제공되는 Oracle JDK와 무료로 제공되는 Open JDK가 있다.

무료 웹 서버 구축이 목표이기에 Open JDK를 설치한다.

설치 가능한 JDK 확인

yum 명령어를 통해 설치 가능한 패키지를 조회한다.

$ yum list java*jdk-devel

 

설치 가능 JDK 확인

 

 

 

 

 

JDK 설치

JDK 버전 중에서 11 버전을 선택해 설치한다.

오라클 클라우드의 경우 root 권한이 있어야 하기 때문에 명령어 앞에 sudo를 붙여 실행한다.

$ sudo yum install java-11-openjdk-devel.x86_64

 

 

 

 

 

JDK 버전 확인

$ java -version
$ javac -version

 

JDK 버전 확인

 

 

 

 

 

 

 

 

 

아파치 톰캣 설치

명령어가 많아서 모아두었습니다.

wget -c http://archive.apache.org/dist/tomcat/tomcat-8/v8.5.61/bin/apache-tomcat-8.5.61.tar.gz


tar -zxvf apache-tomcat-8.5.61.tar.gz


sudo mv apache-tomcat-8.5.61 /usr/local/



sudo ln -s /usr/local/apache-tomcat-8.5.61 /tomcat




/tomcat/bin/startup.sh




netstat -nat | grep LISTEN




sudo iptables -F

 

심볼릭 링크 생성 및 톰캣 실행

 

 

 

 

 

 

 

외부에서  접속 확인

웹 브라우저에서 접속이 되게 하려면 아래 2가지를 확인해야 한다.

1. iptables

2. 오라클 클라우드 VCN

 

iptables는 리눅스에서 방화벽을 관리하고

VCN은 오라클 클라우드에서 방화벽을 관리한다.

 

1. VCN을 통해서만 방화벽 관리할 것이기 때문에 아래 명령어를 실행하여 iptables의 규칙을 모두 삭제한다.

$ sudo iptables -F

 

 

 

2. 오라클 클라우드 VCN 메뉴에서 8080 포트를 추가한다.

VCN메뉴 > 서브넷 클릭 > 편집 > 규칙추가



Source CIDR 에는 인스턴스에 접근할 IP를 CIDR 형식으로 입력한다. 여기서 0.0.0.0/0 은 모든 IP에 대한 허용을 의미한다. 만약 내 IP만 접속하게 하려면 내IP/32 를 입력하면 된다.

 

 

Destination Port Range 에는 인스턴스에 접근한 Port 를 입력한다. 콤마(,)를 구분 지어 한 번에 여러 개 등록 가능하다.

 

 

내 공인ip 확인방법 : cmd창 열고

nslookup myip.opendns.com. resolver1.opendns.com

위에가 아니라, 아래에 나오는 ip주소입니다. (노출조심하세요)

 

 

 

 

 

 

 

 

 

 

 

 

3. 브라우저를 열고 http://스턴스의 Public IP:8080을 입력하면 톰캣 메인화면이 열린다.

 

http://64.110.70.98:8080

 

성공이다 ㅎ

 

 

 

 

 

 

 

 

 

 

무료 도메인 등록

회원가입시 아이디 비밀번호는 평소 쓰던거와 다른걸 추천한다. 혹시 모른다..털릴지...

https://xn--220b31d95hq8o.xn--3e0b707e/

 

내도메인.한국 - 한글 무료 도메인 등록센터

한글 무료 도메인 내도메인.한국, 웹포워딩, DNS 등 무료 도메인 기능 제공

xn--220b31d95hq8o.xn--3e0b707e

해당 사이트를 회원가입하면 도메인을 비용없이 등록할 수 있다.

좀 예쁘진 않지만 이게 어디인가~

 

 

 

 

 

 

 

도메인 상세정보 화면에서 IP연결(A)에 체크하고 웹 서버의 Public IP를 입력한다.

 

 

도메인 정보 수정시 지구본 돌아가는거 너무 귀엽다..

 

 

 

접속까지 확인해보자

http://caracter-test.kro.kr:8080/

 

 

 

 

 

 

 

 

 

 

 

무료 SSL 인증서 설치하기(with. certbot)

https://letsencrypt.org/

 

Let's Encrypt

Jul 23, 2024 Intent to End OCSP Service Moving to a more privacy-respecting and efficient method of checking certificate revocation. Read more Jun 24, 2024 NTP is critical to how TLS works, and now it’s memory safe at Let’s Encrypt. Read more May 30, 2

letsencrypt.org

 

Let's Encrypt이라는 기관을 통해 무료로 TLS 인증서를 발급받을 수 있다.

 

https://certbot.eff.org/
인증서 발급을 위해 certbot이라는 무료 소프트웨어를 사용한다.

 

Certbot

Tagline

certbot.eff.org

certbot 홈페이지에서 자신의 서버 사양을 선택하면 그에 맞는 설치 방법을 안내해 준다.
그런데 톰캣은 소프트웨어 목록에 보이지 않는다. 그렇다고 톰캣에 적용하지 못하는 것은 아니다.

 

 

 

 

 

 


snap 설치

certbot 공식 홈페이지에서는 snap을 통해 설치하는 것을 권장하고 있다. 우선 snap을 설치한다.

1. epel 패키지 저장소를 설치한다.

$ sudo yum install epel-release


2. epel 패키지 저장소가 유효한지 확인한다.

$ yum repolist enabled

 

3. snapd를 설치하고 버전을 확인한다.(정말 오래 걸립니다 한 15분쯤)

$ sudo yum install snapd
$ snap --version

 

snap 버전 확인

 

 

 

4. snap 메인 통신 소켓을 관리하는 systemd를 활성화한다.

$ sudo systemctl enable --now snapd.socket

 

5. snapd 버전이 최신 버전인지 확인한다. ( sudo snap install core 에러나면 계속 해보세요)

$ sudo snap install core
$ sudo snap refresh core

 

 

6. snap 심볼릭 링크를 생성한다.

$ sudo ln -s /var/lib/snapd/snap /snap

 

 

 

 

 

 

 

 

 

 

 

 

certbot 설치

1. certbot을 설치한다.

$ sudo snap install --classic certbot

 

 

2. certbot 명령을 시스템에서 실행할 수 있도록 준비한다.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

 

 

3. certbot 버전을 확인한다.

$ certbot --version

 

 

 

 

 

 

 

 

 

certbot 실행(인증서 생성)

1. certbot --standalone 을 사용하려면 기존 사이트가 필요하지 않지만 서버 포트 80을 오픈해야 한다.

오라클 클라우드의 경우 VCN을 통해 80 포트를 오픈한다.

 

오라클 클라우드 VCN을 통한 80포트 오픈

(소스포트범위가 아니라 대상포트범위 입니다!!!!! 여기서 실수하면 뒤에 authenticate 관련 에러나요..)

 

 

2. certbot을 실행한다.

--dry-run 옵션을 사용하면 실제 실행하기 전 시뮬레이션 해 볼 수 있다. (혹시나 실수로 여러 번 실행하게 된다면 too many certificates ... 오류가 발생할 수 있다. 이 경우 한참 뒤에 실행할 수 있기 때문에 시뮬레이션 후 실행하는 것을 추천한다.)

실행을 여러번 하면 too many certificates 오류가 발생한다.

# certbot 실행 시뮬레이션
$ sudo certbot certonly --standalone --dry-run

# certbot 실행
$ sudo certbot certonly --standalone
도메인 입력
Y
Y

 

certbot 실행 및 인증서 생성 (pem 파일 경로 확인!!!!!!!!!!!!!!!!!)

 

 

3. 생성된 인증서를 확인한다. (인증서가 생성되는 경로는 root 권한으로 접근 가능하기 때문에 sudo su - 명령을 통해 root 권한으로 접속 후 해당 디렉터리로 이동할 수 있다.)

 

 

 

 

 

 

 

 

 

 

 

Tomcat 설정

1. 인증서를 톰캣에 적용하기 위해 /conf/server.xml 에 아래와 같이 기존 8080 포트 설정은 제거하고 443 포트 설정을 추가한다. (인증서의 경로는 자신이 생성한 경로에 맞게 수정한다.)

 

웹루트 설정 및 기타 설정을 위한 server.xml 파일의 위치

HOME/conf/server.xml

HOME -> tomcat 설치폴더(ex:/usr/local/tomcat)

 

8080으로 검색해보면 3개 나올텐데 그중에서 중간놈일것이다.

<Connector port="443" 
    protocol="org.apache.coyote.http11.Http11NioProtocol"  
    maxThreads="150"
    SSLEnabled="true">
    <SSLHostConfig>      
        <Certificate certificateKeyFile="/etc/letsencrypt/live/caracter-test.kro.kr/privkey.pem"  
                certificateFile="/etc/letsencrypt/live/caracter-test.kro.kr/cert.pem"
                certificateChainFile="/etc/letsencrypt/live/caracter-test.kro.kr/fullchain.pem"          
                type="RSA" />
    </SSLHostConfig>      
</Connector>

 

 

server.xml 편집

 

 

 

2. 설정을 적용했으면 톰캣을 재시작한다.

톰캣 재시작 명령 시 관리자 권한으로 실행해야 톰캣이 정상 구동된다.

 

 

 

 

 

 

SSL 적용 확인

오라클 클라우드의 경우 VCN을 통해 443 포트를 오픈했는지 확인한다.

 

브라우저 주소창 옆 자물쇠 아이콘을 클릭하면 인증서 상세정보를 확인할 수 있다.

 

Tomcat SSL 적용완료

 

 

 

 

 

 

인증서 갱신(certbot renew)

Let's Encrypt에서 발급되는 인증서의 유효기간은 3개월이기 때문에 3개월마다 인증서를 갱신해야 한다.

crontab 등을 이용하여 주기적으로 인증서를 갱신한다.

인증서가 갱신된 이후에는 톰캣을 재시작한다.

sudo certbot renew
cd /usr/local/apache-tomcat-8.5.61/bin
sudo ./shutdown.sh
sudo ./startup.sh
sudo certbot renew --dry-run

인증서 갱신(--dry-run 으로 정상 실행되는지 시뮬레이션 했다.)

 

 

 

 

 

 

크론탭 자동 갱신 적용

크론탭 파일 열어서

sudo crontab -e

 

만약 매월 1일 03시에 인증서를 갱신하고 싶다면 아래와 같이 설정하면 됩니다.

$ 0 18 1 * * /usr/bin/certbot renew --renew-hook="sudo systemctl restart apache2"

위에 새벽 3시인데 크론탭에는 18시라고 쓴 것은 서버 시간에 맞췄기 때문입니다. date 명령으로 자신의 서버 시간을 확인하고 시간을 설정하세요. 이 페이지에서 시간을 쉽게 변환해볼 수 있습니다.

뒤에 나오는 –renew-hook은 인증서 갱신을 성공적으로 마치면 아파치를 재시작하기 위해 넣어주었습니다. 인증서 갱신 전에 실행되는 --pre-hook도 있습니다.

 

 

내가 적용한 크론탭 파일내용

# 매 시 10분에 
# $ 10 * * * * /home/user/run.sh

# 10분 마다 주기적으로 
# $ */10 * * * * /home/user/run.sh

# 토요일 새벽 3시에
# $ 0 3 * * 6 /home/user/run.sh



$ 0 18 1 * * sudo certbot renew --renew-hook="sudo systemctl restart apache2"

# sudo certbot renew --dry-run

 

 

크론탭 내용이 이상하면 에러났다고 알려주는 착한 녀석..

시간부분 지우고 뒤에만 실행시켜서 테스트도 가능!

 

 

 

 

 

 

 

 

 

 

 

 

마치며...

서버에 직접 apt-get install 명령어 쳐가면서

톰캣이며 mysql이며 여러 서비스를 직접 설치하고 띄워놓고

이제 파일질라 설치해서 jar/war파일 업로드해서

nohub 명령어로 백그라운드 실행시켜두고

새 버전의 jar 파일 올려서 재기동하고..

뭐 이렇게 직접 관리할 수도 있지만 불편하다!

 

서버를 지우고

깨끗한 상태에서

도커 및 젠킨스를 설치하는걸로 하자!

 

 

 

 

 

 

참고링크

웹서버 구축 관련

https://obtuse.kr/dev/oracle-cloud-free-arm-server/

 

오라클 평생 무료 ARM서버 만들기부터 포트열기 까지 A to Z 가이드 | Obtuse의 테크 블로그

오라클 클라우드 ARM서버 만드는 방법부터 Out of host capacity오류 해결방법, 고정 IP 설정방법, SSH 연결방법, 포트포워딩 방법까지 A 부터 Z까지 클라우드 컴퓨팅에 필요한 대부분의 것들을 다루는

obtuse.kr

 

웹 서버 구축

https://freewebserver.tistory.com/entry/CentOS-8-OpenJDK-11-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0

 

2. CentOS 8 OpenJDK 11 설치하기

JDK(Java Development Kit)는 Java 플랫폼 프로그래밍에 사용되는 소프트웨어 개발 환경이다. JDK에는 유료로 제공되는 Oracle JDK와 무료로 제공되는 Open JDK가 있다. 무료 웹 서버 구축이 목표이기에 Open JDK

freewebserver.tistory.com

 

 

한글 폰트 적용

https://blog.naver.com/shin7688/221794503200

 

MobaXterm 한글 설치

MobaXterm UI가 꽤 괜찮은 편입니다. 그러나 한글 설정에 문제가 있어 정리합니다. 1. MobaXterm 설...

blog.naver.com

 

 

yum 오류 관련

https://pyromaniac.me/entry/Error-Failed-to-download-metadata-for-repo-appstream-CentOS-yum-%EC%97%90%EB%9F%AC

 

Error: Failed to download metadata for repo 'appstream' (CentOS yum 에러)

1. 에러 내용 CentOS에서 패키지 설치 도구 yum이 정상적으로 작동하지 않는 오류입니다. Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist 2. 원인 개발 리소스

pyromaniac.me

 

 

ssl 자동갱신 크론탭 적용

https://devlog.jwgo.kr/2019/04/16/how-to-lets-encrypt-ssl-renew/

 

Let's Encrypt SSL 인증서 자동 갱신 설정 방법 · Tonic

사이트 운영에 도움을 주실 수 있습니다. 고맙습니다. --> Let's Encrypt SSL 인증서 자동 갱신 설정 방법 2019년 04월 16일 Let’s Encrypt에서 발급하는 인증서는 90일짜리 단기 인증서입니다. 3개월에 적어

devlog.jwgo.kr

 

728x90
반응형
LIST