지인의 부탁도 있고해서 리눅스 기초적인 사용법을 곁들여
Conoha (코노하) VPS 서비스를 이용한 서버 구축기를 정리해 본다.
1) 서버 사양 선택 / OS 설치
카드 결제까지 마치고 나면 서버 추가 메뉴 ( https://manage.conoha.jp/Service/Add/ )에서
추가할 사양 및 설치할 OS를 선택하여 서버를 생성하자.
서버 스펙은 최저 사양인 한달 900엔에 맞추어 골라본다.
타입은 VPS, 지역은 당연히 가장 가까운 도쿄, 메모리는 1GB ,
이미지 종류에서 OS를 선택하고 OS는 CentOS를 선택하자.
버전은 6.7(64bit)를 고르고 root 패스워드를 입력하자
자동백업은 비활성화, 디스크 용량에선 50GB, 나머지는 걍 그대로 두고
맨 아래 "추가하기" 버튼을 누르면 서버가 생성된다.
2) 생성된 서버 확인 / ssh 로그인
서버 (https://manage.conoha.jp/Service/) 리스트 메뉴에 방금 생성한 서버가 보일텐데
네임 태그 링크를 눌러 서버의 상세 스테이터스를 확인해보자
가장 중요한 "네트워크 정보" 메뉴를 눌러서 보면
IP주소를 확인할 수 있다. (타입은 IPv4가 선택되어 있을텐데 걍 냅두자)
이제 이 아이피를 이용해 SSH 터미널 아무거나 사용해서 로그인을 해본다.
아직 아무것도 변경하지 않은 상태이므로 포트는 22번 그대로이고,
아이디는 root, 암호는 아까 설정한 암호.
3) 서버 시간 확인
명령어 : date
출력되는 시간이 로컬 시간과 일치하는지 확인한다. 서버 위치로 도쿄를 선택한 관계로
별도의 타임존 변경은 필요없을 것이다. 인터넷 시간 동기화도 해주는게 좋긴 하겠지만 일단 이 포스트에선 스킵
4) ftp 설치
명령어 : yum install vsftpd -y
명령어를 딱 보면 알겠지만 yum 이란 툴을 사용해 뭔가 install 하라는 것일테고, 그 대상이 vsftpd 라는 것이 되겠다.
끝에 -y 옵션은 최종적으로 설치할래 말래 묻지 말고 걍 설치하라는 의미다. 궁금하면 요 옵션을 빼고 실행도 해 볼 것.
보안을 위해 일반 ftp 프로토콜을 사용하지 않고 sftp를 사용할 것이므로
일단 SSL 키부터 만들자.
명령어 : (한 줄 한 줄 Copy & Paste해서 실행시키자)
mkdir /etc/ssl/private
openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
그 다음 /etc/vsftpd/vsftpd.conf 파일 맨 아래에 다음 내용을 입력하고 저장하자
(에디터는 vi 나 nano 편한대로 골라 사용한다. 에디터 사용법은 생략)
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH
이렇게 저장한 후 아래와 같은 명령어로 FTP 데몬을 실행시킨다.
명령어 : service vsftpd start
서버 구동시 자동으로 FTP 데몬이 실행되도록 하려면
명령어 : chkconfig vsftpd on
이제 FTP 클라이언트를 이용해 SFTP 프로토콜로 (22번 포트) 접속이 되는지 확인해본다.
보안을 위해 22번 포트를 그대로 사용하지 말고 다른 포트로 변경하는 것이 좋은데 그건 나중에 설명하겠다.
5) APM (Apache PHP MySQL) 설치
엔터프라이즈 리눅스를 위한 추가 패키지 설치를 위해 (당장은 안 필요하더라도) 일단 아래와 같이 명령어를 수행한 후
명령어 : yum install epel-release -y
아래와 같이 3종 패키지를 일괄 설치하자
명령어 : yum install httpd mysql-server mysql php php-devel php-pear php-mysql php-mbstring php-gd php-fpm -y
6) 아파치 실행
아파치 실행은
명령어 : service httpd start
참고로 service XXX restart 하면 데몬 재시작,
service XXX stop 은 데몬 중지 명령어이다.
ftp 자동 실행 등록과 마찬가지로 아래와 같이 수행토록 한다.
명령어 : chkconfig htppd on
7) MySQL 실행 / 설정
이쯤 되었으면
명령어 : service mysqld start
명령어 : chkconfig mysqld on
과 같은 응용력이 생겼을 것이다.
참고로 현재 서버 시작시 자동실행되는 데몬들의 리스트를 보려면 아래와 같이 수행한다.
명령어 : chkconfig --list
mysql root 암호 (os의 root 암호와는 별개다) 를 설정해주어야 하는데
여러 방법이 있으나 아래와 같은 방법으로 설정하도록 한다.
명령어 : mysql -u root -p
패스워드를 물어보는데 아직 설정을 안했으니 걍 엔터를 쳐서 mysql 콘솔에 로그인을 한다.
mysql> 프롬프트 상에서 아래와 같은 명령어로 root 암호를 지정한다. 가령 암호를 1234라고 할 경우
명령어 : update user set password=password('1234') where user='root';
보면 알겠지만 sql 업데이트 쿼리문이다.
그 다음
명령어 : flush privileges;
하고 나서
명령어 : quit;
로 빠져나온다.
mysql 에서 한글이 깨지지 않게 하려면
/etc/my.cnf 파일에 다음 내용을 삽입한 후 mysqld 를 재기동 (restart) 해주어야한다.
[client]
default-character-set = utf8
[mysqld]
init_connect="SET collation_connection = utf8_general_ci"
init_connect="SET NAMES utf8"
default-character-set = utf8
character-set-server = utf8
collation-server = utf8_general_ci
[mysqldump]
default-character-set = utf8
[mysql]
default-character-set = utf8
위의 내용을 그대로 붙여넣자.
7) 새로운 user 생성
계속 root로 사용하는건 서버 안전을 위해 안좋은 습관이다 별도의 user id를 생성해서 사용하도록 하고
필요할 때만 권한 상승을 하여 사용하도록 하자.
해서... newuser 란 아이디로 새롭게 아이디를 생성하려면
명령어 : adduser newuser
요렇게 명령을 내리면 /home/newuser 란 디렉토리가 생성되었을 것이다.
newuser 의 암호를 정해주자
명령어 : passwd newuser
newuser로 계정 변경
명령어 : su - newuser
프롬프트가 바뀐게 보일 것이다.
다시 root 로 변경하려면 exit 하면 되지만
처음에 newuser 로 로그인한 상태라면 (ssh 터미널에서 로그인할 때 newuser로 로그인) 아래와 같은 명령어로
root로 변경한다.
명령어 : su
이 때는 root 의 암호를 입력해야만 한다.
8) jdk, tomcat 설치
보안상 root 로 설치하지 않고 톰캣 전용 계정을 만들어 설치한다.
명령어 :
groupadd tomcat
useradd -g tomcat tomcat
passwd tomcat
su - tomcat
위와 같이 톰캣 그룹과 톰캣 아이디 생성후 톰캣 아이디로 계정 변경을 하자
su - tomcat 명령어로 인해 현재 디렉토리가
/home/tomcat 으로 변경되어 있을 것이다.
현재 디렉토리 확인 명령어는 아래와 같다.
명령어 : pwd
참고로 현재 계정의 홈 디렉토리로의 이동은
명령어 : cd
이다.
jdk 부터 설치하자.
jdk 는 오라클 홈페이지에 가서 다운 받은 후 ftp 를 이용해
/home/tomcat 디렉토리로 전송하도록 한다.
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
여기서 jdk-7u79-linux-x64.tar.gz 파일을 받으면 되는데, 버전은 변경될 수 있으니 가장 최신 버전으로 받도록 한다.
단 jdk8이 아니라 7을 설치한다.
/home/tomcat 디렉토리에서
명령어 : tar xvzf jdk 까지만 치고 탭 키를 누르면 명령어가 완성될 것이다.
xvzf 는 tar.gz 파일을 압축 풀 때 사용하는 명령어이다.
파일이 풀리게되면
/home/tomcat/jdk1.7.0_79 디렉토리가 생길텐데 ( ls 명령어로 확인해보자 )
/home/tomcat 디렉토리에서
명령어 : ln -s jdk1.7.0_79 jdk
로 jdk 란 심볼릭링크 (바로가기의 개념) 를 생성한다.
앞으론 jdk 란 디렉토리로 원래 디렉토리인 jdk1.7.0_79 접근이 가능해진다.
여전히 /home/tomcat 디렉토리에서
위와 같이 명령을 내리면 파일이 다운로드될 것이다.
역시 tar xvzf 로 파일을 푼 후
명령어 : ln -s apache-tomcat-7.0.67 tomcat
으로 tomcat 이란 심볼릭링크를 생성하자.
명령어 : vi .bashrc
로 .bashrc 파일 (환경설정파일)을 수정하는데
파일 맨 마지막에 아래와 같은 내용을 삽입한다.
export PATH="$HOME/jdk/bin:$HOME/tomcat/bin:$PATH"
export JAVA_HOME="$HOME/jdk"
export JRE_HOME="$HOME/jdk/jre"
export CATALINA_HOME="$HOME/tomcat"
export CATALINA_OPTS="-server -Xms256m -Xmx256m"
파일을 저장한 후
명령어 : source .bashrc
로 적용한다.
톰캣 실행은
명령어 : /home/tomcat/tomcat/bin/startup.sh
물론 해당 디렉토리로 이동해서 ./startup.sh 라고 입력해도 된다.
현재 /home/tomcat 디렉토리에 그대로 위치해 있었다면
tomcat/bin/startup.sh 로 명령을 내려도 되고.
그 다음, 기본적으로 8080 포트로 실행되므로 방화벽 해제를 해야한다.
9) 방화벽 해제
su 로 root 로 전환한 후
/etc/sysconfig/iptables 파일을 수정한다.
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
요런 라인이 보일텐데 22번, 즉 ssh 포트 오픈이 설정되어 있는 것이다
바로 아래 라인에
-A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 10022 -j ACCEPT
을 추가하고 저장한 후
명령어 : service iptables restart
로 수정된 방화벽 정책을 적용 하자.
위에 10022 는 새로운 ssh 포트이다. 보안상 22번 대신 사용할 포트인데
원하는 포트번호를 기입하면 된다. 여기선 예로 10022 를 사용하는 것으로 설명한다.
10) ssh 포트 변경
/etc/ssh/sshd_config
파일에서 Port 부분을 아까 지정한 10022 로 수정한 후 저장하고
명령 : service sshd reload
로 sshd 를 재시작한다.
이제 ssh 클라이언트로 로그인할 때 22번이 아닌 10022로 포트 지정을 하도록 하자.