AWS에 WordPress 설치하기

WordPress를 AWS EC2와 RDS를 이용해 설치한다.
설치는 우리나라와 네트웍 트래픽이 가장 빠른 도쿄(Tokyo) 지역으로 한다.

1. 설치를 위한 URL
EC2 인스턴스 생성 https://ap-northeast-1.console.aws.amazon.com/ec2/v2/home
RDS-MySQL 인스턴스 생성 https://ap-northeast-1.console.aws.amazon.com/rds/home

RDS를 따로 설치하는 이유는?
=> 프리티어 서버 성능이 낮기 때문에 DB 부담을 덜어주려는 것과
서버 스토리지 30GB 외에 DB 용량 20GB를 버는 효과가 있기 때문임

무료 사용을 위한 용량 제한
프리티어 사용안내 https://aws.amazon.com/ko/free/

  • EC2 : t2.micro 인스턴스 사용하여 월별 750시간까지
  • EBS : 스토리지 용량을 말하며, 30GB까지
  • RDS : MySQL 버전으로 20GB까지
  • S3 : 5GB로 업로드 월 2천건, 다운로드 월 2만건까지
  • CloudFront : CDS 역활을 하는 배포 서버, 트래픽 50GB까지

설치 순서 초간단 안내

  1. EC2 인스턴스 생성
    – t2.micro 장비와 Amazon Linux, 그리고 30GB 스토리지
  2. RDS에서 MySQL 인스턴스 생성
    – wordpress용 database와 user(+권한) 생성
  3. EC2 장비 초기 설정
    – yum 업데이트, hostname 변경 등
  4. EC2 장비에 Apache, PHP Support 설치
    – MySQL Client도 설치
  5. wordpress 패키지 다운로드 및 복사, 권한 설정
    – 위치: /var/www/html
    – 설정: $wordpress_home/wp_config.php 에 DB 접속정보 변경
  6. wordpress 실행 (index.php)
    – 이후 설치안내에 따라 진행하면 완료

2. 설치 과정

2-1. EC2 인스턴스 생성
1) Amazon Linux 선택
AWS01-아마존리눅스선택
2) t2.micro 선택
AWS02-t2서버선택
3) 스토리지 설정
AWS04-스토리지30G선택

2-2. RDS-MySQL 생성
1) MySQL 선택
2) 프리티어 버전 선택: 프로비저닝이 보장되는 걸 원하냐? ==> ‘No’
RDS02-프리티어선택
3) DB 인스턴스 설정
 : db.t2.micro와 20GB 용량 (고가용성 Multi-AZ는 ‘No’), 계정 설정 RDS03-타입용량선택
4) DB 설정: VPS 보안설정을 DB용으로 선택, DB 이름 설정RDS04-DB설정

2-3. 서버 접속 및 설정
1) 서버 접속: ssh

# 다운받은 pem 파일의 권한을 변경하고
chmod 400 example-svr.pem

# EC2 서버 속성정보에서 (공개IP) Elastic IP를 확인한 후
54.65.97.911

# 터미널을 이용해 ssh 접속
ssh -i example-svr.pem ec2-user@54.65.97.911

2) 서버 초기 업데이트

sudo yum -y update

3) 호스트명 변경 : IP로 표기되는 것이 (헷갈려서) 싫다면 설정해 두는 것이 좋다

# 호스트명 변경
$ sudo vi /etc/sysconfig/network
...
NETWORKING=yes
#HOSTNAME=localhost.localdomain  <== 주석처리
HOSTNAME=example-svr
...

# (옵션) hosts 에 서버명 설정하려면 하시고
$ sudo vi /etc/hosts
 
# 리부트 : 네트웍 서비스 재시작 해봤지만 안통한다
$ sudo reboot

# 리부트 이후 재접속하여 호스트명 확인 (/etc/hostname)
$ hostname
example-svr

2-4. 서버에 Apache, Php, MySQL 설치

# 아파치 웹서비스와 PHP 설치
$ sudo yum groupinstall -y "Web Server" "PHP Support"

# MySQL 클라이언트와 php-mysql 플러그인 설치
$ sudo yum install -y mysql php-mysql

# 아파치 서비스 실행
$ sudo service httpd start

# 서버 시동후 자동 실행 설정
$ sudo chkconfig httpd on

2-5. MySQL 데이터베이스 변경 및 wpuser 계정 생성
* RDS 생성시 설정한 계정은 admin 이므로 wp_user용 계정을 따로 만든다
* DB 접속 주소는 RDS 인스턴스 속성 정보에 end-point 항목으로 나온다

$ mysql -h <db접속주소> -u <admin계정> -p
... <= 암호 입력

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| innodb             |
| mysql              |
| performance_schema |
| <생성한db>             |

# 데이터베이스 문자셋 설정을 변경
mysql> alter database <db명> character set utf8 collate utf8_unicode_ci;
Query OK, 1 row affected (0.01 sec)

# 사용자 생성
mysql> create user 'wpuser'@'%' identified by 'wpuserpwd';
Query OK, 0 rows affected (0.01 sec)

# 사용자에 대해 db의 권한 부여
mysql> grant all on <db명>.* to 'wpuser'@'%';
Query OK, 0 rows affected (0.01 sec)

# 권한 변경을 즉시 반영
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> exit
Bye

# 생성한 계정으로 접속을 확인
$ mysql -h <접속주소> -u wpuser -p
... <= 암호 입력: wpuserpwd

# 권한이 부여된 데이터베이스만 보인다. wp 설치전이라 비어 있음
mysql> show databases;
mysql> use <db명>;
mysql> show tables;

2-6. wordpress 다운로드 및 복사, 설정

$ mkdir downloads; cd downloads

# 워드프레스 최신 버전을 받고 압축 해제
$ wget https://wordpress.org/latest.tar.gz
$ tar -xzf latest.tar.gz

# 워드프레스 설정파일을 샘플로부터 생성 
$ cd wordpress; cp wp-config-sample.php wp-config.php

# DB 접속 정보를 설정: 한글을 위해 utf8_unicode_ci 설정
$ vi wp-config.php
###########################
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'db_name');

/** MySQL database username */
define('DB_USER', 'db_user');

/** MySQL database password */
define('DB_PASSWORD', 'db_passwd');

/** MySQL hostname */
/* define('DB_HOST', '<RDS의 end-point 주소>'); */
define('DB_HOST', 'localhost');

/** Database Charset to use in creating database tables. */
define('DB_CHARSET', 'utf8');

/** The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', 'utf8_unicode_ci');
###########################

# 워드프레스의 모든 파일을 웹디렉토리 root(/)로 이동
$ sudo mv * /var/www/html/

# 웹서비스를 위한 계정 그룹과 계정을 생성 (형식적이긴 하지만 필수다)
$ sudo groupadd www
$ sudo usermod -a -G www ec2-user
$ sudo usermod -a -G www apache

# 생성된 그룹을 반영시키기 위해 로그아웃 후 다시 로그인 한다; group으로 확인
$ exit
...
$ groups
ec2-user wheel www

# 웹디렉토리의 모든 파일의 권한을 apache 계정으로 변경
$ sudo chown -R apache.www /var/www

# 디렉토리와 파일의 권한도 변경
$ find /var/www -type d -exec sudo chmod 2775 {} +
$ find /var/www -type f -exec sudo chmod 0664 {} +

# 웹서비스를 다시 시작
$ sudo service httpd restart

3. 워드프레스 기본 설정
1) 미디어 설정에서 이미지 사이즈를 조정 (업로드시, 글쓰기시에 반영됨)
– 아이폰6 해상도 기준으로 설정함 (1334 x 750)WPC01-미디어사이즈설정

 

2) 미디어 업로드 용량 확장 설정하기
– 기본 설치시 2M 용량 제한으로 미디어(사진&동영상 등) 파일을 올리도록 되어 있다.
이를 100M까지 업로드 가능하도록 설정하려면
“/etc/php.ini” 파일의 다음 항목들을 설정하여야 한다. (값만 바꾸면 된다)

memory_limit = 100M
upload_max_filesize = 192M
post_max_size = 100M
file_uploads = On

 

9. 참고문서

<LAMP 설치>
* http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-LAMP.html

<워드프레스 설치>
* http://blog.juyeong.net/2014/02/23/aws%EC%97%90-%EC%9B%8C%EB%93%9C%ED%94%84%EB%A0%88%EC%8A%A4-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0/
* http://www.creativeworksofknowledge.com/2014/08/12/aws-wordpress-installation/

 

  1. 정리 잘해 놓으셨네요..

    좋아하기

    응답

  2. 좋은 글에서 많이 배우고 갑니다. 감사합니다!!

    좋아하기

    응답

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중

%d 블로거가 이것을 좋아합니다: