Certbot으로 무료 SSL인증서 발급 받는 방법 (QUICK START) with Docker

BLUEI Server 0 691

이 문서는 QUICK START문서로 Docker 컨테이너에서 Certbot을 이용하여 무료로 SSL 인증서를 발급 받는 방법만을 기술 한다. 도커 컨테이너 생성 $ docker run -it -p 80:80 -p 443:443 --name ubuntu ubuntu /bin/bash 도커 컨테이너에서 CertBot 설치 $ apt update -y $ apt install -y software-properties-common $ add-apt-repository ppa:certbot/certbot $ apt update -y $ apt install -y certbot SSL 인증서 발급 $ certbot certonly --cert-name cert --standalone -d domain.com,www.domain.com 위 명령어를 입력하면 SSL 인증서가 발급된다. 인증서의 경로는 /etc/letsencrypt/live/cert/에 위치한다. Apache2에서 사용 Apache에서는 다음과 같이 보통 crt파일과 key파일이 필요한데 각 파일을 다음과 같이 변경하여 인증서 폴더에 복사한다. fullchain.pem ⇒ domain.crt private.pem ⇒ domain.key Nginx에서 사용 Nginx 설정 파일의 server {...} 블록에 다음 구문을 추가 ssl on; ssl_certificate {Certificate Path}; ssl_certificate_key {Private Key Path} Certificate Path: /etc/letsencrypt/live/cert/fullchain.pem Private Key Path: /etc/letsencrypt/live/cert/privkey.pem

해외서버 선택시 고려할 가치가 없는 지역

BLUEI Server 0 894

최근 클라우드서비스가 퍼지면서 해외에 서버를 두는 경우가 많아지고 있습니다.하지만 항상 어디에 서버를 두면 속도가 문제가 없을까?? 하는 고민은 ㅠㅠ 없어지지 않죠저 역시 도쿄 아니면 싱가포르를 선택하는데... 이에 대해서 깔끔하게 정리된 글이 있어서 올려 봅니다.원문: https://xetown.com/tiptalk/951853 대부분의 경우 "거들떠볼 가치도 없다"고 짧게 대답하고 그나마 속도가 괜찮은 일본이나 미국 서부로 안내해 드립니다만, 전세계 여기저기 서버를 사용해 본 입장에서 일정한 패턴을 눈치채고 있기 때문에 아예 깔끔하게 규칙을 만들어보려고 합니다. 1. 구글 지도나 그 밖의 세계지도를 폅니다. 2. 북한 평양을 통과하여 북극과 남극을 잇는 세로줄을 쫙 긋습니다. 3. 노르웨이 오슬로를 통과하여 북극과 남극을 잇는 세로줄을 쫙 긋습니다. 4. 이 두 줄 사이에 있는 지역은 서버 선택시 거들떠보지도 않는 것이 정신건강에 좋습니다. 5. 북회귀선(북위 23.5도)을 따라 가로줄을 쫙 긋습니다. 6. 이 줄보다 아래에 있는 지역에도 서버 따위는 존재하지 않는다고 가정합니다. 이 블랙리스트에는 동유럽, 러시아, 중국, 동남아 (홍콩과 싱가포르 포함), 호주, 인도, 중동, 아프리카 대부분 지역 뿐 아니라 코펜하겐, 베를린, 로마 등 흔히 서유럽이라고 생각하는 지역도 상당수 포함됩니다.

Vultr 윈도우 서버 시간이 변경되는 문제 해결

BLUEI Server 0 1,837

Vultr에서만 발생하는 문제인지 기타 다른 Cloud Service에서도 발생하는 문제인지는 확실치 않으나AWS(아마존 웹서비스)에서는 이런 문제가 발생한적이 없는것으로 봐서는그리고 Vultr에서도 따로 FAQ페이지가 있는것으로 봐서는 Vultr에서만 발생하는 문제인듯 하다.Vultr이 KVM기반으로 알고 있으니 KVM환경에서도 발생하는 문제일수도 있다.나 같은 경우는 Timezone을 Asia/Seoul로 변경해도 계속해서 시간이 다른 시간대로 변경되는 문제점이 발생되었다.서버 시간을 읽어들여 처리하는 어플리케이션을 운영하고 있으므로 나에게는 상당히 크리티컬한 문제였다.Vultr이 아니더라도 이런 문제가 발생한다면 첨부된 "vultr_correcting_time_on_windows_server.reg"를 실행시켜 레지스트리 변경 작업을 하면 된다.vultr_correcting_time_on_windows_server.reg의 내용은 다음과 같다.   Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation] "RealTimeIsUniversal"=dword:00000001  

리눅스(CentOS/우분투)에서 CRONTAB 설치 방법

BLUEI Server 0 7,484

가장 대표적인 리눅스 배포판인 CentOS 및 우분투에서 CRONTAB 설치하는 방법을 알아 보겠습니다.저도 가끔 다시 설치하려고 하면 정확한 패키지명을 cron이라고만 생각해서 설치를 시도해서~~ 매번 검색하는 번거로움을 줄이고자 정리 해봅니다 :smil CentOS에서 CRONTAB 설치하기 yum -y install cronie명령어를 실행 합니다. bash-4.2# yum -y install cronie 이 명령어를 실행하면 아래와 같이 CRONTAB설치가 시작됩니다. Loaded plugins: ovl, priorities Resolving Dependencies --> Running transaction check ---> Package cronie.x86_64 0:1.4.4-15.8.amzn1 will be installed --> Processing Dependency: dailyjobs for package: cronie-1.4.4-15.8.amzn1.x86_64 --> Processing Dependency: syslog for package: cronie-1.4.4-15.8.amzn1.x86_64 --> Running transaction check ---> Package cronie-anacron.x86_64 0:1.4.4-15.8.amzn1 will be installed --> Processing Dependency: crontabs for package: cronie-anacron-1.4.4-15.8.amzn1.x86_64 ---> Package rsyslog.x86_64 0:5.8.10-9.26.amzn1 will be installed --> Processing Dependency: logrotate >= 3.5.2 for package: rsyslog-5.8.10-9.26.amzn1.x86_64 --> Running transaction check ---> Package crontabs.noarch 0:1.10-33.9.amzn1 will be installed ---> Package logrotate.x86_64 0:3.7.8-26.14.amzn1 will be installed --> Finished Dependency Resolution Dependencies Resolved ============================================================================================================================================================================ Package Arch Version Repository Size ============================================================================================================================================================================ Installing: cronie x86_64 1.4.4-15.8.amzn1 amzn-main 90 k Installing for dependencies: cronie-anacron x86_64 1.4.4-15.8.amzn1 amzn-main 32 k crontabs noarch 1.10-33.9.amzn1 amzn-main 10 k logrotate x86_64 3.7.8-26.14.amzn1 amzn-main 62 k rsyslog x86_64 5.8.10-9.26.amzn1 amzn-main 774 k Transaction Summary ============================================================================================================================================================================ Install 1 Package (+4 Dependent packages) Total download size: 968 k Installed size: 2.4 M Is this ok [y/d/N]: y Downloading packages: (1/5): cronie-anacron-1.4.4-15.8.amzn1.x86_64.rpm | 32 kB 00:00:00 (2/5): logrotate-3.7.8-26.14.amzn1.x86_64.rpm | 62 kB 00:00:00 (3/5): rsyslog-5.8.10-9.26.amzn1.x86_64.rpm | 774 kB 00:00:00 (4/5): cronie-1.4.4-15.8.amzn1.x86_64.rpm | 90 kB 00:00:00 (5/5): crontabs-1.10-33.9.amzn1.noarch.rpm | 10 kB 00:00:00 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Total 888 kB/s | 968 kB 00:00:01 Running transaction check Running transaction test Transaction test succeeded Running transaction Warning: RPMDB altered outside of yum. Installing : logrotate-3.7.8-26.14.amzn1.x86_64 1/5 Installing : rsyslog-5.8.10-9.26.amzn1.x86_64 2/5 Installing : crontabs-1.10-33.9.amzn1.noarch 3/5 Installing : cronie-anacron-1.4.4-15.8.amzn1.x86_64 4/5 Installing : cronie-1.4.4-15.8.amzn1.x86_64 5/5 Verifying : logrotate-3.7.8-26.14.amzn1.x86_64 1/5 Verifying : cronie-1.4.4-15.8.amzn1.x86_64 2/5 Verifying : rsyslog-5.8.10-9.26.amzn1.x86_64 3/5 Verifying : crontabs-1.10-33.9.amzn1.noarch 4/5 Verifying : cronie-anacron-1.4.4-15.8.amzn1.x86_64 5/5 Installed: cronie.x86_64 0:1.4.4-15.8.amzn1 Dependency Installed: cronie-anacron.x86_64 0:1.4.4-15.8.amzn1 crontabs.noarch 0:1.10-33.9.amzn1 logrotate.x86_64 0:3.7.8-26.14.amzn1 rsyslog.x86_64 0:5.8.10-9.26.amzn1 Complete! bash-4.2# 그 다음 service crond start로 크론 서비스를 실행 해 주시면 됩니다. bash-4.2# service crond start 마지막으로 서버가 재시작 될 때, 자동으로 crond를 실행하기 위해서 /sbin/chkconfig --levels 235 crond on명령어로 서비스에 등록 해 줍니다. bash-4.2# /sbin/chkconfig --levels 235 crond on Ubuntu에서 CRONTAB 설치하기 yum -y install cron명령어를 실행 합니다. bash-4.2# apt-get install -y cron

DOCKER 자주 사용하는 명령어 모음

BLUEI Server 0 4,040

DOCKER를 사용하면서 많이 사용하는 명령어들을 모아보았습니다. search 도커허브에서 이미지 검색 pull 도커허브에서 이미지 다운로드 images 로컬에 있는 도커 이미지 목록 보기 run 도커이미지로 컨테이너 생성하기 ps 로컬에 생성된 도커 컨테이너 목록 보기 attach 도커 컨테이너에 접속하기 exec 도커 컨테이너에 명령 실행하기 start 도커 컨테이너 실행하기 stop 도커 컨테이너 정지하기 restart 도커 컨테이너 재시작하기 commit 도커 컨테이너 변경사항 이미지로 생성하기 rm 도커 컨테이너 삭제하기 rmi 도커 이미지 삭제하기 network create 도커 네트워크 생성하기 network connect 도커 네트워크에 컨테이너 연결하기 network disconnect 도커 네트워크에서 컨테이너 연결끊기 network inspect 도커 네트워크 상세정보 보기 network rm 도커 네트워크 삭제하기 network ls 도커 네트워크 목록 보기 도커허브에서 이미지 검색 docker search를 이용하여 도커허브에서 이미 생성된 수많은 Pre-Build 이미지를 검색 할 수 있다. $ docker search [이미지이름] 우분투 Apache2 PHP조합의 웹서버를 찾고 싶다면 docker search "ubuntu apache2 php"로 search명령을 실행 하면 된다.docker search를 실행 하였을 경우 나오는 각 필드를 살펴보면 다음 과 같다.NAME은 이미지 이름DESCRIPTION은 이미지에 대한 설명STARS는 사용자들이 이미지를 추천한 횟수OFFICIAL은 공식 이미지AUTOMATED 특정한 설정이 완료된 자동화된 이미지우리는 우분투 환경에서 Apache2와 php가 설치된 이미지를 찾으려고 하고 있으므로 AUTOMATED가 [OK]인 이미지가 우리가 찾는 이미지이다. $ docker search "ubuntu apache2 php" NAME DESCRIPTION STARS OFFICIAL AUTOMATED ubuntu Ubuntu is a Debian-based Linux operating s... 6276 [OK] php While designed for web development, the PH... 2521 [OK] php-zendserver Zend Server - the integrated PHP applicati... 115 [OK] ubuntu-upstart Upstart is an event-based replacement for ... 74 [OK] ubuntu-debootstrap debootstrap --variant=minbase --components... 30 [OK] tetraweb/php PHP 5.5, 5.6, 7.0, 7.1 for CI and running ... 23 [OK] webdevops/php PHP (FPM and CLI) service container 17 [OK] 1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5 ubuntu-16-nginx-php-phpmyadmin-mysql-5 13 [OK] teamrock/apache2 TeamRock''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''s Apache2 5 [OK] 1and1internet/ubuntu-16-nginx-php-5.6 ubuntu-16-nginx-php-5.6 2 [OK] 1and1internet/ubuntu-16-nginx-php-7.0 ubuntu-16-nginx-php-7.0 2 [OK] ascdc/apache2-php7 apache2 + php7 2 [OK] 1and1internet/ubuntu-16-apache-php-7.0 ubuntu-16-apache-php-7.0 1 [OK] appsvc/php Azure App Service php dockerfiles 1 [OK] ascdc/apache2-php56 apache2-php56 1 [OK] 1and1internet/ubuntu-16-apache-php-5.6-drupal-8 ubuntu-16-apache-php-5.6-drupal-8 1 [OK] 1and1internet/ubuntu-16-nginx-php-5.6-wordpress-4 ubuntu-16-nginx-php-5.6-wordpress-4 1 [OK] mobingi/ubuntu-apache2-php5 1 [OK] 1and1internet/ubuntu-16-nginx-php-phpmyadmin-mariadb-10 ubuntu-16-nginx-php-phpmyadmin-mariadb-10 1 [OK] 1and1internet/ubuntu-16-apache-php-7.1 ubuntu-16-apache-php-7.1 0 [OK] mobingi/ubuntu-apache2-php7 ubuntu-apache2-php7 0 [OK] jeffutter/apache2-php Docker Image with apache2, php5.5 and php ... 0 [OK] antage/apache2-php5 Docker image for running Apache 2.x with P... 0 [OK] pamtrak06/ubuntu14.04-apache2 ubuntu14.04-apache2 0 [OK] 1and1internet/ubuntu-16-apache-php-5.6 ubuntu-16-apache-php-5.6 0 [OK] 도커허브에서 이미지 다운로드 docker search를 이용하여 검색한 이미지를 다운로드 하기 위해서는 docker pull명령어를 이용한다. $ docker pull [이미지이름] 검색된 이미지중에 우분투 Apache2 PHP 이미지인 "ascdc/apache2-php7"를 다운로드 받으려고 한다면 다음과 같다. $ docker download "ascdc/apache2-php7" 도커이미지로 컨테이너 생성하기 docker pull을 이용하여 가져온 이미지를 컨테이너로 생성하기 위해서는 docker run명령어를 이용해야 한다. $ docker run -i -t --name [컨테이너이름] [이미지이름] [실행할 명령어] 다운로드 받은 "ascdc/apache2-php7"를 웹서버용으로 만들기 위해서 --name을 webserver로 하고 컨테이너를 생성한다. $ docker run -i -t --name webserver "ascdc/apache2-php7" /bin/bash 위와 같이 컨테이너를 생성하였을경우 exit명령 또는 Ctrl+D를 이용하면 컨테이너가 정지된다. 만약, 데몬모드로 컨테이너를 생성하기 위해서는 "-i -t"옵션 대신 "-d"옵션으로 컨테이너를 생성 해 준다. $ docker run -d --name webserver "ascdc/apache2-php7" 마지막으로 웹서비스를 위한 컨테이너이므로 80(http)포트와 443(https)를 도커호스트에 맵핑해주어야 한다. 이경우 "-p 80:80 -p 443:443" 옵션을 추가적으로 입력 한다. $ docker run -d -p 80:80 -p 443:443 --name webserver "ascdc/apache2-php7" run 명령어 옵션-d 백그라운드로 컨테이너를 생성-i -t 포그라운드로 컨테이너를 생성 (이 경우 커맨드라인 맨 마지막에 실행할 명령어를 같이 입력)-p 컨테이너 포트와 호스트 포트를 맵핑-v 컨테이너의 특정 디렉토리를 호스트와 맵핑 도커 컨테이너 실행하기 정지된 컨테이너를 시작(실행)하기 위해서는 docker start 명령어를 사용한다. docker start 명령어는 물리적으로 서버의 전원을 켜는 행동으로 이해 하면 된다. $ docker start [컨테이너이름] 앞서 생성한 webserver 컨테이너를 시작하기 위해서는 다음과 같이 명령어를 실행 한다. $ docker start webserver 도커 컨테이너 정지하기 실행중인 컨테이너를 정지하기 위해서는 docker stop 명령어를 사용한다. docker stop 명령어는 물리적으로 서버의 전원을 끄는 행동으로 이해 하면 된다. $ docker stop [컨테이너이름] 앞서 생성한 webserver컨테이너를 정지하기 위해서는 다음과 같이 명령어를 실행 한다. $ docker start webserver 도커 컨테이너 재시작하기 실행중인 컨테이너를 재시작하기 위해서는 docker restart 명령어를 사용한다. docker restart 명령어는 물리적으로 서버의 재시작 버튼을 누르는 행동으로 이해 하면 된다. $ docker restart [컨테이너이름] 앞서 생성한 webserver 컨테이너를 재시작하기 위해서는 다음과 같이 명령어를 실행 한다. $ docker restart webserver