GCP 설정

  • Compute Engine 에서 VM 인스턴스 등록 제일 싼게 (us-east1 : 사우스캐롤라이나) 로 초소형(0.6G) 메모리에 10GB 사용시, 4.28 달러만 사용합니다. 부팅디스크는 CentOS 7(x86_64 built on 20180815)로 설정했습니다.

옵션은 HTTP, HTTPS 둘다 트래픽 허용으로 연습합니다. (SVN 으로 연결 후 해당 페이지까지 띄우기 하려고 합니다.)

등록이 완료되면 바로 처리해야할 것이 3가지 있습니다.

  • 메타데이터에 ssh_key 등록 (로그인 때문에)
  • 고정 IP 신청
  • root 비밀번호 설정
VPC 네트워크 > 외부 IP 주소

고정 IP 는 VPC 네트워크 > 외부 IP 주소가서 아이피를 고정으로 신청해야합니다. 이미 고정된 주소가 있고 인스턴스에서 사용하지 않으면 초당 금액이 나간다고 합니다. ㅎㄷㄷ

Compute Engine > 메타데이터 > SSH

Compute Engine > 메타데이터 > SSH 키를 등록합니다. SSH 키를 생성하고 등록하는 법은 다 알테니, 해당 부분은 지나갑니다. 저는 Xshell 로 했고, 등록한 ssh_key 뒤에 한칸뛰고 접속할 아이디를 bymin 으로 정했습니다. 로그인시에는 bymin 으로 접속합니다.

sudo passwd

sudo passwd

로그인을 한 후에 root 권한의 비밀번호를 설정합니다.

ETC

FTP 접속 설치
yum -y install vsftpd
vi /etc/vsftpd/vsftpd.conf
yum install htop : HTOP 이라는 모니터링 툴
yun install java : 자바를 설치하자! (나중에 쓰겠지..)

이제 SVN 설치! 실제로 GIT 을 사용하고 싶었으나, 해당 서버를 형상관리로 쓰고 싶어하는 지인분이 GIT은 모르겠고 SVN 으로 하고 싶다고, 그리고 PHP 를 띄우고 싶다고 해서….

svn 설치 (git 쓰고싶다)

yum install subversion

svn 의 repository 를 설정할 폴더를 변경합니다.

vi /etc/sysconfig/svnserve

# OPTIONS is used to pass command-line arguments to svnserve.
# 
# Specify the repository location in -r parameter:
OPTIONS="-r /home/svn"

/home/svn 으로 변경했습니다.

svnadmin create --fs-type fsfs repos

/home/svn 으로 이동하여 repos 라는 폴더를 만듭니다. 해당 폴더를 만들면 폴더 안에는,

drwxrwxrwx. 2 root root  54 Aug 26 08:34 conf
drwxrwsrwx. 6 root root 253 Aug 26 09:14 db
-rwxrwxrwx. 1 root root   2 Aug 26 08:31 format
drwxrwxrwx. 2 root root 231 Aug 26 08:31 hooks
drwxrwxrwx. 2 root root  41 Aug 26 08:31 locks
-rwxrwxrwx. 1 root root 229 Aug 26 08:31 README.txt

위와같은 파일이 만들어집니다. 권한은 보지 말아주세요. ㅠㅜ 권한오류가 발생해서 계속 원인파악하다가 권한을 저렇게 바꾸었습니다;

svn 제타위키 그 이후의 설정은 svn 제타위키를 보는 것이 더 낫습니다.

svnserve.conf 수정하여,

[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz

위와같이 등록합니다. 기존 주석된 부분을 빼는 걸로 해결하셔도 되며, 주석을 푸실때, anon-access = read 로 되어있는 부분을 none 으로만 바꿔주시면됩니다.

passwd와 authz 파일을 사용하도록 했으니 해당 파일도 수정합니다.

authz 는 모든 권한을 부여하도록,

[/]
*=rw           

절대 경로의 rw 를 주었으며, passwd는 아이디=패스워드 형태로 등록하시면됩니다.

[users]
testuser1 = P@ssw0rd
testuser2 = P@ssw0rd

서비스 시작은 다음과 같습니다.

service svnserve start

start, stop, restart 등으로 제어하도록 합니다.

다 작업을 하고 커밋을 하려고 했을때 발생한 오류는 2건이었습니다. 첫번째는 방화벽 문제입니다.

GCP 설정을 하면 방화벽이 자동으로 설정되는데요. svn://ip 로 접속하면 svn의 defaul 포트인 3690 을 열어주셔야합니다.

VPC 네트워크 > 방화벽 규칙에, 수신에 3690을 추가해줍니다.

2번째가 Permission Denied 문제였는데요.

chmod -R go+w /home/svn/

서버에 모든 하위 권한에 접속권한을 부여해줘봤습니다…. 그래도 안됩니다. 구글링을 해보니, /etc/sysconfig/selinux 파일을 여셔서 SELINUX=enforcing를 SELINUX=disable로 바꾸신 뒤 재부팅 하면 된다고 해서, 해봤습니다.

재부팅하니 잘되네요.

shutdown [옵션] [시간] [메시지]
-t n : 경고 메세지를 보낸 후 n초 후에 kill 시그널을 보낸다.
-h : shutdown시 halt를 실행하게 한다.
-n : 디스크 동기화 동작의 수행을 금지한다.
-r : 시스템을 재부팅한다.
-f : 다음 부팅시 파일시스템 검사를 하지 않는다.
-c : 이미 예약되어 있는 shutdown을 취소한다. 이 옵션을 둔다면 시간인수는 줄 수 없다.
      하지만 메시지는 사용자들에게 줄 수 있다.
-k : 모든 동작을 제대로 수행하지만, 실제로 시스템을 종료하지는 않는다.
시스템 종료시 가장 자주 사용되는 방식 : shutdown -h now
시스템 재부팅시 자장 자주 사용되는 방식 : shutdown -r now
시스템 종료 예약 : shutdown -h 10 (10분 후에 시스템을 종료한다.)

음, SELinux 는 Linux의 보안을 강화해 주는 보안 강화 커널이고 zero-day 공격 및 buffer overflow 등 어플리케이션 취약점으로 인한 해킹을 방지해 주는 핵심 구성요소라고 하네요. 특정 서비스가 SELinux 때문에 동작하지 않는다면 SELinux 를 끄기 보다는 해당 서비스가 SELinux 하에서 잘 동작하도록 설정을 수정하는걸 권장한다고 하는데, 우선은 SVN 적용을 하려고 한 것이고, 여기에 mysql 도 등록하고 외부에서 접속시킬건데, 이 부분에 계속 문제가 생길 것으로 보여, disable 처리했습니다.


참조