리눅스 우분투 16.04 서버 세팅하기
웹호스팅을 사용하다가 이번에 가비아 가상호스팅 VPS를 이용하기로 했습니다.
그래서 서버세팅을 하고 있는데요.
그 과정을 적고, 나중에 다시 하게 됐을때 참고하려고 합니다.
다른분들도 참고하시면 좋을 것 같습니다.
이 글은 제가 공부하면서 계속해서 업데이트 할 것입니다.
서버를 세팅하는 작업은 리눅스 명령어를 이용하기도 하지만 각종 파일들을 수정하기도 한다. 이때 사용하는 툴이 vi이다. 명령어들을 보면 vi로 시작하는 명령어가 있는데 파일을 열어서 수정하는 과정이다. 리눅스를 처음 접하는 사람은 이게 뭔지 모르는 것이 당연하다. 하지만 조금만 알면 메모장과 다를바 없다는 걸 알 수 있다.(물론 조금은 다르다)
명령어 vi로 무슨 파일을 열었다면 바로 수정이 되는 것이 아니다. i버튼을 누르면 파일 수정을 시작할 수 있다. 그리고 수정을 다 했을땐 esc를 눌러서 명령어 모드로 나온다음 :wq를 입력하면 저장하고 종료하게 된다. 혹은 :q라고 입력하면 저장하지 않고 종료한다. 그외에도 vi에서 사용하는 명령어들이 있는데 그것은 쉽게 찾아볼 수 있고, 초보는 이정도만 알아도 vi 명령어가 뭐하는 것인지 알게 될 것이다.
내가 현재 로그인 되어 있는 것이 root인지를 확인해봐야한다.
# whoami
이때 root(루트)로 나와있으면 아래 단계를 진행하면 되고 루트가 아니라면 루트로 변경해야한다.
root로 로그인하는 명령어
# sudo su
다시 한번 내가 root인지 확인해주자.
# whoami
이제는 비밀번호 변경하자.
가비아에서 세팅이 완료되면 임시비밀번호를 메일로 발송해준다. 아이디는 root이다. root권한도 있다.
비밀번호 변경 명령어
# passwd
새로운 비밀번호를 넣고 다시 한번 확인차 입력하라고하고 마치게 된다.
현재 서버에 설치된 패키지들을 최신 버전으로 업그레이드한다.
패키지 목록 갱신
# apt-get update
최선버전패치
# apt-get upgrade
초기 세팅은 영국시간이다. 그래서 각자에게 맞는 시간으로 설정해줘야한다. 한국이라면 Asia – Seoul을 선택하면 되겠다.
# dpkg-reconfigure tzdata
선택하는 화면이 나오면 차례로 아시아와 서울을 선택한다.
호스트네임을 명령어로 확인한다.
# hostname
초기에 세팅된 호스트네임이 있을텐데 이제 이것을 먼저 변경한다. 가장 좋은 것은 도메인 이름 전체를 사용하는 것이 좋다. 예를들어 도메인이 abc.com이라면 호스트네임도 abc.com이라고 하는 것이다.
호스트네임을 변경하는 방법은 2가지가 있다. vi를 이용해 hostname 파일을 열어서 적는 방법과 명령어로 변경하는 방법이다. 쉽게 명령어로 하겠다.
hostnamectl set -hostname abc.com
이렇게 명령어를 입력하면 호스트네임이 abc.com으로 변경된다.
이제는 hosts 파일을 수정해줘야 한다.
# vi /etc/hosts
파일을 열어보면 아래와 같이 적혀있다.(초기 설정값이기 때문에 ip와 이름이 다를 수 있음)
127.0.1.1 localhost
127.0.1.1 ubuntu
여기에서ubuntu라고 되어 있는 부분을 지우고 내가 변경한 호스트네임으로 수정한다.
16.04 LTS 에서는 아파치 2.4.x 버전이 설치된다.
설치
# apt-get install apache2
아파치 버전 체크
# apache2 -v
서버의 IP주소로 접속해보면 아파치에 대한 설명 페이지가 나올 것이다.
apache2.conf 파일을 수정한다.
# vi /etc/apache2/apache2.conf
파일 중간에서 <FilesMatch “^\.ht”> 구문이 끝난 다음에 아래 내용을 추가한다.
# deny file, folder start with dot
<DirectoryMatch “^\.|\/\.”>
Require all denied
</DirectoryMatch>
# deny (log file, binary, certificate, shell script, sql dump file) access.
<FilesMatch “\.(?i:log|binary|pem|enc|crt|conf|cnf|sql|sh|key|yml|lock|gitignore)$”>
Require all denied
</FilesMatch>
# deny access.
<FilesMatch “(?i:composer\.json|contributing\.md|license\.txt|readme\.rst|readme\.md|readme\.txt|copyright|artisan|gulpfile\.js|package\.json|phpunit\.xml|access_log|error_log|gruntfile\.js|bower\.json|changelog\.md|console|legalnotice|license|security\.md|privacy\.md)$”>
Require all denied
</FilesMatch>
# Allow Lets Encrypt Domain Validation Program
<DirectoryMatch “\.well-known/acme-challenge/”>
Require all granted
</DirectoryMatch>
# apt-get install php
계속 하겠느냐는 물음에 Y로 대답
그리고 몇가지 모듈을 설치한다.
# apt-get install libapache2-mod-php7.0
# apt-get install php-mcrypt
# apt-get install php-mbstring
이미지처리 모듈 설치
# apt-get install php-gd
# apt-get install php-curl php-xml
# apt-get install mariadb-server
# usr/bin/mysql_secure_installation
비밀번호만 설정하고 나머진 전부 그냥 엔터만 누른다. 혹시 잘못하면 위의 명령어를 다시 실행한다.
리눅스 루트로 로그인 한 상태에서
# mysql
mysql로 접속한다. 그리고 아래와 같은 구문을 차례로 적어준다.
use mysql;
update user set plugin=” where User=’root’;
flush privileges;
exit;
이 그림처럼 하는 것이다.
# apt-get install php-mysql
# vi /etc/mysql/mariadb.conf.d/50-server.cnf
이렇게 에디터로 들어가서 아래의 두 줄을 추가해준다. 위치는 skip-external-locking 밑에 넣으면 된다.
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
여기까지 했으면 mysql 재시작
# service mysql restart
웹서비스 구동시 발생할 수 있는 Nobody 퍼미션 관련 문제를 해결하기 위해 차례로 설치한다.
# apt-cache search mpm-itk
# apt-get install libapache2-mpm-itk
# chmod 711 /home
# chmod -R 700 /home/*
마지막 명령어는 home폴더에 아무것도 없을때 에러가 날 수 있고, 무시하면 된다. 또한 사용자계정을 만들어서 home밑에 메인페이지를 둔다면 700이 아니라 711로 해야 접근이 가능하다.
계정을 생성해본다.
# adduser user1
이렇게 명령어를 입력하면 user1이라는 계정이 생성된다. 그러면 비밀번호를 생성한다. 그 뒤에는 풀네임, 룸넘버, 워크폰, 홈폰, 기타 등등 물어보는데 엔터로 넘어가면 되고 마지막에 Y를 누르고 끝낸다.
# su -l user1
# mkdir www
# exit
나중에 계정을 삭제할 수도 있다. 계정을 삭제하는 명령어는 다음과 같다.
# userdel -r user1
이렇게하면 user1이라는 계정을 삭제한다.
사이트를 활성화 하기 위해서 환경설정을 해줘야한다. 여기에서 도메인은 abc.com으로 가정했고, 사용자계정은 user1로 했으니 나에게 맞게 변경해서 작성해야한다.
# vi /etc/apache2/sites-available/abc.com.conf
처음에는 빈파일이다. 아래의 내용을 적어넣자. FTP를 먼저 설치해서 내 컴퓨터에서 적은 뒤 서버에 올리는 방법이 편리하다.
<VirtualHost *:80>
#main domain
ServerName abc.com
#additional domain
ServerAlias www.abc.com
ServerAlias my-anotherdomain.com
#document Root
DocumentRoot /home/myuser1/www/
#additional setting
<Directory /home/myuser1/www/>
Options FollowSymLinks MultiViews
AllowOverride All
require all granted
</Directory>
AssignUserID myuser1 myuser1
ErrorLog ${APACHE_LOG_DIR}/lael.be-error.log
CustomLog ${APACHE_LOG_DIR}/lael.be-access.log combined
</VirtualHost>
만약 SSL을 설치한다면 아래의 내용을 추가해서 넣어주면 된다.
#main domain
ServerName lael.be
#additional domain
ServerAlias www.lael.be
ServerAlias my-anotherdomain.com
#document Root
DocumentRoot /home/myuser1/www/
#additional setting
Options FollowSymLinks MultiViews
AllowOverride All
require all granted
AssignUserID myuser1 myuser1
ErrorLog ${APACHE_LOG_DIR}/lael.be-error.log
CustomLog ${APACHE_LOG_DIR}/lael.be-access.log combined
Header always set Strict-Transport-Security “max-age=31536000”
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
SSLHonorCipherOrder on
SSLCertificateFile “/home/myuser1/ssl/mysite_ssl.crt”
SSLCertificateKeyFile “/home/myuser1/ssl/mysite_ssl.key”
SSLCertificateChainFile “/home/myuser1/ssl/mysite_ssl.certchain.crt”
먼저 웹서버와 도메인 연결에 관한 글(http://ddable.com/linux-6/ )
그런데 이 연결이 잘 됐어도 브라우저에서 도메인을 입력했을때 24시간이상 걸리는 경우도 있다. 그럴때 빠르게 연결이 됐는지만 확인해볼 수 있는 방법이 있다.
윈도우에서 시작메뉴를 눌러서 cmd 입력
명령어로 nslookup 입력
그리고 도메인을 입력해주면 권한없는 응답이라며 도메인이름과 ip주소가 나온다. ip주소가 나오지 않는다면 제대로 연결이 안됐다고 볼 수 있다.
SSH의 기본포트번호는 22입니다. 그래서 많은 세계의 많은 곳에서 로그인 시도가 이루어집니다. 그래서 포트번호만 변경해도 그런 시도조차 당하지 않을 수 있죠. 그래서 변경하는게 좋다고 합니다. 변경할 때는 10000 이상의 번호로 하고, 기억해두셔야합니다.
# vi /etc/ssh/sshd_config
파일을 열고 아래로 좀 내려가보면 Port 22라고 적힌 부분이 있습니다. 여기에서 22를 다른 1만 이상의 숫자로 변경해주시면 됩니다. 그리고 다시 시작.
# service ssh restart
그리고 이후엔 SSH 접속시에 포트번호를 22가 아닌 내가 적은 번호로 접속해야한다는점도 꼭 유의하세요.
제가 사용하는 가비아에서는 가비아 자체적으로 적용되는 방화벽에도 추가 설정을 해줘야하는데요.
가비아 접속과 로그인 – MY가비아 – 서비스정보 – 우측의 관리툴에서 시스템 모니터링 – 왼쪽 자원관리의 서비스 자원 – 원하는 서버를 클릭 – 아래쪽에 방화벽에서 방화벽 정책 관리 – 보안 정책 추가 – 내가 적은 포트번호 입력
5년이상 로보폼을 사용하고 있었음. 과거엔 결제해서 사용하다가 요근래 1년정도는 결제하지 않고 휴대폰에만 저장해서 사용하고 있었지.…
로지텍 버티컬마우스를 샀다. 리프트라는 제품인데 아시아인의 손에 맞춰 좀 작게 나온 것이라고 한다. 전체적으로는 만족스럽다.(가격빼고)…
https://www.newdaily.co.kr/site/data/html/2014/04/04/2014040400090.html 김대중은 1998년 11월 23일 CNN과의 인터뷰에서 제주 4.3사건에 대해 이렇게 이야기하였다. "공산당의 폭동으로 일어났지만…
2018년4월 구기동 빌라 매입 3.5억원 (남편 서모씨가 문다혜에게 증여) https://www.greened.kr/news/articleView.html?idxno=88941 2018년7월 구기동 빌라 매도 5.1억원…