서버/AWS (Amazon Web Services)

Amazon Lightsail 여러개의 워드프레스 사이트 설치 (3) - Amazon Linux에 APM 설치

날개 2017. 11. 3. 15:50



이제 지난 시간에 생성했던 Amazon Linux 인스턴스에 APM(Apache + PHP + MySQL)을 설치합니다.


아마존 리눅스에 APM을 설치하는 방법은 아마존 문서에 잘 설명되어 있으므로 그대로 따라하면 됩니다.


해당 내용은 LAMP 웹서버 설치에 잘 설명되어 있습니다.



그럼 그 내용에 따라 APM을 설치해 보겠습니다. 참고로 저는 이 글 시리즈에 필요한 부분만 적용하도록 하겠습니다.




1. 설치된 소프트웨어 패키지 전체 업데이트


아마존 리눅스 (Amazon Linux)는 CentOS에 기반한 것으로 알려 졌습니다. CentOS는 RedHat의 유사 배포본이기 때문에 yum 업데이트를 사용 할 수 있습니다.


아마존 리눅스에 설치된 소프트웨어 배포본들을 최신 업데이트로 유지하기 위해 터미널에서 아래와 같이 입력하여 업데이트를 진행합니다.



$ sudo yum update -y





2. APM 설치


yum 을 이용하여 Apache 서버, PHP 7, MySQL 5.6과 연결 소프트웨어등을 설치합니다. 아래와 같이 터미널에 입력하면 한번에 설치 할 수 있습니다.


$ sudo yum install -y httpd24 php70 mysql57-server php70-mysqlnd php70-gd


(이 글을 쓰는 시점 mysql 은 아마존 문서에 있는 5.6 (mysql56-server) 버전으로 설치시 mysql 데몬 실행이 실패하는 문제가 있어 실행이 잘 되는 5.7 버전을 설치했습니다.)


3. Apache 서버 실행 및 자동 실행 설정


(1) 아파치 실행 및 자동 실행 설정


터미널에서 아래와 같은 명령으로 아파치 서버를 실행합니다.


$ sudo service httpd start


이 글을 보시는 분들은 대부분 아실것이라 생각하지만, 참고로 위 명령에서 start 파라미터는 아파치 웹서버 실행, stop 은 정지, restart 는 재실행입니다.


이제 서버 인스턴스가 재부팅 할때마다 자동으로 아파치 서버가 실행 되도록 아래의 명령을 터미널에 입력합니다.


$ sudo chkconfig httpd on


자, 이제 아파치 서버가 잘 작동하는지 확인합시다.


웹브라우저를 띄우고 지난 글에서 확인했던 서버 인스턴스의 아이피를 웹브라우저 주소창에 입력하고 [엔터]키를 누릅니다.




이렇게 테스트 페이지가 잘 나오면 성공입니다. 이 화면이 나오지 않으면 위에서 부터 차근차근 다시 확인해 봅니다.





(2) 아파치 웹 디렉터리 권한 설정


아마존 리눅스에 아파치를 설치하면 기본으로 /var/www 디렉터리를 웹으로 접속했을때 찾을 웹 디렉터리로 사용합니다.

그 중 웹 도큐먼트 루트는 아파치 설정 파일을 보아야 확인 할 수 있는데, 보통 /var/www 이거나 /var/www/html 입니다. 제 경우는 /var/www/html 으로 되어 있네요.


지금 상태에서 웹 디렉터리는 소유자와 소유 그룹이 root로 되어 있습니다. 따라서 사용자 계정으로는 파일을 업로드 할 수가 없습니다. 특히 SFTP 로 파일 올릴때 문제가 됩니다.


그러면 어떻게 해야 할까요? 사용자 계정을 루트 그룹에 포함시키는 방법도 있지만, 보안상 취약해 질 수 있습니다. 

다른 방법은 사용자 계정을 apache 그룹 멤버로 포함시키고, 웹 디렉터리의 소유자와 그룹을 사용자와 apache 그룹으로 바꾸면, 사용자 계정으로도 웹 디렉터리에 파일을 쓰거나 올릴 수 있겠죠. 


그러면 후자의 방법을 사용해 보겠습니다.



1) 현재 사용자를 apache 그룹 구성원으로 추가


지금부터 현재 사용자 계정을 ec2-user 라고 가정하겠습니다.


먼저 현재 사용자 계정이 속한 그룹을 확인해 봅니다.


$ groups


groups 명령어는 현재 로그인된 사용자가 어느 그룹에 속해 있는지 확인합니다.


ec2-user와 wheel 그룹에 속해있고, apache 그룹에는 속해있지 않네요.


그러면, 사용자 ec2-user 를 apache 그룹 멤버로 추가해 봅시다.


$ sudo usermod -a -G apache <추가할 사용자>


예를 들어 유저 이름이 ec2-user 이면 (이제부터 사용자 계정이 ec2-user 라고 가정하겠습니다.),


sudo usermod -a -G apache ec2-user


라고 입력합니다. 이제 다시 groups 명령어로 ec2-user가 어디에 소속되어 있는지 확인해 봅시다.


아직도 apache 그룹에 속해 있지 않네요? 


로그아웃 후 다시 접속해 봅니다.


$ logout


터미널로 ssh 재접속 합니다.


다시 groups 명령어를 입력합니다.



이번에는 ec2-user 가 apache 그룹에 속한것을 알 수 있습니다.


이제 웹 디렉터리(하위 디렉터리 포함)의 소유 그룹과 소유자를 바꾸어 보겠습니다.




2) 웹 디렉터리 및 하위 디렉터리의 소유 그룹과 소유자 변경


웹 문서 루트 디렉터리의 소유자를 확인해 볼까요?


$ cd /var

$ ls -l


그룹과 소유자가 모두 root 입니다.


이제 소유 그룹을 apache로 소유자를 ec2-user로 바꾸겠습니다.


$ sudo chown -R ec2-user:apache /var/www


다시 ls -l 명령어로 소유그룹과 소유자를 확인합니다.


apache 그룹에 ec2-user 유저로 소유자가 바뀌었습니다.



이제 웹 디렉터리와 파일들의 권한을 바꿀텐데, AWS 문서에서 안내하는 설정으로 바꿔 보겠습니다. (예전에는 이 작업까지는 안해주고 필요에 따라 해당 디렉터리나 파일만 권한을 바꿔가면서 작업했는데, 이번에는 아마존에서 알려 주는 방법 그대로 바꿔 보겠습니다.)


먼저 /var/www 디렉터리 (웹 도큐먼트 루트)와 하위 디렉터리의 권한을 변경합니다.


$ sudo chmod 2775 /var/www

$ find /var/www -type d -exec sudo chmod 2775 {} \;


윗줄은 /var/www 디렉터리의 권한을 2775로 바꾼 것이고, 다음 줄은 하위 디렉터리를 검색하며 파일을 제외한 디렉터리만 똑같이 2775 권한으로 변경합니다.


참고로 기존의 권한은 drwxr-xr-x 이었지만, drwxrwsr-x 으로 변경되었습니다.




이제 /var/www 이하 모든 파일들(디렉터리 제외)의 권한을 664로 변경합니다.


$ find /var/www -type f -exec sudo chmod 0664 {} \;


이제 /var/www 디렉터리 이하 모든 파일들의 권한이 -rw-rw-r-- 으로 바뀌었습니다.





4. PHP 동작 확인


이제 PHP가 제대로 설치 되었는지 확인해 봅니다.


웹 문서 루트 디렉터리에 PHP 테스트용 파일을 만듭니다. 웹 문서 루트 디렉터리는 /etc/httpd/conf/httpd.conf 파일의 DocumentRoot 부분을 살펴 보아야 합니다. 제 경우는 "/var/www/html"가 도큐먼트 루트라고 되어 있네요.


저는 vi 를 사용하여 test.php 파일을 만들었습니다.


여기에서는 /var/www/html가 도큐먼트 루트이므로, 이 디렉터리에 test.php가 있어야 합니다.


test.php 파일의 내용은 아래와 같습니다.


<?php

phpinfo(); 

?>


웹브라우저에서 주소창에 서버 인스턴스의 퍼블릭 IP와 test.php를 읽도록 입력합니다.


예를 들어 서버 IP가 123.123.12.12 이면 웹브라우저 주소창에,


123.123.12.12/test.php


라고 입력합니다. 아래와 비슷하게 결과가 나와야 합니다.


확인 했으면 test.php 파일을 삭제 합니다.





5. MySQL 설정


이제 MySQL 을 작동 시켜 보고 설정을 바꾸겠습니다.


먼저 MySQL을 실행합니다.



$ sudo service mysqld start



보안 설정을 합니다. (이때 mysql 루트 암호를 활성화 합니다.)


$ sudo mysql_secure_installation


제대로 설정되었는지 설정한 패스워드를 이용하여 mysql 에 접속해 봅니다.


$ mysql -u root -p


mysql> 명령어 입력줄에서 'exit'를 입력해 빠져 나옵니다.


다시 터미널에서 MySQL이 시스템이 부팅할 때 자동으로 실행되도록 설정합니다.


$ sudo chkconfig mysqld on




여기까지 아마존 리눅스에 APM 을 설치해 보았습니다.


다음 글에서는 MySQL의 인코딩을 4바이트 지원 UTF-8로 바꾸어 봅니다.




(C) 2017 WingsNote.com (무단 복제 및 게시 금지, 링크 허용)