GCP 처음~끝

2025. 8. 22. 21:50·서버

돈이 없는 가난한 취준생은 무료 크레딧을 다썼따

그렇다면 방법은 하나

구글 아이디 새로 파서 서버 새로 만들기

자 시작하자.


"환영"

"무료로 시작하세요"

개인정보, 카드정보 입력

야호 크레딧이다

 

아 근데 활성화 눌러서 유료계정으로 바뀜 ㅋㅋㅋㅋㅋㅋㅋㅋ

결제 정보 삭제하라고해서 삭제했는데 인스턴스 만드니까 결제정보없다고 안됨

절대 활성화를 누르지마 ...

오히려 좋아 초반에 실수하는게 더 괜찮아 다시하면 돼 ^^


[인스턴스 만들기]

일단 GCP 프로젝트 만들기 > 컴퓨트엔진 > 인스턴스 만들기

 

머신구성 : 리전 서울 C EC2 기본설정 미디엄

OS : CentOS Stream 9 / 40

네트워킹 : HTTP, HTTPS 체크 

나머지 냅두고 "만들기"

 

[맥에서 키만들기]

윈도우는 푸티키젠으로 ppk 키파일 만들기

 

ssh-keygen -t rsa -b 2048 -C "naong940" -f ~/.ssh/pofol_key

맥은 터미널에서 구글아이디로 키만들기

RSA 알고리즘을 사용하고 2048비트 길이의 키를 만들며 주석 구글아이디를 달아서 식별하기 쉽게 하는 SSH 키 쌍 생성 명령어

~/.ssh/pofol_key 경로와 파일명 따로 지정

 

컴퓨트엔진 > 설정 > 메타데이터 > SSH 키 > SSH키 추가 

cat ~/.ssh/pofol_key.pub

해서 키 내용을 붙여넣기


[서버 접속]

터미널로 접속

ssh -i ~/.ssh/pofol_key 아이디@서버아이피

 

만약 퍼미션 문제 뜨면?

chmod 600 ~/.ssh/키파일

위 명령어로 개인키 권한 고쳐주고 다시 접속

 

[서버 세팅]

서버 접속 후

 

sudo -s

루트로 로그인

 

yum update

업데이트해주기

 

vi /etc/selinux/config

22번줄 inforced -> disabled 로 변경 // 아예 기능 꺼짐 (운영 편하지만 보안 취약)

 

yum install ntsysv

ntsysv

firewalld.service 체크해제 (스페이스바)

탭 해서 Ok로 나가기

 

GCP 인스턴스 재부팅하기 (중지 -> 시작)

 

방화벽 돌아가는지 확인

systemctl status firewalld

 

[FTP 세팅]

yum install vsftpd

 

이제 환경설정

vi /etc/vsftpd/vsftpd.conf

:set nu

 

59번라인

주석처리된거 풀어주기

idle_session_timeout=600

세션타임아웃 10분만큼 설정한다는 뜻

 

62번라인 

주석처리된거 풀어주기

data_connection_timeout=120

파일 하나 다운받는데 2분 초과되면 접속 끊는다는 뜻

너무 큰 용량의 파일을 다운받는 경우가 아니라면

해커가 파일들 싹쓸이하는거 방지 

주석처리된 경우 무한으로 가져감

넉넉히 240으로 잡아줘도됨 

 

86번 주석해제

ftpd_banner=Welcome to blah FTP service.

ftp제목

 

90번, 92번 라인 주석해제

deny_email_enable=YES

banned_email_file=/etc/vsftpd/banned_emails

파일 안에 이메일 넣어두면

디도스 뚜두러맞을때 이메일 날아옴

 

100 chroot_local_user=YES

101 chroot_list_enable=YES

102 # (default follows)

103 chroot_list_file=/etc/vsftpd/chroot_list

얘네도 주석 풀기

 

125 listen_port=9021

126 pasv_enable=YES

127 pasv_min_port=5000

128 pasv_max_port=5005

빈줄에 추가 

 

esc

:wq

 

[사용자 추가]

2명 등록하기

사용자1  : 구글아이디

사용자2 : 가상사용자

 

vi /etc/vsftpd/chroot_list

일단 구글아이디만 쓰고 저장

 

systemctl restart vsftpd.service

netstat -ano

환경설정에 세팅한 포트번호가 열려있어야함

 

ntsysv

ftp 체크하고 OK

 

[GCP  방화벽 규칙 추가]

 

사용자 하나 더 만들기

useradd koo

passwd koo

vi /etc/vsftpd/chroot_list

아랫줄에 koo사용자 추가하기

 

vi /etc/vsftpd/banned_emails

koo사용자(가상사용자)만 넣기 => 필수!! 왜냐면 가상사용자는 이메일이 없으니까 이거를 밴해놔야 파일질라에서 접속 됨

??사실 뭔말인지 모르겠는데 강사님이 그렇다함 지피티도 다르게 알려주는데 이거하면 되긴됨 왜 ..??

 

systemctl restart vsftpd

재시작

 

vi /etc/vsftpd/vsftpd.conf

103추가

 

systemctl restart vsftpd

재시작

 

[파일질라 sftp 접속]

사용자는 구글 아이디 / 키파일로 접속

다 까먹어서 이거 하는데 시간 많이 썼다 ㅎㅎ

 

[자바 설치]

yum install java-17*

 

[Nginx 세팅]

yum install nginx

 

 

[Tomcat 세팅]

일반사용자 홈에 파일 만들어서 깔았음

자기가 쓰는 버전이랑 맞추기 !

 

yum install wget

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

tar -xvzf apache-tomcat-8.5.61.tar.gz

cd bin

./startup.sh 

 

[도메인 연결]

hosting.kr

DNS레코드랑 아래에 있는 호스트등록 모두 등록 

서버 옮기기전 아이피로 돼있어서 연결안된거였는데 애먼 엔진엑스를 탓하며 계속 설정파일을 뒤적였다 미안 엔진엑스야~

 

[war파일 배포 - admin 프로젝트]

파일질라로 war서버에 올리기

war파일 tomcat/webapps 에 옮기기

cp /home/naong940/warfile/admin.war /home/koo/was/tomcat/webapps/

vi /etc/nginx/nginx.conf

server 블럭 추가

server {
    listen 80;
    server_name admin.koona.kr;

    location / {
        proxy_pass http://localhost:탐캣포트/admin/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

    }
}

 

[MariaDB(MySQL) 세팅, 백업, 복구]

[설치]

dnf install mariadb*

systemctl start mariadb

netstat -ano | grep 3306

mysql -u root -p

비번 설정안돼있음

무조건 설정필요

alter user 'root'@'localhost' identified by '비번';

exit;

mysqladmin -u root -p reload

mysql -u root -p

 

status

언어셋 라틴으로 잡혀있음

select now();

시간도 잘못설정되어있음

⭐️필수 : 언어셋, 시간

select now(),@@system_time_zone as timezone;

[언어셋, 시간 바꾸기]

vi /etc/my.cnf

여기에 이것저것 추가해야함

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

[client-server]

[mysqld]
default-time-zone='+09:00'
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci

[mysqldump]
default-character-set=utf8mb4

 

systemctl restart mariadb

mysql -u root -p

다시 확인해보면 언어셋과 시간이 제대로 설정됨

 

[백업]

./mysqldump -u root -p 디비이름 > /저장경로/백업파일이름.sql

 

[복구]

mysql -u root -p

 

create database mini

디비 만들기

 

그리고 사용자도 추가시켜주고 디비 권한주기

use mysql; 

create user '사용자'@'localhost' identified by '비번';

insert into db values ('localhost','디비','사용자','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y');

create user '사용자'@'%' identified by '비번';

insert into db values ('%','디비','사용자','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y');

 

y개수는 다다르니 확인해보고 만들기~

⭐️%사용자는 배포후 삭제하기

 

엥 옛날에는 잘 됐는데 안됨

GRANT ALL PRIVILEGES ON `디비`.* TO '사용자'@'localhost';
GRANT ALL PRIVILEGES ON `디비`.* TO '사용자'@'%';

이거 하니까 됨

디비 만들었는데 계속 에러나서 보니까 디비에 안보이는 공백 이상한 문자 붙어있어서 그랬음 
내가 볼땐 같은문자인데 안보이는 이상한 문자가 붙어있었던것
그냥 삭제도 안돼서 DROP DATABASE `mini`; 백틱으로 감싸서 삭제

DROP DATABASE mini; 가 실패하는 이유는 현재 있는 데이터베이스 이름이 
mini 가 아니라 mini + BOM (U+FEFF, EFBBBF) 이라서 그렇습니다.
즉, 눈으로 보면 같지만 MariaDB 입장에서는 서로 다른 이름이에요.

 

mysql -u 사용자아이디 -p 데이터베이스명 < 저장된디렉토리/파일명.sql

잘 복구됐다 우히히

 

[war파일 배포 - realty 프로젝트]

아 도대체 어디가 잘못된걸까 분명 옛날에 했던것들인데

내일 다시해.

너무 힘듥다

아니 내일은 없어 해결될때까지 해

오만하다 감히 무슨 자신감으로 서버를 냅다 삭제먼저하고 새로 시작해?

복구버튼있길래 삭제하고 필요하면 복구해야지 생각했는데 복구해보니 인스턴스가 망가졌다

아니야 이건 남탓이야 내가 내 손으로 삭제 눌렀잖아

할 수 있어 ! 오히려 좋아. 매를 좀 맞아야 함

궁댕이가 녹아서 사라질때까지 앉아있어야함 

여기서 해결하면 ? 더 성장한다 => 사실상 개이득임 서버공부를 또 언제하겠어? 와 너무 좋다 행복해

 

레전드 상황

DB 왜 연결 안되지 하면서 세시간 먹은 부분 

GCP 방화벽 규칙에는 소스필터와 대상필터 두가지 필터가 존재함

근데 나는 빨리 끝내고싶은 급한 마음에 0.0.0.0/0을 대상필터에만 해둠 ^^...

소스필터...를... 확인합시다..

 

플젝1번의 탐캣은 그대로 두고 

플젝2번의 탐캣을 따로 압축 풀어서 /conf/server.xml에서 포트번호 바꿔서 사용 //킬포트 주의

 

아래는 nginx.conf

server {
        listen 80;
        server_name admin.koona.kr;

        location / {
        proxy_pass http://localhost:8080/admin/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

       }
   }

server {
        listen 80;
        server_name realty.koona.kr;

    location / {
        proxy_pass http://localhost:8081/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

       }
   }

얘는 war파일 이름을 ROOT로 해두고 풀어서 프록시 패스 그대로 둬도 작동

FileIO있음 ROOT안에 파일 만들어주기 (내 프로젝트에선 upload라는 이름으로 웹디렉토리 사용)

내가 이겼다

 

 

[jar파일 배포 - erp 프로젝트]

슬픈이야기

위에서 먼저 배포한 war 8081로 돌리고있었는데 jar파일 이거 나 다시 못만드는 파일임

근데 이 jar이 8081 포트씀 그래서 nginx.conf에서 mini를 8083으로 옮기고 얘를 8081로 바꾸고

mini tomcat의 server.xml의 포트들을 바꿔줌

바꾸고 껐다키니까 안됨

왜?냐?고? 킬포트 바꾸고 ./shutdown.sh 하면 바뀐킬포트로 죽이려하니까 안죽지 ^^...

PID 확인해서 kill하고 다시 다들 켜주니 잘 작동함 ,,,,,,,

 

nginx.conf에 서버블럭 추가

server {
    listen 80;
    server_name erp.koona.kr;

    location / {
        proxy_pass http://localhost:8083;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

 

cd /jar경로

chmod 755 jar파일이름.jar

권한 바꿔주고

 

mkdir logs

로그폴더 만들어주고

 

nohup java -jar jar파일이름.jar > logs/로그파일이름.log 2>&1 &

jar 백그라운드 실행

 

[서버 시간]

timedatectl set-timezone Asia/Seoul

 

vi /etc/chrony.conf

46번줄 KST로 변경

leapsectz right/KST

 

systemctl restart chronyd

[HTTPS]

참고로 CentOS Stream9 버전임

 

sudo dnf -y install epel-release dnf-plugins-core
sudo dnf config-manager --set-enabled crb
sudo dnf -y install certbot python3-certbot-nginx

 

루뜨가 해야함

인증서 만들기

 

certbot --nginx -d koona.kr

이메일 치고

y

y

하면 좌라락 머가 생김

 

nginx 환경설정 파일 보면 지맘대로 다 세팅해줌

systemctl restart nginx


[후기]

https://koona.kr/

다살렸다 ... ㅋ 이겼다

블로그 정리 잘한줄알았는데 갑자기 중간 진도가 사라진 부분도 많이있었다

이 포스팅도 그렇겠지만 이게 중간에 에러나면 그거 찾는다고 포스팅이 뒷전이되면서 까먹음

다시 새로 서버 만지면서 처음부터 끝까지 다시하면서

까먹고 있던 부분, 놓친 부분, 에러가 날만한 부분 확인할 수 있었다

잘잘한 에러들이 계속 튀어나와서 전에 없던부분들이라 찾는다고 6시간 걸렸다

그래도 하루컷내서 다행이다... 다음날로 미루지 않는 멋있는 모습 진짜 멋있다 짱이다 최고다...

저작자표시 비영리 변경금지 (새창열림)
'서버' 카테고리의 다른 글
  • Servlet, Spring (war) + 배포 + GCP
  • 카카오 지도 api
  • GCP + https 적용하기
  • Mongo + express + cors + GCP
9na0
9na0
응애
  • 9na0
    구나딩
    9na0
  • 전체
    오늘
    어제
    • 분류 전체보기 (210)
      • Web (118)
      • Java (28)
      • 데이터베이스 (14)
      • 세팅 (12)
      • 과제 (3)
      • 쪽지시험 (2)
      • 정보처리기사 (4)
      • 서버 (24)
  • 블로그 메뉴

    • 링크

      • 포폴
      • 구깃
    • 공지사항

    • 인기 글

    • 태그

      file24
      re_java10
      net4
      java_io1~10
      net5~10
      spring-boot
      re2
      net3
      file25
      net2
      notice_writer
      io_dto
      Oracle
      macbook pro m4
      net1
      noticewriteok
      exam1_1~10
      file25_t
      ab1
      datalist
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    9na0
    GCP 처음~끝
    상단으로

    티스토리툴바