Amazon Linux 2에 LAP 웹 서버 설치

안녕하세요 여러분. 벌써 웹 서버 게시글 세 번째 시간이군요. 벌써라고 했지만 사실 예정보다 글 작성 시간이 늦어지고 있습니다. 제가 게을러서 그런 것 같습니다. 허허. 추석 연휴인 만큼 열심히 작성하도록 하겠습니다!

LAMP란 무엇일까?


게시글 제목에는 LAP라고 적었지만 많이 사용하는 용어는 LAMP입니다. Linux | Apache | Mysql, MariaDB | PHP, Perl, Python의 약자입니다. 리눅스 운영체제, 아파치 웹 서버, 데이터베이스 서버와 같이 웹 사이트나 서버 운영에 자주 쓰이는 소프트웨어들의 약자이며 웹 서버를 구성하기 위한 최소한의 요소를 LAMP라고 합니다.

저희가 제작한 EC2 인스턴스는 Amazon Linux 2이므로 리눅스 운영체제 컴퓨터는 이미 소유하고 있는 것입니다. 이 글에서 저희는 아파치와 파이썬을 설치할 것입니다. 저는 파이썬으로 커뮤니티 사이트를 제작할 예정이기 때문입니다. Mysql, MariaDB 같은 DB는 아직까진 필요 없으니 나중에 설치하도록 하겠습니다.

아파치는 설치한 컴퓨터를 웹 서버로 만들어주는 역할을 합니다. 외부에서 랜선을 타고 HTTP 프로토콜을 이용한 호출 신호가 들어오면 아파치 설정에 따라 웹 페이지를 전송해주는 일을 주로 하는 프로그램입니다.

원래 PHP를 사용할 계획이었으나 파이썬을 한 번도 써본 적이 없기 때문에 이번 기회에 사용해보기로 했습니다. 사실 파이썬을 사용하는 대단한 이유는 아니에요.

인스턴스에 Apache, Python 설치하기


이전 글을 참고하여 인스턴스에 연결합니다.

[ec2-user ~]$ sudo yum update -y

모든 소프트웨어 패키지가 최신 상태로 업데이트 되어 있는지 확인하기 위해, 인스턴스에서 퀵 소프트웨어 업데이트를 실행합니다.

-y 옵션을 사용하면 확인 여부를 묻지 않고 업데이트를 설치합니다. 설치 전에 업데이트 정보를 확인하려면 -y 옵션을 생략합시다.

[ec2-user ~]$ sudo yum install httpd

yum을 이용해서 Apache를 설치합니다. Apache 패키지 명은 httpd 이며 위 명령으로 httpd 패키지를 설치합시다.

#아파치 설치 여부 확인
[ec2-user ~]$ yum list installed | grep httpd

#아파치 설치된 위치 확인
[ec2-user ~]$ whereis httpd

위 명령어를 사용하여 아파치가 호스트에 설치되었는지 그리고 위치를 확인할 수 있습니다.

[ec2-user ~]$ sudo yum install python3 -y

yum 패키지를 활용하여 python3.x를 설치합니다.

#파이썬3 설치 여부 확인
[ec2-user ~]$ yum list installed | grep python3

#파이썬3 설치된 위치 확인
[ec2-user ~]$ whereis python3

아파치를 확인했던 것처럼 파이썬도 비슷한 명령어로 설치 여부와 설치된 위치를 확인할 수 있습니다.

#아파치 웹 서버 시작
[ec2-user ~]$ sudo systemctl start httpd

#httpd가 실행되고 있는지 확인
[ec2-user ~]$ sudo systemctl is-enabled httpd

#시스템이 부팅할 때마다 시작
[ec2-user ~]$ sudo systemctl enable httpd

아파치 웹 서버를 시작합니다. 시작하고 나서 다음 명령어로 httpd가 실행되고 있는지 확인합시다. 정상적으로 실행되고 있다면 enabled가 출력됩니다.

위 과정들을 끝마치면 웹 서버를 테스트 할 수 있습니다. 크롬이나 엣지같은 웹 브라우저에서 인스턴스의 공용 DNS 주소(또는 공용 IP 주소)를 입력합시다.

아파치가 설치된 인스턴스는 사용자가 직접 아파치 설정 파일을 수정하지 않았으면 아파치 서버가 브라우저상에서 인식할 데이터가 저장되는 디렉터리는 /var/www/html입니다. 이 디렉터리에 데이터가 없으면 아파치 테스트 페이지가 표시됩니다.

파일 권한 설정


ec2-user 계정에서 /var/www 디렉터리의 파일을 조작할 수 있게 하려면 디렉터리의 소유권과 권한을 변경해야 합니다. ec2-user을 아파치 그룹에 추가하여 아파치 그룹에 /var/www 디렉터리의 소유권을 부여하고 쓰기 권한을 할당해봅시다.

[ec2-user ~]$ sudo usermod -a -G apache ec2-user

사용자를 아파치 그룹에 추가합니다.

exit 같은 명령어를 사용하여 인스턴스 연결을 끊은 다음 다시 연결합니다. 그 후에 밑의 명령어를 사용하여 apache 그룹의 멤버십을 확인합니다.

[ec2-user ~]$ groups
ec2-user adm wheel apache systemd-journal

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

/var/www 및 그 데이터의 그룹 소유권을 아파치 그룹으로 변경합니다.

[ec2-user ~]$ sudo chmod 2775 /var/www && find /var/www -type d -exec sudo chmod 2775 {} \;

그룹 쓰기 권한을 추가하여 나중에 하위 디렉터리에 대한 그룹 ID를 설정하려면 /var/www와 그 하위 디렉터리의 디렉터리 권한을 변경합니다.

[ec2-user ~]$ find /var/www -type f -exec sudo chmod 0664 {} \;

그룹 쓰기 권한을 추가하려면 /var/www 및 그 하위 디렉터리의 파일 권한을 반복하여 변경합니다.

이제 ec2-user와 아파치 그룹의 향후 멤버는 Apache document root에서 파일 추가, 삭제, 편집을 할 수 있고 이를 통해 사용자는 정적 웹 사이트 또는 동적 애플리케이션과 같은 데이터를 추가할 수 있습니다.

수고하셨습니다! 다음 글에서는 Amazon Linux 2 서버에 고정 IP와 도메인을 연결하는 방법에 대해 알아봅시다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다