- AWS Elastic IP 적용하여 http 외부접속 가능하게 Nginx, php, mysql 설치
- RDS로 데이터베이스 (MySQL) 생성 후 외부(DataGrip, Workbench 등)에서 접속가능하게 만들기
- domain 연결 (가비아, 후이즈 등)
- https 적용(Let's Encrypt)
1) AWS EC2 인스턴스 생성
인스턴스 생성 - OS 선택 (Ubuntu Server 22.04)
네트워크 설정 - 인바운드 규칙 추가 (ssh)
키 페어 생성
2) winSCP 설치
winSCP 설치 및 사이트 생성 후 로그인
3) nginx 설치
$ sudo apt update
$ sudo apt install nginx
PuTTY 창에서 nginx 설치
HTTP 인바운드 규칙 추가
서버 IP 주소로 접속 - nginx 설치 확인
4) mySQL 설치
$ sudo apt install mysql-server
mysql 설치 확인
5) php 설치
$ sudo apt install php-fpm php-mysql
nginx의 경우, apache와는 다르게 따로 php-fpm을 설치하고 연동시키는 과정이 필요
php-fpm은 웹서버와 외부 프로그램의 상호작용을 도와주는 프로토콜로 php-fpm을 이용하면 동적인 웹 페이지 구현 가능
/var/www/html 경로에 index.php 파일 생성
$ sudo vi /etc/nginx/sites-available/default
php 모듈 주석 해제
$ sudo service nginx restart
트러블 슈팅
서버 IP 주소/index.php 접속 시 502 Bad Gateway 에러 발생
[문제 원인]
ubuntu 22.04 LTS는 php 8.1 버전을 사용하지만 7.4 버전으로 입력이 되어 있었기 때문에 에러 발생
[해결 방안]
/etc/nginx/sites-available/default
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
으로 수정
[참고 자료]
https://ggotji.tistory.com/61
서버 IP 주소/index.php 접속 (외부 접속)
1) AWS RDS MySQL 생성
RDS 대시보드 - 데이터베이스 생성
2) 보안 규칙 수정하기
DB 인스턴스 - 보안 그룹 - 인바운드 규칙 편집
MySQL/Aurora 규칙 추가
3) DataGrip으로 외부 접속
MySQL 선택
Host - rds의 엔드 포인트
User, Password - 인스턴스 생성 시 작성했던 마스터 사용자의 이름, 비밀번호
Test Connection 성공
쿼리를 통해 RDS 외부 접속 확인
1) 가비아에서 도메인 구입
2) DNS 설정
DNS 설정 - 레코드 추가
호스트 - www, @ / 값/위치 - 서버 IP 주소
도메인 주소로 페이지 연결 확인
1) certbot 설치
$ sudo snap install certbot --classic
2) SSL 인증서를 적용하여 https 적용하기
$ sudo certbot --nginx -d seoyoee.shop -d www.seoyoee.shop
SSL 인증서 발급 완료
3) nginx 재시작
$ sudo nginx -t
$ sudo systemctl restart nginx
4) EC2 인바운드 규칙 추가
보안 그룹 - 인바운드 규칙 편집 - HTTPS(443) 추가
5) 도메인 접속
https 적용 확인
http로 접속해도 자동으로 https 적용