불친절한 블로그

[AWS][WordPress] AWS EC2에 Wordpress + mysql + apache 구성하기 본문

Project/회사 홈페이지 구축

[AWS][WordPress] AWS EC2에 Wordpress + mysql + apache 구성하기

오누! 2021. 1. 14. 15:04
반응형

웹페이지를 처음부터 만들려면 준비되어야 할게 너무 많지만

AWS를 이용하면 보다 수월하게 만들 수 있고,

관리도 해주기 때문에 많은 유저들이 이용하고 있다.

다만, 약간의 비용이 든다는 점을 알고 있자.

 

AWS EC2를 이용해서 WordPress를 구성해보려고 한다.

먼저 AWS에 접속해서 EC2에서 인스턴스를 생성한다.

 

사용할 OS는 Amazon Linux 2 AMI를 사용 할 것이다.

 

많은 인스턴스 유형이 있는데, 그중에 t2.small를 선택해서 만든다.

 

키 페어 설정을 해준다.

내용에 작성되어 있듯이 인스턴스에 안전하게 접속할 수 있도록

개인적인 키를 발급받는 작업이다.

 

생성된 인스턴스를 확인하고,

인스턴스에 접속하기 위해서 연결버튼을 눌러 접속을 시도한다.

 

접속하게 되면 브라우저 창에 커맨드 창이 뜬다.

 

EC2 접속까지 과정은 여기까지 이다.

이제부터 WordPress를 세팅하기 위한 작업을 진행한다.

 

먼저 모든 소프트웨어 패키지를 최신 상태로 업데이트한다.

-y 옵션은 확인 여부를 묻지 않고 업데이트를 설치한다는 옵션이다.

뭔가 멋있게 자동으로 주루룩 문자들이 지나간다.

$ sudo yum update -y

 

lamp-mariadb10.2-php7.2 및 php7.2 Amazon Linux Extras 리포지토리를 설치해서

Amazon Linux 2용 LAMP MariaDB 및 PHP 패키지의 최신 버전을 가져온다.

$ sudo amazon-linux-extras install -y lamp-mariadb10.2-php7.2 php7.2

 

업데이트가 완료되었으면 Apache 웹 서버, MariaDB, PHP 소프트웨어를 설치한다.

$ sudo yum install -y httpd mariadb-server

 

Apache 웹 서버를 시작하는 명령어와 매번 시스템 부팅때마다 자동으로 시작되도록 설정한다.

is-enabled 명령어는 상태값이 enabled 인지 확인하기 위해 사용된다.

$ sudo systemctl start httpd
$ sudo systemctl enable httpd
$ sudo systemctl is-enabled httpd

 

Apache 서버를 열어놨으니 외부에서 접속할 수 있도록

인스턴스에 대해 인바운드 HTTP(포트 80) 연결을 허용하는 보안 규칙을 설정해준다.

AWS 페이지에 접속해서 해당 인스턴스의 보안 탭에서 인바운드 규칙을 설정해준다.

 

퍼블릭 IP로 브라우저를 띄워보면 Apache test page가 뜨면 정상적으로 작업이 완료된 것이다.

ec2-user 계정에서 Apache 파일을 조작할 수 있게 하려면 권한을 변경해줘야 한다.

해보자.

ec2-user를 apache 그룹에 추가 해준다.

변경한 내용을 적용시키기 위해 로그아웃(exit) 후 다시 로그인(터미널 창 새로 열기) 한다.

$ sudo usermod -a -G apache ec2-user
$ exit

 

apache 그룹 멤버십을 확인하는 groups 명령어를 사용한다.

또한 권한설정을 한다.

$ groups
$ sudo chown -R ec2-user:apache /var/www
$ sudo chown 2775 /var/www && find /var/www -type d -exec sudo chmod 2775 {} \;
$ find /var/www -type f -exec sudo chmod 0664 {} \;

 

이제 LAMP 서버 테스트를 해본다.

Apache 문서 루트에서 PHP 파일을 생성한다.

$ echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php

 

이후 주소창에 나의 퍼블릭 DNS 주소에 phpinfo.php를 입력해서 확인한다.

이미지와 같이 페이지가 출력되면 성공이다.

http://"my public dns address"/phpinfo.php

 

이제 데이터베이스 서버 보안 설정을 한다.

먼저 MariaDB 서버를 시작하고, mysql_secure_installation을 실행한다.

$ sudo systemctl start mariadb
$ sudo mysql_secure_installation

 

지금부터 WordPress를 설치할거다.

 

wget 명령을 사용해서 WordPress 설치 패키지를 다운로드 한다.

$ wget https://wordpress.org/latest.tar.gz

 

설치 패키지를 압축/아카이빙 해제한다.

$ tar -xzf latest.tar.gz

 

데이터베이스 서버를 시작한다.

$ sudo systemctl start mariadb

 

데이터베이스에 root로 로그인 한다.

$ mysql -u root -p

 

mysql에서 사용자 및 암호를 생성한다.

> CREATE USER 'username'@'localhost' IDENTIFIED BY 'your_strong_password';

이후 데이터베이스를 생성해준다.

> create database 'database-name';

 

데이터베이스에 대한 전체 권한을 사용자에게 부여한다.

> GRANT ALL PRIVILEGES ON 'database-name'.* TO "username"@"localhost";

 

데이터베이스 권한을 새로고침(flush)해서 모든 변경사항이 적용되도록 한다.

이후 mysql을 종료한다.

> flush privileges;
> exit

 

wp-config.php 파일 생성 및 편집 방법을 본다.

우선 wp-config-sample.php 파일을 wp-config.php 파일에 복사한다.

이를 통해 새 구성 파일을 생성하고 원본 샘플 파일을 이전 상태 그대로 백업해 보존할 수 있다.

$ cp wordpress/wp-config-sample.php wordpress/wp-config.php

 

wp-config.php 파일을 텍스트 편집기로 연다.

define에 앞서 설정한 데이터베이스 정보를 넣어준다.

그리고 Authentication Unique Keys and Salts 세션에 키값은

 https://api.wordpress.org/secret-key/1.1/salt/

무작위로 키값을 생성해서 wp-config.php에 넣어준다.

$ nano wordpress/wp-config.php

 

WordPress가 올바로 작동하려면 Apache.htaccess 파일을 사용해야 하지만 Amazon Linux에서는 기본적으로

이 파일을 사용할 수 없다. 따라서 Apache 문서 루트에서 모든 재정의를 허용해야 한다.

 

httpd.conf 파일에서 <Directory"/var/www/html"> 세션에 AllowOverride를 None에서 All로 변경해준다.

$ sudo vim /etc/httpd/conf/httpd.conf

 

이제 주소창에 퍼블릭 IP를 넣어서 접속하면 WordPress Welcome 페이지가 뜬다.

반응형
Comments