41/120

미니프로젝트 진행 및 README 작성

AWS WordPress 설계 및 구현

프로젝트 과정

VPC 생성

VPC 마법사 시작

VPC 설정

가용영역 지정

퍼블릭 서브넷 수 지정

프라이빗 서브넷 수 지정

NAT 게이트웨이 수 지정

VPC 엔드포인트 설정

DNS 옵션

VPC 미리보기

VPC 생성

보안 그룹 생성

sg_bastion

기본 세부 정보 설정

인바운드 규칙

아웃바운드 규칙

기본설정 사용

태그

기본설정 사용

sg_web

기본 세부 정보

인바운드 규칙

아웃바운드 규칙

기본설정 사용

태그

기본설정 사용

sg_db

기본 세부 정보

인바운드 규칙

아웃바운드 규칙

기본설정 사용

태그

기본설정 사용

sg_web

기본 세부 정보

인바운드 규칙

아웃바운드 규칙

기본설정 사용

태그

기본설정 사용

sg_ELB

기본 세부 정보

인바운드 규칙

아웃바운드 규칙

기본설정 사용

태그

기본설정 사용

bastion_host 구축

인스턴스 생성

AMI 선택

인스턴스 유형 선택

인스턴스 세부 정보 구성
네트워크 설정

스토리지 추가

기본 설정 사용

태그 추가

기본 설정 사용

보안 그룹 구성

검토 및 시작

설저사항 검토

키 페어 생성

bastion_host 접속

생성한 키가 있는 윈도우 폴더> ssh -i .\키 파일 ec2-user@bastion의 퍼블릭 IP
Last login: Fri Apr  8 10:28:19 2022 from *

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
14 package(s) needed for security, out of 17 available
Run "sudo yum update" to apply all updates.

Web Server 구축

인스턴스 생성

AMI 선택

인스턴스 유형 선택

인스턴스 세부 정보 구성
네트워크 설정

스토리지 추가

기본 설정 사용

태그 추가

기본 설정 사용

보안 그룹 구성

검토 및 시작

설저사항 검토

기존 키 페어 선택

Web Server 접속

bastion 접속
생성한 키가 있는 윈도우 폴더> ssh -i .\키 파일 ec2-user@bastion의 퍼블릭 IP
Last login: Fri Apr  8 10:28:19 2022 from *

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
14 package(s) needed for security, out of 17 available
Run "sudo yum update" to apply all updates.
키 페어 복사
[ec2-user@bastion ~]$ vi .ssh/key
[ec2-user@bastion ~]$ chmod 400 .ssh/key
[ec2-user@bastion ~]$ ssh -i .ssh/key ec2-user@web server의 프라이빗 IP
Last login: Fri Apr  8 10:32:18 2022 from bastion

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
14 package(s) needed for security, out of 17 available
Run "sudo yum update" to apply all updates.
[ec2-user@webserver ~]$

Mariadb 설치

[ec2-user@webserver ~]$ sudo yum -y install mariadb-server

APACHE(httpd) 설치

[ec2-user@webserver ~]$ sudo yum -y install httpd

Apache 활성화

[ec2-user@webserver ~]$ sudo systemctl start httpd
[ec2-user@webserver ~]$ sudo systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

php 설치

[ec2-user@webserver ~]$ sudo amazon-linux-extras install -y lamp-mariadb10.2-php7.2 php7.2

wordpress 다운

wordpress 설치 패키지 다운
[ec2-user@webserver ~]$ wget https://wordpress.org/latest.tar.gz
압축해제
[ec2-user@webserver ~]$ tar -xzf latest.tar.gz
[ec2-user@webserver ~]$ ls wordpress/
index.php             wp-includes
license.txt           wp-links-opml.php
readme.html           wp-load.php
wp-activate.php       wp-login.php
wp-admin              wp-mail.php
wp-blog-header.php    wp-settings.php
wp-comments-post.php  wp-signup.php
wp-config-sample.php  wp-trackback.php
wp-content            xmlrpc.php
wp-cron.php

wordpress 구성

wordpress 설정 파일 편집
샘플 복사
[ec2-user@webserver ~]$ cp wordpress/wp-config-sample.php wordpress/wp-config.php
편집
[ec2-user@webserver ~]$ vim wordpress/wp-config.php
...
// ** Database settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'wordpress-db' );

/** Database username */
define( 'DB_USER', 'wordpress-user' );

/** Database password */
define( 'DB_PASSWORD', '데이터베이스 비밀번호' );

/** Database hostname */
define( 'DB_HOST', 'RDS의 엔드포인트' );
...

Apache 설정

wordpress 설정 파일 이동
[ec2-user@webserver ~]$ sudo cp -r wordpress/* /var/www/html/
Apache 문서 루트에서 모든 재정의 허용 및 php 연동
[ec2-user@webserver ~]$ sudo vim /etc/httpd/conf/httpd.conf
<Directory "/var/www/html">
    ...
    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride All

    #
    # Controls who can get stuff from this server.
    #
    Require all granted
</Directory>
...
#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
    DirectoryIndex index.php
</IfModule>
파일 권한 수정
/var/www/ 소유권을 Apache 사용자에게 허용
[ec2-user@webserver ~]$ sudo chown -R apache /var/www
/var/www 및 하위 그룹 소유권을 apache에게 허용
[ec2-user@webserver ~]$ sudo chgrp -R apache /var/www
/var/www 그룹 쓰기 권한추가
[ec2-user@webserver ~]$ sudo chmod 2775 /var/www
[ec2-user@webserver ~]$ find /var/www -type d -exec sudo chmod 2775 {} \;
[ec2-user@webserver ~]$ find /var/www -type f -exec sudo chmod 0664 {} \;
Apache 재시작하여 새 그룹 및 권한 가져오기
[ec2-user@webserver ~]$ sudo systemctl restart httpd

RDS를 이용한 데이터베이스 구축

서브넷 그룹 생성

서브넷 그룹 세부 정보 설정

서브넷 추가

생성완료

데이터베이스 생성

데이터베이스 생성 방식 선택

엔진 옵션 선택

템플릿 선택

가용성 및 내구성

기타 설정

DB 인스턴스 클래스 선택

스토리지 선택

연결설정

퍼블릭 액세스

보안 그룹 설정

가용 영역 설정

데이터베이스 인증 방식 설정

추가 구성

기본 설정 사용

생성 완료

Web Server에서 접속

[ec2-user@webserver ~]$ mysql -u admin -p -h RDS의 엔드포인트
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 18
Server version: 8.0.27 Source distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]>

WordPress 사용자 생성

MySQL [(none)]> CREATE USER 'wordpress-user'@'10.0.%' IDENTIFIED BY '비밀번호';
Query OK, 0 rows affected (0.00 sec)
MySQL [mysql]> select host,user from user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| %         | admin            |
| 10.0.%    | wordpress-user   |
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
| localhost | rdsadmin         |
+-----------+------------------+
7 rows in set (0.00 sec)

wordpress 데이터베이스 생성

MySQL [(none)]> CREATE DATABASE `wordpress-db`;
Query OK, 1 row affected (0.01 sec)
MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| wordpress-db       |
+--------------------+
5 rows in set (0.00 sec)

WordPress 사용자에게 권한 부여

MySQL [(none)]> GRANT ALL PRIVILEGES ON `wordpress-db`.* TO "wordpress-user"@"10.0.%";
Query OK, 0 rows affected (0.01 sec)

MySQL [mysql]> SHOW GRANTS FOR 'wordpress-user'@'10.0.%';
+-----------------------------------------------------------------------+
| Grants for wordpress-user@10.0.%
              |
+-----------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `wordpress-user`@`10.0.%`
              |
| GRANT ALL PRIVILEGES ON `wordpress-db`.* TO `wordpress-user`@`10.0.%` |
+-----------------------------------------------------------------------+
2 rows in set (0.01 sec)

데이터베이스 권한 새로고침

MySQL [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

ELB 구축

대상 그룹 생성

그룹화 대상 종류 선택

이름 지정 및 VPC 설정

Health checks

타겟 등록


대상그룹 생성

로드밸런서 생성

로드밸런서 유형 지정

기본 설정

네트워크 연결
VPC 지정

서브넷 지정

보안그룹 지정

리스너 지정

로드밸런서 생성

로드밸런서의 DNS 이름으로 웹 접속

Auto Scaling

Web Server Auto Scaling

Web Server 인스턴스 이미지 생성

이름 지정 및 설정

이미지 생성

시작 템플릿 생성

이름 지정

AMI 지정

인스턴스 유형 지정

키 페어 지정

네트워크 설정

네트워크 인터페이스 구성

스토리지 구성

시작 템플릿 생성

Auto Scaling 그룹 생성

시작 템플릿 구성 및 구성 선택

네트워크 지정

로드밸런서 연결

상태확인 설정

그룹 크기 설정

자동 조정 설정

태그 설정

인스턴스 추가 된 모습 확인

bastion Auto Scaling

bastion 인스턴스 이미지 생성

이름 지정 및 설정

이미지 생성

시작 템플릿 생성

이름 지정

AMI 지정

인스턴스 유형 지정

키 페어 지정

네트워크 설정

스토리지 구성

시작 템플릿 생성

Auto Scaling 그룹 생성

시작 템플릿 구성 및 구성 선택

네트워크 지정

로드밸런서 연결

상태확인 설정

그룹 크기 설정

자동 조정 설정

태그 설정

프로젝트 결과

wordpress 접속

언어설정

사용자 생성

로그인

메인페이지

ken의 wordpress 접속

참고문헌

아마존 리눅스에서 워드프레스 설치

좋은 웹페이지 즐겨찾기