aws 에 워드프레스 구축하기
이번에는 AWS(Amazon Webb Service) 환경에
WordPress 프레임워크를 구축하여
본인만의 웹사이트를 만들어보도록 하겠습니다.
본래 웹서버 구축, 그 위에 워드프레스 설치하는 수업은
일반 PC에 vmware 와 리눅스를 설치하고 실습하는게 정석입니다.
문제는 웹사이트 환경 구축은 수업만 잘 따라오면 금방하는데
그 이후에 각자가 자기만의 홈페이지를 꾸미고 포트폴리오로 찍어내는데
시간이 좀 걸린다는 겁니다.
근데 학교 PC에서는 하드보안관이 좀 번거로워서...
최신 트렌드에 맞춰서 aws 환경도 접할 겸 aws 에 구축하도록 하겠습니다.
아마존의 최고 장점은 매뉴얼이 잘 되어 있다는 것입니다.
그 얘기는 여러분들이 리눅스 기초 활용을 배웠고
뭔가 만들어야겠다 싶어서 aws 를 기웃거린다면
아마존 문서 정도는 이해하고 스스로 따라할 수 있어야 된다는 겁니다.
이번 수업도 아마존 공식 매뉴얼을 기반으로 진행해보도록 하겠습니다.
※ aws 가 익숙하지 않고 매우 생소하다면 아래 글들을 먼저 둘러보길 바랍니다.
- aws 개요
- 윈도우 인스턴스 생성 실습
- 리눅스 인스턴스 생성 실습
aws 콘솔에 로그인 후 리눅스 인스턴스를 생성해줍니다.
OS 종류는 aws 환경에서 범용으로 사용되는 Amazon Linux 면 적합할 것 같습니다.
t2.micro 스펙이면 충분합니다.
키페어는 필수로 지정해야 합니다.
본인만의 키페어를 생성해주세요.
키페어는 ec2 생성시 한번만 발급되는 비밀키 파일입니다.
분실하면 다음에 해당 인스턴스에 접속할 수 없습니다.
이제 네트워크 설정을 해줘야 합니다.
시큐리티그룹(보안그룹) 을 새로 생성하거나
기존에 생성한 보안그룹을 활용해도 됩니다.
http 와 https 는 미리 열어두면 좋겠지만
그러면 수업 때 할 내용이 없어지니까
지금은 ssh 만 허용해놓고 추후에 오픈하겠습니다.
네트워크 설정의 편집버튼을 누르면 VPC 상세 설정이 나옵니다.
(네트워크 상세 설정을 안하고 인스턴스 생성을 하려고 해면 결국 이 설정영역으로 돌아옵니다.)
현재 상태에서는 VPC 가 존재하지 않아서 별도로 하나 생성해줘야합니다.
VPC 가 존재한다면 기존 것을 가져다 쓰면 되겠죠?
VPC 를 생성후 다시 네트워크 설정으로 돌아와서
생성된 VPC, 서브넷 정보를 반영해줍니다.
퍼블릭 IP 자동 할당도 활성화 해줍니다.
스토리지는 기본 8GB 면 충분합니다.
고급 세부 정보는 건드리지 말고 "인스턴스 시작" 버튼을 눌러
amazon linux 인스턴스를 생성합니다.
인스턴스가 잘 생성되었습니다.
해당 인스턴스의 연결탭으로 들어오면
아마존 웹콘솔을 통한 연결과 키페어를 이용한 ssh 연결 방법을 제공해줍니다.
아마존 웹콘솔의 경우 키페어가 필요없긴 하지만
저는 윈도우 터미널을 통한 ssh 연결로 진행하겠습니다.
id, pw 를 묻지 않고 바로 접속되는건 키페어 방식 덕분에
아마존 리눅스 EC2 에 ssh 로 접속했습니다.
물론 추가로 내 계정에 passwd 설정하는 것도 가능합니다.
이제 root 의 권한을 부여받은 ec2-user 로
아마존 wordpress 구축 매뉴얼을 참고해서 진행해보겠습니다.
https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/hosting-wordpress-aml-2023.html
매뉴얼에서 제시한 대로 dnf 명령을 활용하여 wget, php-mysqlnd, httpd 등을 인스톨 하려했는데
root 권한이 없어서 에러가 발생합니다.
커맨드 앞부분에 sudo 를 붙여서 다시 실행하니 잘 동작합니다.
매뉴얼이 잘 되어있다고 아무것도 이해못한 채 복붙만하면 안됩니다.
매뉴얼에서 제시한 dnf 가 어떤 명령어인지는 스스로 궁금증을 가지고 찾아봐야 합니다.
https://visit-my.blog/2023/02/12/linux-dnf-%EB%AA%85%EB%A0%B9%EC%96%B4/
이제 wget 을 사용해서 최신 wordpress 설치 패키지를 다운로드 합시다.
방금 wget 으로 다운 받은 latest.tar.gz 의 압축을 풀어주니
wordpress 폴더가 생성되어 있습니다.
해당 폴더는 관리자용 웹페이지가 구현되어 있는 워드프레스 설치 파일입니다.
이제 database 를 추가로 설치해서 웹서버와 연동하면
웹페이지 구성 및 새로 작성되는 글의 정보들은 db 에 저장되고
db 에 저장된 정보를 불러와서 게시글로 나타낼 수 있게 되는 겁니다.
systemctl 커맨드를 사용해서 mariadb 와 httpd 를 start 시켰습니다.
systemctl status 로 확인해보니 잘 동작 중이네요.
mysql 에 별도 패스워드를 설정해준 적 없기 때문에
패스워드란에는 그냥 엔터만 입력해도 로그인 됩니다.
물론 root 권한을 부여해서 sudo 로 진행해야 합니다.
일단 접속이 되는 걸 확인했으면 quit 로 빠져나옵니다.
mysql 용 root 암호를 설정해야겠습니다.
linux 의 root 와 mysql 의 root 는 서로 다른 계정입니다. 헤깔리지 마세요.
다음 문서를 참고해서 진행합니다.
다시 mysql 에 접속하려면 방금 설정한 db용 password 를 입력해야 합니다.
db 에 접속한 상태에서 sql 문법으로 wordpress-user 사용자와
각자의 사용자 패스워드를 입력해줍니다.
db 를 생성하고 확인할 수 있습니다.
매뉴얼에 제시된 나머지 작업을 수행해줍니다.
wordpress 폴더로 이동해서
wp-config-sample.php 파일을 wp-config.php 로 복사해줍니다.
그리고 vim 에디터로 config 설정을 편집해줍니다.
DB_NAME, DB_USER, DB_PASSWORD를
본인 설정에 맞는 값으로 변경해줘야 합니다.
wordpress 의 키생성 사이트에 방문해서 랜덤 키값을 생성하고 내 설정 파일에 복붙합니다.
그리고 :wq 를 입력하고 vim 에디터를 빠져나옵니다.
우리는 앞서 dnf 커맨드로 웹서버 httpd 를 설치했고
systemctl status httpd 로 웹서버가 동작중인 것도 확인했습니다.
/var/www/html 은 httpd 웹서버의 웹루트 디렉토리인데 게시할 웹문서는 아직 없습니다.
여기에 wordpress 폴더를 통째로 복사합니다.
(sudo 를 안붙이면 permission denied 에러 발생합니다)
추가 설정을 반영합니다.
/var/www/html 디렉토리 하위 속성 AllowOverride 값을 All로 수정합니다.
amazon linux 2023 에 php 그래픽 그리기 라이브러리를 설치해줍니다.
설치가 잘 된것을 확인했습니다.
이제 apahce 웹루트디렉토리에 wordpress 가 새 파일 등을 생성할 수 있도록 쓰기권한을 부여해주고
하위 파일과 디렉토리의 소유권을 구분해서 변경해줍니다.
/var/www/ 밑으로 파일속성이 일괄변경된 것이 확인됩니다.
서비스를 재시작하고 상태를 확인합니다.
파일퍼미션 2775 에서 특수 퍼미션 2 의 기능이 궁금하면 아래를 참고하세요
https://eunguru.tistory.com/115
이제 설정이 거의 막바지입니다.
httpd 와 mariadb 가 OS 재시작시 자동 실행되도록 enable 설정을 적용합니다.
mariadb 가 잘 동작 중인지도 확인합니다.
이제 내 인스턴스의 ip 로 웹접속을 시도하면 wordpress 를 이용할 수 있습니다.
제 인스턴스의 퍼블릭 ip는 13.124.211.139 네요
이 ip 는 ec2 재기동시 변경될 수 있는데 고정 ip를 할당하려면
추가 비용이 발생하기 때문에 eip 는 다루지 않겠습니다.
※ 사실 추가비용보다도 계정별로 사용가능한 고정ip 는 리전당 5개로 제한되어 있습니다.
매뉴얼대로 설정을 마치고 웹 접속을 했는데 연결이 안됩니다.
왜 그럴까요?
처음에 ec2 인스턴스 생성시 http, https 에 대한 연결을 허용하지 않았기 때문입니다.
내 인스턴스에 적용되어 있는 보안그룹에 들어갑니다.
외부에서 인스턴스로 접속하는 인바운드 규칙에 ssh (tcp 22) 만 허용되어 있는 것이 보입니다.
여기에 http(tcp 80), https(tcp 443) 을 추가해야 합니다.
규칙 편집을 눌러주세요
http, https 프로토콜을 추가하고 어디서나 접속할 수 있도록
소스는 anywhere(0.0.0.0) 으로 등록합니다.
보안그룹을 변경하고 다시 접속을 하니 워드프레스 설정 페이지가 잘 열립니다.
한국어 설정을 적용하고 본인만의 홈페이지를 만들어보세요