본문 바로가기

WEB SERVER

EC2 Nginx 설치

1. 운영체제 선택

Amazon Linux AMI(Amazon Machine Image) 를 선택합니다. 서버 생성 첫페이지 목록에서 고르세요.

Amazon Linux 2 라는 것이 생겨서 살펴봤는데, 아직 실사용하기엔 문제가 있어보이더군요. Amazon Linux AMI 를 선택합니다.

 

2. 기타 설정은 생략합니다. 사양만 잘 고르고 다음다음 누르시면 됩니다.

아무튼 쉘에 로그인

 

3. 현재 운영체제에 설치되어 있는 프로그램 최신버전 패치

# yum update

Amazon Linux 는 CentOS 계열이며 패키지 관리자 프로그램으로 yum 을 사용합니다.

 

4. 시스템 시간 설정 - Linux Timezone Setting

# vi /etc/sysconfig/clock

UTC 를 찾아서 Asia/Seoul 로 변경

이 부분을 찾아서

이렇게 변경.

 

다음의 명령어도 실행합니다.

# ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

시간 확인

# date

 

5. Nginx 웹서버 설치

어떤 버전이 설치되는지 확인하기

# yum info nginx

1.12.1 버전이 설치되겠네요. 충분히 최신버전입니다.

 

# yum install nginx nginx-mod-http-geoip
# service nginx start

 

http://당신의서버아이피/ 로 접속해서

이 화면이 나오면 됩니다.

 

+ 추가 설정 : 방문자의 위치 정보를 알려주는 모듈을 설치합니다.

# cd /usr/share/GeoIP
# wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
# gzip -d GeoLiteCity.dat.gz
# rm GeoLiteCity.dat.gz

 

6. PHP-FPM 설치

php 패키지 검색

# yum search php

 

많이 나올텐데

php56 또는 php70 또는 php71 을 설치하세요.

php 7.2 는 호환성 이슈가 있어서 설치하는 것을 추천하지 않습니다.

 

이 블로그 글에서는 php 7.1 을 설치하겠습니다.

# yum install php71-fpm

패키지 설치시에 어떤 것들이 추가로 설치되는지 한번쯤을 봐보세요.

 

* 널리 쓰이는 PHP 모듈 설치

# yum install php71-curl php71-mbstring php71-mcrypt php71-gd

추가로 설치하고 싶은 모듈이 있으면 yum search 명령어로 패키지명 확인 후 설치해보세요.

 

# service php-fpm-7.1 start

연동작업은 나중에 합니다.

 

 

7. MYSQL 설치

DB 서버 설치는 다루지 않겠습니다아마도 RDS 를 쓰겠죠.

여기서는 MYSQL 클라이언트 프로그램만 설치합니다.

# yum install mysql56
# mysql

이렇게 에러 메세지가 나오면 정상입니다.

 

* PHP MYSQL native driver 설치

# yum install php71-mysqlnd

php 에서 mysqli 및 pdo 함수를 사용할 수 있게 됩니다.

 

8. PHP Default timezone 설정하기

php 의 date 함수가 참조하는 timezone 을 설정합니다.

어느 파일을 수정해야 하는지 탐색

# cat /etc/php-7.1.d/php.ini
# ll /etc/php.ini
# ll /etc/alternatives/php.ini

 

결과적으로 php 콘솔에서 참조하는 파일은 /etc/php-7.1.ini 이고, php-fpm 에서 참조하는 파일은 /etc/php-fpm-7.1.conf 입니다.

# vi /etc/php-7.1.ini
# vi /etc/php-fpm-7.1.conf

 

date.timezone 값을 찾아서 주석을 제거하고 시간을 설정해주세요.

k21

이 값을 찾아서

 

k22

이렇게 변경.

 

9. 부팅시 자동실행 설정

자동으로 실행되는 서비스목록 확인하기

# chkconfig --list

저 2개의 서비스의 자동실행을 켜야 합니다.

 

# chkconfig nginx on
# chkconfig php-fpm-7.1 on

# chkconfig --list

 

* 테스트를 위해서 재부팅

# reboot

 

재부팅 후 다음 명령어로 확인

# service nginx status
# service php-fpm-7.1 status

 

10. 연동 설정

nginx 에서 php-fpm 으로 변수를 전달하는 파일(fastcgi_params) 수정

# vi /etc/nginx/fastcgi_params

https://blog.lael.be/demo-generator/ami-nginx/fastcgi_params.php 이 링크 문서에 쓰여진 내용대로 수정합니다.

 

일치하지 않는 도메인 요청 연결 사이트 (기본사이트) 수정

# vi /etc/nginx/conf.d/default.conf

https://blog.lael.be/demo-generator/ami-nginx/default.conf.php 의 문서를 참조합니다.

이 글에서는 첫번째 옵션인 일치하지 않는 도메인 모두 차단을 사용하겠습니다.

 

nginx 환경설정 수정

nginx.conf 의 기본값이 조금 이상하므로 다음과 같이 수정합니다. 왜 이렇게 바꾸는지 설명은 생략합니다. 적당히 이해해보세요.

# vi /etc/nginx/nginx.conf

include /etc/nginx/conf.d/*.conf;    다음 위치에   } 괄호를 입력하여 구문을 종료하고, 그 다음 내용을 모두 삭제한다.

그 후 그림과 같이 다음 구문 추가

1
2
3
4
5
6
7
8
9
10
11
gzip on;
gzip_min_length  10240;
gzip_buffers  32 32k;
gzip_comp_level 9;
gzip_types    text/plain application/x-javascript text/xml text/css;
gzip_vary on;
 
server_tokens off;
 
geoip_country  /usr/share/GeoIP/GeoIP.dat;
geoip_city     /usr/share/GeoIP/GeoLiteCity.dat;

최종적으로 이런 모습이어야 합니다.

 

제대로 작업했는지 확인 후 서비스 재시작

# service nginx configtest
# service nginx restart

 

 

11. 웹 사용자 추가

사용자 추가

# adduser myuser1

사용자 비밀번호 설정

# passwd myuser1

웹서버 사용을 위해서 권한 설정

# chmod 701 /home/myuser1

사용자 전환 후 웹 디렉토리 생성

# su -l myuser1
# mkdir www
# exit

 

12. 사용자 php-fpm 추가

https://blog.lael.be/demo-generator/ami-nginx/php-fpm-user.php 을 보고 추가합니다.

사용자당 1개의 파일을 작성해야 합니다.

# vi /etc/php-fpm-7.1.d/myuser1.conf

/etc/php-fpm-7.1.d/ 위치에 기본 파일 (www.conf) 이 있는데 그대로 내버려둡니다.

 

13. 사용자 nginx 파일 추가

https://blog.lael.be/demo-generator/ami-nginx/my-example-site.com.php 을 보고 설정합니다.

사이트 주소, 웹루트 디렉토리, 사용자 아이디를 입력합니다.

# vi /etc/nginx/conf.d/samplesite.com.conf

 

14. 설정파일 적용 및 테스트

# service nginx restart
# service php-fpm-7.1 restart

 

/home/myuser1/www 웹루트 위치에 적절한 파일을 업로드한 후에 웹브라우저로 접속해보세요.

세팅 완료!!

이제 원하는 서비스를 구동하시면 됩니다.


'WEB SERVER' 카테고리의 다른 글

[ HTTP ] 응답코드 정리  (0) 2019.04.02