돈이 없는 가난한 취준생은 무료 크레딧을 다썼따
그렇다면 방법은 하나
구글 아이디 새로 파서 서버 새로 만들기
자 시작하자.

"환영"
"무료로 시작하세요"
개인정보, 카드정보 입력

야호 크레딧이다
아 근데 활성화 눌러서 유료계정으로 바뀜 ㅋㅋㅋㅋㅋㅋㅋㅋ
결제 정보 삭제하라고해서 삭제했는데 인스턴스 만드니까 결제정보없다고 안됨
절대 활성화를 누르지마 ...
오히려 좋아 초반에 실수하는게 더 괜찮아 다시하면 돼 ^^
[인스턴스 만들기]
일단 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
[후기]
다살렸다 ... ㅋ 이겼다
블로그 정리 잘한줄알았는데 갑자기 중간 진도가 사라진 부분도 많이있었다
이 포스팅도 그렇겠지만 이게 중간에 에러나면 그거 찾는다고 포스팅이 뒷전이되면서 까먹음
다시 새로 서버 만지면서 처음부터 끝까지 다시하면서
까먹고 있던 부분, 놓친 부분, 에러가 날만한 부분 확인할 수 있었다
잘잘한 에러들이 계속 튀어나와서 전에 없던부분들이라 찾는다고 6시간 걸렸다
그래도 하루컷내서 다행이다... 다음날로 미루지 않는 멋있는 모습 진짜 멋있다 짱이다 최고다...