웹서비스 운영을 위해 서버를 관리하다보면 여러가지 자주사용해야 하는 사항들이 있다. mysql설정, 계정생성 등…. 본 포스팅에서는 내가 서버를 운영하면서 자주 진행하는 항목들을 정리했다.
*참고로 난 Mac Mojave를 이용중이다.
GCP-VM SSH 접속 Key 생성
일단 SSH 로 GCP에 접근하기 위해서는 RSA key pair 를 생성해야 한다. 맥 혹은 리눅스에서는 .ssh 폴더 안에 RSA key pair 가 생성이 된다. key를 생성하는 명령어는 다음과 같다.
ssh-keygen -t rsa -f ~/.ssh/[KEY_FILE_NAME] -C "[USERNAME]"
실제 명령어 예시 : ssh-keygen -t rsa -f ~/.ssh/gcp-key -C "junholee"
- [KEY_FILE_NAME]에는 생성할 RSA의 KEY 파일 이름을 생성한다. ex) gcp-key
- “[USERNAME]” 에는 계정이름을 입력한다. 일반적으로 GCP 접속 이메일 주소를 입력한다. 하지만 꼭 그래야 하는 것은 아니다. 이메일 주소를 쓰지 않아도 상관없다.
위 명령어를 입력하면 비밀번호를 입력하라는 메세지가 나오는데 리모트 서버에 암호 없이 접속할 키를 생성할 경우는 그냥 엔터를 누르면 된다. 그러면 RSA key pair 생성이 완료된다.키 생성이 완료가 되면 계정 디렉토리 아래의 .ssh 디렉토리에 [KEY_FILE_NAME].pub 와 [KEY_FILE_NAME] 파일이 생성된다. ex) gcp-key.pub, gcp-key
*id_rsa 파일이 개인키이고 id_rsa.pub 는 공개키이다.
GCP-VM SSH 접속 Key 확인 후 GCP 적용하기
키생성이 완료되면 아래 명령어를 입력하여 생성된 RSA KEY 내용을 확인 할 수 있다. 아래 명령어를 입력하여 나온 public key 내용을 복사한 후 GCP에 로그인하여 Compute Engine -> 메타데이터 -> SSH 키 에 입력해야 한다.
cat ~/.ssh/[KEY_FILE_NAME].pub ex) gcp-key.pub
입력이 끝나면 터미널에서 아래와 같이 입력하여 SSH 접속을 할 수 있다.
ssh -i ~/.ssh/[KEY_FILE_NAME] [USERNAME]@외부IP ex)ssh -i ~/.ssh/gcp-key junholee@123.123.11.22
그런데 filezila 같은 FTP 클라이언트 프로그램으로 SFTP로 접속을 할 때도 key파일이 필요한데 이 때를 위해서 개인 key는 별도로 복사하여 관리하는 것이 편리하다. 따라서 cp 명령어를 통해 개인키는 다른 곳으로 복사한다.
cp ~/.ssh/[KEY_FILE_NAME] /[저장경로]/[KEY_FILE_NAME] ex)cp ~/.ssh/gcp-key /Users/junholee/ssh_key/gcp-key
DB 계정생성 및 외부접속 권한 주기
GCP에서 VM 생성이 완료되면 일반적으로 DB접속 계정을 생성하는 일이 많다. mysql 처음 접속 시에는 root 계정으로 접속을 한다. root 계정의 비밀번호는 GCP > Compute Engine 상세정보에서 알 수 있다.(자세히 보기)
Mysql 계정은 아래와 같이 생성할 수 있다. DB사용자에게 어디에서나 접근(%) 이나 특정 IP에서의 접근 권한을 주면 된다.
mysql> CREATE USER '아이디'@'호스트' IDENTIFIED BY '비밀번호'; ex) CREATE USER 'junholee'@'%' IDENTIFIED BY '12341234'; mysql>GRANT ALL PRIVILEGES ON *.* TO '아이디'@'%' WITH GRANT OPTION; //모든 권한주기 mysql> flush privileges; mysql> use mysql; mysql> select host, user from user; //계정확인하기
특정 계정에 대해서 외부에서도 접속이 가능하도록 하기 위해서는 서버에서도 외부접속이 가능하도록 설정을 해야 한다. GCP 마케플레이스에서 bitnami Image로 VM을 생성 한 경우 아래 파일에서 설정이 가능하다.
/opt/bitnami/mysql/my.cnf
위 파일에서 bind-address = 127.0.0.1
부분을 bind-address = 0.0.0.0
로 변경해야 한다. 저장하면 된다.
물론 방화벽 설정도 아래와 같이 되어 있어야 외부에서 접근이 가능하다. (0.0.0.0/0)
Bitnami 기본 명령어
sudo /opt/bitnami/ctlscript.sh start
sudo /opt/bitnami/ctlscript.sh restart apache
sudo /opt/bitnami/ctlscript.sh stop
sudo /opt/bitnami/ctlscript.sh restart
sudo /opt/bitnami/ctlscript.sh start mysql
sudo /opt/bitnami/ctlscript.sh restart mysql