AWS을 이용한 서버 구축 (Linux+Nginx+Php+Mysql)

vector13·2022년 7월 22일
0

1. AWS 서버 구축

aws 가입을 완료하고

1-1. EC2 Instance 생성

EC2 Ubuntu 중에 프리티어 가능한 22.04와 20.04 중에 20.04 선택

인스턴스 유형은 프리티어인 t2.micro

새 키 페어 생성하고 (난 window니까 ppk) 저장을 해준다.

보안그룹은 ssh 일단은 모든 위치에서 열어두고

스토리지 나 고급 세부정보는 기본으로 되어있는 설정 그대로 가져감

인스턴스 생성 전에 관련 문구도 확인 하고 인슨턴스 시작을 눌러 생성!

첫 해에는 무료 계층 AMI에서 매월 750시간의 t2.micro(또는 t2.micro를 사용할 수 없는 지역에서는 t3.micro) 인스턴스 사용, EBS 스토리지 30GiB, 200만 IO, 1GB 스냅샷 및 100GB의 인터넷 대역폭이 포함됩니다.

1-2. WinSCP 이용 EC2 접근

강의영상에서는 WinSCP 사용해서 EC2 접근 (내가 써본건 putty만 인데 WinSCP 는 FTP, SFTP 를 gui통해 쉽게 할 수있는 프로그램. 그래서 putty로 진행할까 하다가 (putty에서도 ftp 가능, 근데 전에 해봤을 때 방화벽열고 암튼 절차가 복잡했었음 ) 그냥 말 듣기로했음

(https://winscp.net/eng/download.php) 에서 설치 (WinSCP 5.21) (기본 설정 그대로 가져감 )

프로토콜 SFTP 선택

호스트 이름에 EC2 퍼블릭 IPv4 주소 입력

포트번호 자동할당 22로 그대로 두고

사용자 이름 ubuntu 비번없음

고급 버튼 누르고 → ssh 메뉴 → 인증 메뉴 → 개인키 파일에 아까 받은 키페어 찾아서 입력

다 ok 누르고 로그인

아이콘 메뉴 중에 putty 창 띄울 수 있느 것도 있음

2-3. ubuntu 20.04 ngnix, php, mysql 설치

  1. ngnix 설치

https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-20-04

sudo apt update
sudo apt install nginx

웹 브라우저에서 Ec2 ip주소 들어가보면 안뜬다 → EC2 가서 보안그룹→ 인바운드 규칙 편집

인바운드 규칙 처리 잘 됨

방화벽 관련 처리해준다 .

sudo ufw app list
sudo ufw allow 'Nginx HTTP'
sudo ufw status

  1. mysql 설치
sudo apt install mysql-server
sudo mysql_secure_installation

비번 설정하는데 문제가 생김

Failed! Error: SET PASSWORD has no significance for user 'root'@'localhost' as the authentication method used doesn't store authentication data in the MySQL server. Please consider using ALTER USER instead if you want to change authentication parameters.

putty 를 종료하고

sudo mysql
alter user 'root'@'localhost' identified with mysql_native_password by '비밀번호'; 
flush privileges ;

로 해결

  1. php 설치
sudo apt install php-fpm php-mysql 

php 설치 확인 위해

cd /var/www/html/
ls

index.nginx-debian.html 가 기본적으로 있음

vi 명령어로 여기에 index.php 만들어주고 하단 내용 넣어줌

php와 ngnix를 연동을 해보자

cd /etc/nginx/sites-available/
sudo vi default

에 가서 아래 내용 주석 빼주기 (검은화면에 파랑글씨 게다가 작아서 잘안보임 ^^)

cd /var/www/html
sudo service nginx restart

에러가 난다.

Job for nginx.service failed because the control process exited with error code.
See "systemctl status nginx.service" and "journalctl -xe" for details.

sudo nginx -t

로 확인해본다. 내가 파일을 잘못건들였나보다. 다시/etc/nginx/sites-available/default 파일 가서 확인한다. 빨간 부분 주석을 안풀어줬군 . 풀어주고 다시 실행

잘 출력된다.

2-4. Mysql 외부에서 접속하기 (DataGrip or workbench)

나는 workbench 가 깔려있기 때문에 workbench 이용하겠다. new connection 누르고

host 에 ec2 ip개방주소 넣고 username 과 password(아까 putty에서 입력한거) 입력

그리고 test connection 하면 당연히 안될것 (보안그룹 규칙 추가안했기 때문)

일단은 ec2 보안그룹에서 mysql 관련 인바운드 규칙을 다 열고

유저를 추가해준다 (root 로 해도되긴하는데 보안상 )

create user '사용자id'@'%' identified by '비밀번호';
grant all privileges on *.* to '사용자id'@'%';

-- Database 생성 
create database risingCamp;
show databases;
exit

sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

ec2에서 MySQL 외부 접속 허용 설정 bind-address를 127.0.0.1 에서 0.0.0.0으로 변경


mysql 재시작

sudo service mysql restart 

접속 성공! 아까 만든 table도 있는 것 확인 완료

2-5. ubuntu 20.04 phpmyadmin nginx 설치

phpMyAdmin은 웹 기반 인터페이스를 통해 MySQL 및 MariaDB 서버를 관리하기 위한 오픈 소스 PHP 기반 도구

sudo apt update
sudo apt install phpmyadmin

설치 중 다음 과같은 화면 뜬다. 여기 ngnix가 없으므로 tab키 이용 ok로 가서 enter

비번 입력 등 잘 헀으나 아래 화면이 나왔음

(https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-phpmyadmin-with-nginx-on-an-ubuntu-20-04-server) 링크에 따라서


mysql -u root -p
UNINSTALL COMPONENT "file://component_validate_password";
eixt 

하고 다시 sudo apt install phpmyadmin 해준다.

심볼릭 링크 생성해주고 (바로가기)

sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin

아까 php 다운했을 때 사용했던 파일로 가서 44줄 맨 위뒤에 index.php; 추가해준다. wq로 나오고

sudo vi /etc/nginx/sites-available/default

sudo service nginx restart 

웹 브라우저에서 ec2퍼블릭주소/phpmyadmin 로 요청 시 잘 출력된다.

로그인해도 잘 보임

profile
HelloWorld! 같은 실수를 반복하지 말기위해 적어두자..

0개의 댓글