블로그로 돌아가기

Ansible을 사용하여 Ubuntu 20.04에 LAMP 설치 및 구성하기

Ansible을 사용하여 Ubuntu 20.04에 LAMP 설치 및 구성하기

서버 자동화는 효과적이고 기술 집약적인 방식으로 서버를 관리하고 모니터링하는 안전하고 신뢰할 수 있는 프로세스입니다. 전담 전문가 팀이 제어하는 데이터 센터에서 서버를 관리하는 기존 방식과 달리, 모든 서버는 자동화를 사용하여 관리됩니다. 그 결과, 인적 오류가 최소화됩니다.

다음과 같은 구성 관리 도구인 Ansible, Puppet, Terraform 등은 일반적으로 서버를 자동화하는 데 사용됩니다. 이러한 도구는 수동으로 작업할 때 발생할 수 있는 잠재적인 오류를 제거하는 동시에 새 서버에 대한 표준 절차를 수립하여 자동화로 서버를 설정합니다.

Ansible는 강력한 오픈 소스 프로젝트입니다. 유연하고 사용하기 쉬우며 가장 단순화된 아키텍처를 가지고 있습니다. Ansible 플레이북을 사용하는 데 코딩 배경 지식이 필요하지 않으며 노드에 소프트웨어를 설치할 필요도 없습니다. 무엇보다도 스크립트를 작성하고 자동화를 간소화할 수 있는 뛰어난 기능이 가득합니다.

이 가이드에서는 Ansible을 사용하여 Ubuntu 20.04에 LAMP를 설치하고 구성하는 단계를 안내합니다.

사전 요구 사항

이 튜토리얼을 따라 하려면 다음이 필요합니다.

Ansible 플레이북의 목적은 무엇인가요?

이 Ansible 플레이북은 다음 가이드에 설명된 절차를 실행하는 대체 방법입니다: LAMP 스택 설정 Linux Apache MySQL PHP.

Ansible 플레이북을 실행하면 Ansible 호스트에서 다음과 같은 작업이 수행됩니다.

  • 다음 설치: aptitude (다음의 대안: apt 패키지 관리자, Ansible에서 선호함).

  • 필요한 모든 LAMP 패키지를 설치합니다.

  • 새로운 Apache VirtualHost를 생성하고 전용 문서 루트(document root)를 구성합니다.

  • 설정: 켜짐(ON) (새로운 VirtualHost).

  • 설정: 꺼짐(OFF) (기본 Apache 웹사이트, 즉 disable_default 변수를 true로 설정).

  • MySQL root 사용자의 비밀번호를 선택합니다.

  • 익명 MySQL 계정 및 테스트 데이터베이스를 제거합니다.

  • 구성된 포트에서 HTTP 트래픽을 허용하도록 UFW를 설정합니다. 기본값은 80.

  • PHP 테스트 스크립트를 설정합니다.

Ansible 플레이북 실행이 완료되면 설정한 구성에 따라 Apache 위에서 실행되는 웹 PHP 환경을 볼 수 있습니다.

Ansible 플레이북 활용하기

먼저, 다음에서 LAMP 플레이북 및 해당 종속성을 가져옵니다: do-community/ansible-playbooks 저장소. 다음으로, LAMP 플레이북이 포함된 저장소를 Ansible 제어 노드 내부의 로컬 폴더로 복제(clone)합니다.

다음 명령을 실행합니다: git pull 명령을 실행하여 이 튜토리얼에서 사용할 올바른 콘텐츠에 액세스할 수 있는지 확인합니다.

만약 다음 저장소를 처음 사용하는 경우, do-community/ansible-playbooks 저장소를 처음 사용하는 것이라면, 홈 폴더로 저장소를 복제하는 것을 고려해 보세요:

다음 폴더로 이동하면 lamp_ubuntu2004 폴더 구조를 볼 수 있습니다:

이 파일들이 의미하는 바에 대한 개요는 다음과 같습니다:

  • files/info.php.j2: 웹 서버의 루트에 PHP 테스트 페이지를 설정할 수 있는 템플릿 파일입니다.

  • files/apache.conf.j2: Apache VirtualHost를 설정하는 데 사용되는 또 다른 템플릿 파일입니다.

  • vars/default.yml: 플레이북 설정을 사용자 정의하기 위한 변수 파일입니다.

  • playbook.yml: 이 파일에는 원격 서버에서 실행할 작업(task)의 모든 내용이 포함되어 있습니다.

  • readme.md: 이 플레이북에 대한 정보를 포함하는 읽기 파일입니다.

플레이북의 변수 파일을 변경하여 MySQL 및 Apache 구성을 사용자 정의해 보겠습니다. 다음으로 이동합니다. lamp_ubuntu2004 디렉터리로 이동하여 다음 파일을 엽니다. vars/default.yml 파일을 다음 편집기로 엽니다. nano 편집기:

다음 파일을 열면 vars/default.yml 파일에 수정해야 할 변수 목록이 있습니다:

각 변수에 대해 자세히 알아보겠습니다:

  • mysql_root_password: root MySQL 계정의 비밀번호를 저장합니다.

  • app_user: 애플리케이션 파일의 소유자 역할을 하는 Ansible 호스트의 원격 비-root 사용자입니다.

  • http_host: 도메인 이름을 표시합니다.

  • http_conf: Apache 내에 생성된 구성 파일의 이름을 표시합니다.

  • http_port: 이 가상 호스트의 HTTP 포트이며, 80이(가) 기본값입니다.

  • disable_default: Apache와 함께 제공되는 기본 옵션을 취소하는 데 사용됩니다.

그런 다음, 다음 파일을 저장하고 닫습니다. vars/default.yml 파일.

모든 설정이 완료되면 서버에서 이 플레이북을 실행할 준비가 된 것입니다. 기본적으로 플레이북의 대부분의 서버는 인벤토리의 모든 서버에서 실행되도록 구성되어 있습니다. 다음 플래그를 사용해 보겠습니다. -l 플래그를 사용하면 플레이북의 영향을 받는 단일 서버 또는 선택한 그룹 하위 집합에만 영향을 미칠 수 있습니다. 또는 다음 플래그를 사용할 수도 있습니다. -u 플래그를 사용하면 어떤 원격 서버가 연결되고 원격 호스트에서 실행 중인지 자세히 볼 수 있습니다.

하나의 서버에서 플레이북을 실행해 보겠습니다. server1 그리고 다음 사용자로 연결합니다. justin:

다음과 유사한 출력이 표시됩니다:

플레이북 실행이 완료되면 웹 브라우저로 이동하여 서버의 호스트에 액세스합니다. 끝에 다음을 추가하는 것을 잊지 마세요. /info.php (IP 끝에):

이 URL을 클릭하면 다음과 같은 페이지가 표시됩니다:

경고: 표시된 페이지에는 PHP 환경에 대한 민감한 정보가 포함되어 있습니다. 따라서 다음 명령어를 사용하여 서버에서 개인 정보를 제거하는 것이 좋습니다.

rm -f /var/www/info.php

플레이북에는 무엇이 있나요?

다음으로, ansible-플레이북 콘텐츠에 사용된 파일들의 의미와 중요성을 알아보겠습니다:

  • vars/default.yml

The default.yml 변수 파일에는 MySQL root 계정의 도메인 이름과 비밀번호가 포함되어 있습니다. 이 값들은 ansible-플레이북 작업에서 사용되는 기본값입니다:

  • files/apache.conf.j2

The apache.conf.j2 파일은 새로운 Apache VirtualHost를 구성하는 데 사용되는 Jinja 2 템플릿 파일입니다. 이 템플릿 내에서 사용되는 변수는 vars/default.yml 변수 파일에 정의되어야 합니다:

  • files/info.php.j2

Similar to files/apache.conf.j2와 유사하게, info.php.j2 파일 역시 Jinja 템플릿입니다. 이 파일을 사용하여 새로 구성된 LAMP 서버의 문서 루트에 테스트 PHP 스크립트를 설정합니다:

  • playbook.yml

The 플레이북.yml 파일은 이 설정의 모든 작업이 정의되는 곳입니다. 이 파일에서 모든 LAMP 스택이 구성됩니다. 대상 서버 그룹을 정의하는 것으로 시작하며, all로 설정됩니다. 또한, become 값을 true ( become: true)로 취하고, 실행해야 할 모든 작업을 정의합니다. 다음으로, yaml 파일에는 구성 옵션을 로드하기 위한 기본 파일인 vars/default.yml 변수 파일이 있습니다:

프로젝트의 필요와 요구 사항에 따라 이 파일들을 수정할 수 있습니다.

결론

이 튜토리얼에서는 Ansible을 사용하여 원격 서버에 LAMP를 설치하고 설정하는 단계를 살펴보았습니다. 실험해 볼 수 있는 다른 많은 사용자 정의 옵션이 있습니다. 예를 들어, Ansible 공식 문서를 사용하고, Ansible 모듈의 mysql_user 사례를 사용하는 것은 실력을 향상시키는 훌륭한 방법입니다. 또한, 이 가이드에서 설명한 단계를 따라 다른 구성 관리 도구와 OS를 사용하여 자동화를 연습함으로써 난이도를 높여보세요.

LAMP 스택을 처음 접하고 이 주제에 대해 깊이 알아보고 싶으신가요? 저희 블로그:

즐거운 컴퓨팅 되세요!

author

Hark Labs

작성자 · CloudSigma

Preslav Dobrev는 CloudSigma의 크리에이티브 디자이너로서, 전통적이고 혁신적인 마케팅 채널을 활용하여 일관된 비즈니스 정체성을 구축하는 데 중점을 두고 있습니다. 그는 영향력 있는 브랜드 내러티브를 창출하기 위해 예술적 비전과 전략적 마케팅을 결합하는 데 능숙합니다.

댓글

아직 댓글이 없습니다. 첫 번째로 작성해 보세요.