2016년 5월 18일 수요일

AWS EC2 인스턴스에 Mariadb를 설치 후 기존 Production server(RDS로 MariaDB에 연결되어 있다.)와 세팅을 똑같이 했으나 localhost로는 연결이 되나 remote access가 불가능한 문제가 생겼다.

우선 적으로 

CREATE USER 'myusername'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'myusername'@'%' IDENTIFIED BY 'password';

위의 query를 통해서 새로운 아이디와 모든 host에서 접근 가능한 아이디를 만든다.

이후에 

/etc/mysql/my.cnf 경로에 있는
bind-address = 127.0.0.1
bind-address = 0.0.0.1 로 바꿔준다.
DJANGO를 windows 환경에서 원격의 DB server에 연결하여 테스트하려는 중에 MYSQL DB client를 설치하기가 영 까다로웠다.(우분투 환경에서는 apt-get과 pip로 쉽게 해결했었다.)

stackoverflow를 뒤지던 중에 아래의 URL에서 파일을 다운로드 받아 수동으로 설치하여 해결하였다.

http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python

설치시엔 python -m pip install [파일경로]

형식으로 하면 된다.

2016년 4월 17일 일요일

NGINX+letsencrypt 자동으로 renewal하기

https://vincent.composieux.fr/article/install-configure-and-automatically-renew-let-s-encrypt-ssl-certificate

위의 링크들을 참고하여 진행했다.
cron이 진행되는 시간은 서버시간 기준이기 때문에 서버의 시간을 한국 시간으로 맞췄다.

nginx 설정을 할 때에는

location '/.well-known/acme-challenge' { root /var/www/yourdomain.tld/; try_files $uri /$1; }

$uri와 /$1 사이에 공백이 있다는 사실을 모르고 에러를 계속 보다가 나중에야 공백이 있음을 깨닫고 처리할 수 있었다.

2016년 4월 12일 화요일

AWS + Nginx에서 letsencrypt 설정

letsencrypt를 이용하여 SSL인증서를 받으려 시도했다.
sudo ./letsencrypt-auto certonly --standalone

하지만 다음과 같은 메세지와 함께 계속해서 실패했다.

IMPORTANT NOTES:
 - The following errors were reported by the server:

   Domain: potenup.co.kr
   Type:   connection
   Detail: Failed to connect to host for DVSNI challenge

   Domain: www.potenup.co.kr
   Type:   connection
   Detail: Failed to connect to host for DVSNI challenge

   To fix these errors, please make sure that your domain name was
   entered correctly and the DNS A record(s) for that domain
   contain(s) the right IP address. Additionally, please check that
   your computer has a publicly routable IP address and that no
   firewalls are preventing the server from communicating with the
   client. If you're using the webroot plugin, you should also verify
   that you are serving files from the webroot path you provided.


방법을 찾던중 443 포트가 열려 있어야함을 알게 되었고
AWS console에서 443 TCP 포트를 열어 해결했다.

2016년 4월 8일 금요일

AWS 서울 region에서의 django S3 연동

인터넷에 있는 온갖 예제를 다 따라해봐도 되질 않아 많은 고생 중에 서울과 프랑크푸르트 등 최근에 만들어진 region에서는 다른 종류의 알고리즘을 사용해서 특별한 설정이 필요하다고 한다.

boto와 django-storages를 설치한 뒤

AWS_S3_HOST = 's3.ap-northeast-2.amazonaws.com'AWS_QUERYSTRING_AUTH = FalseAWS_ACCESS_KEY_ID = 'xxxxxxxxxxxxxxxxxxxxxxxxx'AWS_SECRET_ACCESS_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxxx'AWS_STORAGE_BUCKET_NAME = 'xxxxxxxx'DEFAULT_FILE_STORAGE = "storages.backends.s3boto.S3BotoStorage"
MEDIA_URL = 'http://%s.s3.amazonaws.com/' % AWS_STORAGE_BUCKET_NAME

위와 같이 설정하여 해결했다.