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까지
설치 순서 초간단 안내
- EC2 인스턴스 생성
– t2.micro 장비와 Amazon Linux, 그리고 30GB 스토리지 - RDS에서 MySQL 인스턴스 생성
– wordpress용 database와 user(+권한) 생성 - EC2 장비 초기 설정
– yum 업데이트, hostname 변경 등 - EC2 장비에 Apache, PHP Support 설치
– MySQL Client도 설치 - wordpress 패키지 다운로드 및 복사, 권한 설정
– 위치: /var/www/html
– 설정: $wordpress_home/wp_config.php 에 DB 접속정보 변경 - wordpress 실행 (index.php)
– 이후 설치안내에 따라 진행하면 완료
2. 설치 과정
2-1. EC2 인스턴스 생성
1) Amazon Linux 선택
2) t2.micro 선택
3) 스토리지 설정
2-2. RDS-MySQL 생성
1) MySQL 선택
2) 프리티어 버전 선택: 프로비저닝이 보장되는 걸 원하냐? ==> ‘No’
3) DB 인스턴스 설정 : db.t2.micro와 20GB 용량 (고가용성 Multi-AZ는 ‘No’), 계정 설정
4) DB 설정: VPS 보안설정을 DB용으로 선택, 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)
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/
정리 잘해 놓으셨네요..
좋아요좋아요
좋은 글에서 많이 배우고 갑니다. 감사합니다!!
좋아요좋아요