Amazon LinuxLAMP 웹 서버 설치

Amazon LinuxLAMP 웹 서버 설치 개요

다음 절차를 통해 Amazon Linux 인스턴스에서 PHP 및 MySQL 지원을 포함하는 Apache 웹 서버를 설치할 수 있습니다. 이 웹 서버는 LAMP 웹 서버 또는 LAMP 스택이라고 불리기도 합니다. 이 서버를 사용해서 고정 웹사이트를 호스팅하거나 데이터베이스에서 정보를 읽고 쓰는 동적 PHP 애플리케이션을 배포할 수 있습니다.

사전 요구사항

본 자습서는 사용자가 인터넷에서 접근할 수 있는 퍼블릭 DNS 이름을 가진 인스턴스를 이미 실행한 것으로 가정하고 있습니다. 자세한 내용은, 1단계: 인스턴스 시작섹션을 참조하십시오. 보안 그룹이 SSH(포트 22), HTTP(포트 80), HTTPS(포트 443) 연결을 허용할 수 있도록 구성되어야 합니다. 이 사전 요구사항에 대한 자세한 내용은 Amazon EC2로 설정을 참조하십시오.

Important

이 절차는 Amazon Linux에서 사용하기 위한 것입니다. 기타 배포에 대한 자세한 내용은 해당 배포의 특정 문서를 참조하십시오. LAMP 웹 서버를 Ubuntu 인스턴스에서 설치하려는 경우는 본 자습서를 이용할 수 없습니다. Ubuntu의 LAMP 웹 서버에 대한 자세한 내용은 Ubuntu 커뮤니티 문서 ApacheMySQLPHP 섹션을 참조하십시오.

Amazon Linux에서 LAMP 웹 서버 설치 및 시작

  1. 인스턴스에 연결합니다.

  2. 모든 소프트웨어 패키지가 최신 상태로 업데이트되어 있는지 확인하기 위해, 인스턴스에서 퀵 소프트웨어 업데이트를 실행합니다. 이 업데이트 과정은 몇 분 정도 시간이 소요될 수 있지만, 최신 보안 업데이트와 버그 수정을 위해 수행할 필요가 있습니다.

    Note

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

    [ec2-user ~]$ sudo yum update -y
  3. 이제 인스턴스가 최신 상태이므로 Apache 웹 서버, MySQL, PHP 소프트웨어 패키지를 설치할 수 있습니다. yum install 명령을 사용하여 여러 소프트웨어 패키지와 모든 관련 종속 프로그램을 동시에 설치합니다.

    [ec2-user ~]$ sudo yum install -y httpd24 php56 mysql55-server php56-mysqlnd
  4. Apache 웹 서버를 시작합니다.

    [ec2-user ~]$ sudo service httpd start
    Starting httpd:                                            [  OK  ]
  5. [chkconfig] 명령을 사용해서 Apache 웹 서버가 매번 시스템이 부팅할 때마다 시작되도록 합니다.

    [ec2-user ~]$ sudo chkconfig httpd on

    Tip

    [chkconfig] 명령은 성공적으로 서비스를 활성화했을 경우에는 아무런 확인 메시지를 표시하지 않습니다. 다음 명령을 실행해서 [httpd]가 실행되고 있는지 확인할 수 있습니다.

    [ec2-user ~]$ chkconfig --list httpd
    httpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off

    여기서 [httpd]는 2, 3, 4, 5의 실행 레벨(사용자가 보기 원하는 부분)에서 on 상태입니다.

  6. 웹 서버를 테스트합니다. 웹 브라우저에서 인스턴스의 퍼블릭 DNS 주소 또는 퍼블릭 IP 주소를 입력합니다. 이 경우 Apache 테스트 페이지를 볼 수 있어야 합니다. 사용자의 인스턴스에 대한 퍼블릭 DNS를 Amazon EC2 콘솔을 사용해서 얻을 수 있습니다(Public DNS 열 확인. 이 열이 숨겨진 경우는 Show/Hide 아이콘을 클릭하고 Public DNS를 선택).

    Tip

    Apache 테스트 페이지를 볼 수 없는 경우, 사용하는 보안 그룹이 HTTP(포트 80) 트래픽을 허용하는 규칙을 포함하고 있는지 확인하십시오. HTTP 규칙을 보안 그룹에 추가하는 것에 대한 자세한 내용은 보안 그룹에 규칙 추가을 참조하십시오.

    Important

    Amazon Linux을 사용하지 않는 경우, 상기 연결을 허용하기 위해 인스턴스에서 방화벽을 구성할 필요가 있습니다. 방화벽 구성 방법에 대한 자세한 내용은 사용자의 특정 배포에 대한 문서를 참조하십시오.

     

    Note
    테스트 페이지는 /var/www/html에 아무 콘텐츠가 없는 경우에만 표시됩니다. 문서 루트에 콘텐츠를 추가하면 이 콘텐츠는 테스트 페이지 대신 인스턴스의 퍼블릭 DNS 주소에 나타납니다.

    Apache httpd는 'Acache document root'라는 디렉터리에 보관된 파일을 처리합니다. Amazon Linux Apache document root는 /var/www/html이며, 이는 기본적으로 root가 소유권을 가지고 있습니다.

    [ec2-user ~]$ ls -l /var/www
    total 16
    drwxr-xr-x 2 root root 4096 Jul 12 01:00 cgi-bin
    drwxr-xr-x 3 root root 4096 Aug  7 00:02 error
    drwxr-xr-x 2 root root 4096 Jan  6  2012 html
    drwxr-xr-x 3 root root 4096 Aug  7 00:02 icons
    

    ec2-user가 상기 디렉터리 내 파일을 조작할 수 있도록 하려면 디렉터리의 소유권과 권한을 변경해야 합니다. 이 작업을 수행할 수 있는 방법은 여러 가지가 있습니다. 본 자습서에서는 www 그룹을 인스턴스에 추가하고 해당 그룹에 대해 /var/www 디렉터리의 소유권을 부여하고 쓰기 권한을 추가하게 됩니다. 해당 그룹의 모든 멤버는 웹 서버에 대해서 파일의 추가, 삭제, 수정을 할 수 있습니다.

    파일 권한 설정

    1. www 그룹을 인스턴스에 추가합니다.

      [ec2-user ~]$ sudo groupadd www
    2. 사용자(이 경우는 ec2-user)를 www 그룹에 추가합니다.

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

      Important

      로그아웃을 하고 다시 로그인해서 새 그룹을 선택해야 합니다. [exit] 명령을 사용하거나 터미널 창을 닫을 수 있습니다.

    3. 로그아웃을 하고 다시 로그인한 다음, www 그룹에 대한 멤버십을 확인하십시오.

      1. 로그아웃을 합니다.

        [ec2-user ~]$ exit
      2. 인스턴스에 다시 연결한 다음, 다음 명령을 실행해서 www 그룹에 대한 멤버십을 확인하십시오.

        [ec2-user ~]$ groups
        ec2-user wheel www
    4. /var/www 및 그 콘텐츠의 그룹 소유권을 www 그룹으로 변경합니다.

      [ec2-user ~]$ sudo chown -R root:www /var/www
    5. /var/www 및 그 하위 디렉터리의 디렉터리 권한을 변경해서 그룹 쓰기 권한을 추가하고 미래 하위 디렉터리에서 그룹 ID를 설정합니다.

      [ec2-user ~]$ sudo chmod 2775 /var/www
      [ec2-user ~]$ find /var/www -type d -exec sudo chmod 2775 {} \;
    6. /var/www 및 그 하위 디렉터리의 파일 권한을 계속 변경해서 그룹 쓰기 권한을 추가합니다.

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

    이제 ec2-userwww 그룹의 향후 멤버는 Apache document root에서 파일의 추가, 삭제, 수정을 할 수 있습니다. 이제, 정적 웹사이트 또는 PHP 애플리케이션 등 콘텐츠를 추가할 수 있습니다.

    LAMP 웹 서버 테스트

    서버가 설치되고 실행되고 있으며 파일 권한이 올바르게 설정된 경우라면, 사용자의 ec2-user 계정을 통해 인터넷에서 사용 가능한 /var/www/html 디렉터리에서 간단한 PHP 파일을 생성할 수 있어야 합니다.

    1. Apache 문서 루트에서 간단한 PHP 파일을 생성합니다.

      [ec2-user ~]$ echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php

      Tip

      이 명령을 실행하는 동안 "Permission denied" 오류가 발생하면, 로그아웃하고 다시 로그인한 다음, 파일 권한 설정에서 구성한 적절한 그룹 권한을 선택합니다.

    2. 웹 브라우저에서는 방금 생성한 파일의 URL을 입력합니다. 이 URL은 인스턴스의 퍼블릭 DNS 주소에 슬래시(/)와 파일명이 추가된 형태입니다. 예:

      http://my.public.dns.amazonaws.com/phpinfo.php

      사용자는 이 PHP 정보 페이지를 볼 수 있어야 합니다.

    phpinfo

    Note
    이 페이지가 보이지 않을 경우 이전 단계에서 /var/www/html/phpinfo.php 파일이 제대로 생성되었는지 확인하십시오. 또한 다음 명령을 사용해 필요한 패키지가 모두 설치되었는지 확인할 수 있습니다(이 예제 출력에서 두 번째 열의 패키지 버전은 일치할 필요가 없음).
    [ec2-user ~]$ sudo yum list installed httpd24 php56 mysql55-server php56-mysqlnd
    Loaded plugins: priorities, update-motd, upgrade-helper
    959 packages excluded due to repository priority protections
    Installed Packages
    httpd24.x86_64                          2.4.16-1.62.amzn1                    @amzn-main
    mysql55-server.x86_64                   5.5.45-1.9.amzn1                     @amzn-main
    php56.x86_64                            5.6.13-1.118.amzn1                   @amzn-main
    php56-mysqlnd.x86_64                    5.6.13-1.118.amzn1                   @amzn-main
    출력에서 필요한 패키지가 하나라도 나열되지 않으면, sudo yum install package 명령을 사용해서 패키지를 설치합니다.

    phpinfo.php 파일을 삭제합니다. 이 파일은 사용자에게 유용한 정보를 포함하고 있지만 보안상 이유로 인터넷에 공개되어서는 안 됩니다.

    [ec2-user ~]$ rm /var/www/html/phpinfo.php
    • MySQL 서버 보안 유지

    MySQL 서버의 기본 설치는 테스트 및 개발 기능에 유용한 여러 기능을 포함하고 있지만, 이 기능들은 프로덕션 서버에서는 비활성화되거나 제거되어야 합니다. [mysql_secure_installation] 명령을 통해 루트 암호를 설정하고 설치 패키지에서 보안성이 낮은 기능을 제거하는 과정을 수행할 수 있습니다. MySQL 서버를 사용할 계획이 없더라도 이 절차를 수행하는 것이 도움이 될 수 있습니다.

    1. MySQL 서버를 시작합니다.

      [ec2-user ~]$ sudo service mysqld start
      Initializing MySQL database:  Installing MySQL system tables...
      OK
      Filling help tables...
      OK
      
      To start mysqld at boot time you have to copy
      support-files/mysql.server to the right place for your system
      
      PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
      ...
      
      Starting mysqld:                                           [  OK  ]
      
    2. mysql_secure_installation을 실행합니다.

      [ec2-user ~]$ sudo mysql_secure_installation
      1. 요청을 받으면 root 계정에 대한 암호를 입력합니다.

        1. 현재 root 암호를 입력합니다. 기본적으로 root 계정은 암호 세트를 가지고 있지 않으므로 Enter를 누릅니다.

        2. Y를 눌러서 암호 설정 모드로 들어간 다음, 안전한 암호를 두 번 입력합니다. 안전한 암호 생성에 대한 자세한 내용은 http://www.pctools.com/guides/password/을 참조하십시오. 이 암호를 안전한 장소에 보관하시기 바랍니다.

      2. Y를 눌러서 익명 사용자 계정을 제거합니다.

      3. Y를 눌러서 원격 root 로그인을 비활성화합니다.

      4. Y를 눌러서 테스트 데이터베이스를 제거합니다.

      5. Y를 눌러서 권한 테이블을 다시 로드하고 변경사항을 저장합니다.

    3. (옵션) 지금 바로 사용할 계획이 없는 경우라면 MySQL 서버를 중단시킵니다. 필요할 때 서브를 다시 시작할 수 있습니다.

      [ec2-user ~]$ sudo service mysqld stop
      Stopping mysqld:                                           [  OK  ]
    4. (옵션) MySQL 서버가 매번 부팅할 때마다 시작되도록 하려면 다음 명령을 입력합니다.

      [ec2-user ~]$ sudo chkconfig mysqld on

    이제 LAMP 웹 서버가 완전히 동작하는 상태가 됩니다. /var/www/html의 Apache document root에 콘텐츠를 추가하면 인스턴스에 대한 퍼블릭 DNS 주소에서 그 콘텐츠를 볼 수 있습니다.

    (선택 사항) phpMyAdmin 설치

    phpMyAdmin은 EC2 인스턴스의 MySQL 데이터베이스를 보고 편집하는 데 사용할 수 있는 웹 기반 데이터베이스 관리 도구입니다. Amazon Linux 인스턴스에서 phpMyAdmin을 설치 및 구성하려면 다음 단계를 따르십시오.

    1. 인스턴스의 Fedora 프로젝트로부터 EPEL(Extra Packages for Enterprise Linux) 리포지토리를 활성화합니다.

      [ec2-user ~]$ sudo yum-config-manager --enable epel
    2. phpMyAdmin 패키지를 설치합니다.

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

      Note

      메시지가 표시되면 [y]로 답변하여 EPEL 리포지토리용 GPG 키를 가져옵니다.

    3. 로컬 시스템으로부터 액세스를 허용하도록 phpMyAdmin 설치를 구성합니다. 기본적으로, phpMyAdmin은 현재 실행되고 있는 서버로부터의 액세스만 허용하지만, Amazon Linux는 웹 브라우저를 포함하지 않으므로 이 구성은 그다지 유용하지 않습니다.

      1. whatismyip.com과 같은 서비스를 방문하여 로컬 IP 주소를 확인합니다.

      2. /etc/httpd/conf.d/phpMyAdmin.conf 파일을 편집하여 다음 명령을 사용해 서버 IP 주소(127.0.0.1)를 로컬 IP 주소로 대체합니다. 즉, your_ip_address를 이전 단계에서 확인한 로컬 IP 주소로 바꿉니다.

        [ec2-user ~]$ sudo sed -i -e 's/127.0.0.1/your_ip_address/g' /etc/httpd/conf.d/phpMyAdmin.conf
    4. Apache 웹 서버를 재시작해서 새 구성을 가져옵니다.

      [ec2-user ~]$ sudo service httpd restart
      Stopping httpd:                                            [  OK  ]
      Starting httpd:                                            [  OK  ]
    5. 웹 브라우저에서는 phpMyAdmin 설치의 URL을 입력합니다. 이 URL은 인스턴스의 퍼블릭 DNS 주소에 슬래시(/) 및 phpmyadmin이 추가된 형태입니다. 예:

      http://my.public.dns.amazonaws.com/phpmyadmin

      사용자는 phpMyAdmin 로그인 페이지를 볼 수 있어야 합니다.

     

    Note
    403 Forbidden 오류가 반환되는 경우, /etc/httpd/conf.d/phpMyAdmin.conf 파일에서 올바른 IP 주소를 설정했는지 확인하십시오. 다음 명령을 사용해 Apache 액세스 로그에서 Apache 서버가 실제로 어느 IP 주소로부터 요청을 수신하고 있는지 확인할 수 있습니다.
    [ec2-user ~]$ sudo tail -n 1 /var/log/httpd/access_log | awk '{ print $1 }'
    205.251.233.48
    여기에 반환된 IP 주소를 사용해 Step 3.b를 반복하고 이전에 입력한 잘못된 주소를 여기에 반환된 주소로 바꿉니다(예:
    [ec2-user ~]$ sudo sed -i -e 's/previous_ip_address/205.251.233.48/g' /etc/httpd/conf.d/phpMyAdmin.conf
    ).
    • IP 주소를 바꾼 다음 Step 4를 사용하여 httpd 서비스를 다시 시작합니다.
    • 앞서 만든 root 사용자이름/MySQL 루트 암호로 phpMyAdmin 설치에 로그인합니다. phpMyAdmin 사용에 대한 자세한 내용과 도움말은 phpMyAdmin 사용 설명서를 참조하십시오.

    • 관련 주제

    파일을 인스턴스에 전송하거나 웹 서버에 WordPress 블로그를 설치하는 것에 대한 자세한 다용은 다음 주제를 참고하십시오.

    이 주제에서 사용되는 명령과 소프트웨어에 대한 자세한 내용은 다음 웹 페이지를 확인해 보십시오.

    웹 서버에 대한 도메인 이름을 등록하거나 기존 도메인 이름을 현재 호스트로 이전하는 것에 대한 자세한 내용은 Amazon Route 53 개발자 안내서Creating and Migrating Domains and Subdomains to Amazon Route 53(Amazon Route 53에서 도메인 및 하위 도메인 생성 및 마이그레이션)을 참조하십시오.

     

     

     

youngdeok's picture

Language

Get in touch with us

"If you would thoroughly know anything, teach it to other."
- Tryon Edwards -