[태그:] apache2

  • 서버 재설치 feat. docker

    mysql을 8.0으로 업데이트 하면서 기존 데이터 베이스가 날아갔고, 다시 복구되지도 않았다. 이번 기회에 서버를 재설치 하고 요즘 뜨는 docker로 서비스를 돌리기로 해다. 의지는 있지만 docker 기본 개념과 철학을 잘 이해하지 못한 상태에서 apache, mysql을 연동하는데 너무나 어려웠다.

    • docker container는 한 개 daemon만 실행한다.
    • 여러 daemon이 필요하면 container를 새로 만든다.
    • docker build 옵션 중 cmd ,entrypoint는 마지막 한 개만 유효하다.
    • docker run에 –link 옵션으로 다른 container를 연결하면 hosts 파일에 container 이름이 추가된다. 다른 container에 이름으로 접근할 수 있다.
    • docker run 중 -p 옵션으로 포트를 설정하지 않으면 expose 옵션으로 열린 포트를 외부에서 접근할 수 없다.
    • mysql docker image에 bind-address 옵션이 없고, 넣어도 역할을 하지 않는다.
    • link 옵션 대신 network으로 추가할 수 있는데, 힘들어서 못 하겠다.
    • mysql 로 MYSQL_ROOT_PASSWORD로 실행한 후 mysql < file.sql로 복구한 뒤, flush priviliges로 복구 파일 password를 적용시켜야 한다. 파일에 저장된 root password로 데이터 베이스 비밀번호를 초기화 할 수 있다.
    • https 설정시 lets encrypt로 받은 키를 configure file에 default에 넣지 않고 별도 virtual host를 설정하면SSL_ERROR_RX_RECORD_TOO_LONG 가 뜬다.
    • apache에서 database에 접근하기 위한 사용자 이름, 패스워드를 별도 파일을 만들어 접근할 때, docker container에 넣어 줘야 한다.

    이 밖에도 수 많은 시행 착오가 있었다. 게다가 가장 최근 백업 파일이 두 달 전 파일이었다. 주중에 한 번씩 백업 하도록 수정했다. 설정하기는 힘들었어도 사용해 보니 편하다. 간단한 업데이트로 서버를 재설장 한다는게 말도 안되지만 잦은 빈도로 발생한다. phpmyadmin도 설치해야 하는데, 지금 엄두가 안 난다.

    두 달치 기록을 날리고 값진 경험을 했다. 아직도 복구 중…

  • phpmyadmin에 https 적용하기

    나중에 기록을 위해서 남김..
    여기에서 참조..
    *http://howtolamp.com/lamp/phpmyadmin/4.2/securing#ssl
    *http://howtolamp.com/lamp/httpd/2.4/configuration-files#httpd-ssl-conf
    *https://www.digitalocean.com/community/tutorials/how-to-set-up-ssl-certificates-with-phpmyadmin-on-an-ubuntu-12-04-vps

    1. SSL 설정파일 수정
    아파치2 설치시 기본적으로 ssl이 로딩되어 있는 것 같다.
    데비안8의 경우, /etc/apache2/sites-available의 default-ssl.conf 파일에서 SSL을 설정할 수 있다.그런가??

    이 파일의 마지막 부분에 아래와 같이 붙여 넣는다.

    <VirtualHost 192.168.0.100:443>
    
    DocumentRoot "/usr/local/apache2/phpmyadmin"
    ServerName phpmyadmin.example.com
    ServerAdmin [email protected]
    ErrorLog "/usr/local/apache2/logs/ssl-phpmyadmin.example.com-error_log"
    TransferLog "/usr/local/apache2/logs/ssl-phpmyadmin.example.com-access_log"
    
    <Directory "/usr/local/apache2/phpmyadmin">
    AllowOverride AuthConfig Limit
    Require all granted
    </Directory>
    
    <Directory "/usr/local/apache2/phpmyadmin/libraries">
    Require all denied
    </Directory>
    
    <Directory "/usr/local/apache2/phpmyadmin/setup/lib">
    Require all denied
    </Directory>
    
    <Directory "/usr/local/apache2/phpmyadmin/setup/frames">
    Require all denied
    </Directory>
    
    SSLEngine on
    
    SSLCertificateFile "/usr/local/apache2/conf/server.crt"
    SSLCertificateKeyFile "/usr/local/apache2/conf/server.key"
    
    <FilesMatch ".(shtml|phtml|php)$">
    SSLOptions +StdEnvVars
    </FilesMatch>
    
    BrowserMatch "MSIE [2-5]" 
    nokeepalive ssl-unclean-shutdown 
    downgrade-1.0 force-response-1.0
    
    CustomLog "/usr/local/apache2/logs/ssl-phpmyadmin.example.com-request_log" 
    "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b"
    
    </VirtualHost>

    아파치가 /usr/local/..여기에 설치되어 있다고 가정하고 위 코드를 사용햇는데, 내 사양에 맞게 바꿔준다.
    debian8의 경우, /usr/share/phpmyadmin의 경로에 phpmyadmin이 설치되어 있다.

    2. 인증서 및 키 설정..
    인증서와 키를 만들어야 된다..apache2 설치 폴더에 디렉토리를 하나 만들고, 아래와 같이 만든다.

    openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt

    365일 유지되는 키라는데..
    터미널에 몇가지 질문이 보이는데, 적절한 답을 채운다.

    3. ssl 로딩..

    service apache2 reload

    로 설정한 SSL을 로딩한다.
    여기에서 에러가 뜨면, 관련 메세지를 확인해 본다..
    난 apache2를 재시작 하니까 로딩이 제대로 됐다.

    4. 사이트 접속..
    기존 사이트에 https://…
    이런 형식으로 붙여 접속을 한다.
    매번 접속시마다 강제로 ssl을 사용하는 옵션이 있는데, 필요 없어 보인다.