본문 바로가기
Server

AWS EC2 서버 환경 설정하기

by sym43 2023. 7. 3.

AWS EC2로 서버를 구축한 뒤에는 서버의 환경을 설정해주어야 한다.

 

1. 리눅스에 ngnix, php, mysql 설치

  • ngnix 설치
# 설치 이전에 실행
sudo apt update
# ngnix 설치
sudo apt install ngnix
# 설치가 완료되었는지를 확인, 버전이 나타난다면 설치가 완료된 것
ngnix -v

 

  • mysql 설치
# mysql 설치
sudo apt install mysql-server

# mysql 보안 설정
sudo mysql_secure_installation

# press y
# 설정할 비밀번호의 형식에 따라서 보안 단계를 설정
# 0 = low, 1 = medium, 2 = strong
# 원하는 비밀번호를 입력(2번), 그 다음 나머지는 y
# 단, disallow root login은 n으로 설정

# mysql에 접속하는 방법
sudo mysql -u root -p
< enter password >

# mysql 나가는 방법
exit;

 

  • php 설치
# php 설치
sudo apt install php-fpm php-mysql
# php 설치 확인
php -v

 

이후에 크롬을 열고, IP주소로 접속하게 되면, ngnix 화면이 나타나게 됩니다.

 

2. ngnix와 php를 연동

# 아래 디렉토리로 이동
cd /var/www/html

# phpinfo.php 파일을 생성
sudo vi phpinfo.php

# insert 버튼을 통해 아래 내용으로 수정 후 esc 누르고, :wq로 나감
<?php
		phpinfo();
?>

# php와 nginx를 연동, nginx의 기본 설정 경로는 /etc/nginx/sites-available
cd /etc/nginx/sites-available

# vi로 default 파일을 열면, 서버 설정 블록이 나타남
sudo vi default

# index는 접속했을 때, 처음 나오는 화면을 의미
# root는 이 파일들의 경로를 의미
# 아래 부분의 주석을 해제, 전부는 X
location ~ \.phps $ { 
	include snippets/fastcgi-php.conf;
	// php 버전을 확인해서 7.0 부분을 수정
	fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
}

# 디렉토리 이동 후, 파일 열기
cd /etc/nginx
sudo vi nginx.conf

# 주석 해제
server_names_hash_bucket_size 64;

# nginx의 설정 파일을 변경하면, 반드시 테스트를 하고 재시작을 해주어야 함
sudo nginx -t
sudo service nginx restart

 

해당 과정 후에 다시 크롬을 열고, IP주소/phpinfo.php를 입력하면, 접속이 가능해집니다.

 

3. 도메인과 서브 도메인 적용

 

  • 도메인을 구입
    • 가비아나 후이즈로 들어가서 로그인하고, 원하는 도메인을 구입
    • 1년에 500원인 .shop이 좋음
    • 마이페이지에서 DNS 관리툴로 들어가면, 구입한 도메인이 존재
    • 설정을 누르고 레코드 수정
    • 레코드 추가
     

 

@, WWW를 따로 입력하지 않아도 바로 연결된 IP로 보내줄 수 있도록 한다.

각 위치는 인스턴스의 IP, TTL은 3600으로, 개발용 dev와 배포용 prod를 나누어 설정한다.

 

  • 도메인을 적용
# 도메인과 연결하기 위해서는 서버 설정 파일에서 서버 이름을 추가
# nginx 설정 파일로 들어감
sudo vi default

# server_name에 연결할 url을 입력
server_name 도메인이름.shop www.도메인이름.shop;

# 마찬가지로 test하고, 재시작
sudo nginx -t
sudo service nginx restart

 

이 이후에 해당 도메인으로 접속하면, nginx 파일이 나타나고, 도메인/phpinfo.php 입력 시에 phpinfo 화면이 나타나게 된다.

 

  • 서브 도메인을 적용
# nginx의 기본 경로에 dev와 prod 폴더를 생성
cd /var/www/html
sudo mkdir dev
sudo mkdir prod

# dev로 이동해서 index.html 파일 생성
cd dev
sudo vi index.html

# prod로 이동해서 index.html 파일 생성
cd ..
cd prod
sudo vi index.html

# 서버블록을 만들고 연결을 진행
# nginx의 설정 파일로 이동
cd /etc/nginx/sites-available

# default 파일로 들어가기
sudo vi default
# 기본 서버 블록과 동일한데, root와 서버 이름만 변경하면 됨
server {
		listen 80;
		listen [::]:80;
		// 각각 연결할 서브 도메인을 지정
		server_name dev.도메인이름.shop;
		// 루트에는 해당 html 파일이 존재하는 폴더의 경로
		root /var/www/html/dev;
		index index.html;
		location / {
			try_files $uri/ =404;
		}
}

# 기본 서버 블록과 동일한데, root와 서버 이름만 변경하면 됨
server {
		listen 80;
		listen [::]:80;
		// 각각 연결할 서브 도메인을 지정
		server_name prod.도메인이름.shop;
		// 루트에는 해당 html 파일이 존재하는 폴더의 경로
		root /var/www/html/prod;
		index index.html;
		location / {
			try_files $uri/ =404;
		}
}
# 서버 블록을 모두 만들고, 테스트와 재시작을 진행
sudo nginx -t
sudo service nginx restart

 

위 과정을 전부 마친 후에는 dev.도메인이름.shop, prod.도메인이름.shop으로 접속이 가능해진다.

 

  • 리다이렉션 적용
# 서버 설정 파일로 재접속
cd /etc/nginx/sites-available

# default 파일 수정
sudo vi default

# 리다이렉션용 서버 블록 추가 생성
# https를 적용한 후에는 https로 수정
server {
		listen 80;
		listen [::]:80;
		// 각각 연결할 서브 도메인을 지정
		server_name 인스턴스의 IP주소를 입력;
		return 301 http://도메인이름.shop$request_uri;
}

# nginx 테스트 후 재시작
sudo nginx -t
sudo service nginx restart

 

이후에 IP주소로 접속하면, 도메인으로 들어갈 수 있게 된다.

'Server' 카테고리의 다른 글

AWS EC2로 서버 구축하기  (0) 2023.03.24