[AWS] EC2 NGINX 설치하고 Config설정 및 배포하기
EC2에서 톰캣(Tomcat)을 사용하여 서버를 배포하고 있는데
Nginx로 무중단 배포를 한 번 해보고 싶어서 변경하려고 한다.
본 글에서는 우선 Nginx 설치부터 설정 및 배포까지 해보도록 하겠다.
1. NGINX 설치하기
1-1. Nginx 설치
yum 명령어를 사용해서 Nginx를 설치하자.
sudo yum install -y nginx
설치가 완료됐다. (더보기 시 설치 로그 확인)
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
amzn2-core | 3.6 kB 00:00:00
amzn2extra-docker | 2.9 kB 00:00:00
amzn2extra-kernel-5.10 | 3.0 kB 00:00:00
epel/x86_64/metalink | 6.5 kB 00:00:00
epel | 4.7 kB 00:00:00
google-chrome | 1.3 kB 00:00:00
(1/2): epel/x86_64/updateinfo | 1.0 MB 00:00:00
(2/2): epel/x86_64/primary_db | 7.0 MB 00:00:00
225 packages excluded due to repository priority protections
Resolving Dependencies
--> Running transaction check
---> Package nginx.x86_64 1:1.20.1-10.el7 will be installed
--> Processing Dependency: nginx-filesystem = 1:1.20.1-10.el7 for package: 1:nginx-1.20.1-10.el7.x86_64
--> Processing Dependency: libcrypto.so.1.1(OPENSSL_1_1_0)(64bit) for package: 1:nginx-1.20.1-10.el7.x86_64
--> Processing Dependency: libssl.so.1.1(OPENSSL_1_1_0)(64bit) for package: 1:nginx-1.20.1-10.el7.x86_64
--> Processing Dependency: libssl.so.1.1(OPENSSL_1_1_1)(64bit) for package: 1:nginx-1.20.1-10.el7.x86_64
--> Processing Dependency: nginx-filesystem for package: 1:nginx-1.20.1-10.el7.x86_64
--> Processing Dependency: redhat-indexhtml for package: 1:nginx-1.20.1-10.el7.x86_64
--> Processing Dependency: libcrypto.so.1.1()(64bit) for package: 1:nginx-1.20.1-10.el7.x86_64
--> Processing Dependency: libprofiler.so.0()(64bit) for package: 1:nginx-1.20.1-10.el7.x86_64
--> Processing Dependency: libssl.so.1.1()(64bit) for package: 1:nginx-1.20.1-10.el7.x86_64
--> Running transaction check
---> Package amazonlinux-indexhtml.noarch 0:1-1.amzn2 will be installed
---> Package gperftools-libs.x86_64 0:2.6.1-1.amzn2 will be installed
---> Package nginx-filesystem.noarch 1:1.20.1-10.el7 will be installed
---> Package openssl11-libs.x86_64 1:1.1.1g-12.amzn2.0.19 will be installed
--> Processing Dependency: openssl11-pkcs11 for package: 1:openssl11-libs-1.1.1g-12.amzn2.0.19.x86_64
--> Running transaction check
---> Package openssl11-pkcs11.x86_64 0:0.4.10-6.amzn2.0.1 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
======================================================================================================================================================================
Package Arch Version Repository Size
======================================================================================================================================================================
Installing:
nginx x86_64 1:1.20.1-10.el7 epel 588 k
Installing for dependencies:
amazonlinux-indexhtml noarch 1-1.amzn2 amzn2-core 4.1 k
gperftools-libs x86_64 2.6.1-1.amzn2 amzn2-core 274 k
nginx-filesystem noarch 1:1.20.1-10.el7 epel 24 k
openssl11-libs x86_64 1:1.1.1g-12.amzn2.0.19 amzn2-core 1.4 M
openssl11-pkcs11 x86_64 0.4.10-6.amzn2.0.1 amzn2-core 61 k
Transaction Summary
======================================================================================================================================================================
Install 1 Package (+5 Dependent packages)
Total download size: 2.4 M
Installed size: 6.7 M
Downloading packages:
(1/6): amazonlinux-indexhtml-1-1.amzn2.noarch.rpm | 4.1 kB 00:00:00
(2/6): gperftools-libs-2.6.1-1.amzn2.x86_64.rpm | 274 kB 00:00:00
(3/6): nginx-1.20.1-10.el7.x86_64.rpm | 588 kB 00:00:00
(4/6): nginx-filesystem-1.20.1-10.el7.noarch.rpm | 24 kB 00:00:00
(5/6): openssl11-libs-1.1.1g-12.amzn2.0.19.x86_64.rpm | 1.4 MB 00:00:00
(6/6): openssl11-pkcs11-0.4.10-6.amzn2.0.1.x86_64.rpm | 61 kB 00:00:00
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 5.1 MB/s | 2.4 MB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : openssl11-pkcs11-0.4.10-6.amzn2.0.1.x86_64 1/6
Installing : 1:openssl11-libs-1.1.1g-12.amzn2.0.19.x86_64 2/6
Installing : amazonlinux-indexhtml-1-1.amzn2.noarch 3/6
Installing : 1:nginx-filesystem-1.20.1-10.el7.noarch 4/6
Installing : gperftools-libs-2.6.1-1.amzn2.x86_64 5/6
Installing : 1:nginx-1.20.1-10.el7.x86_64 6/6
Verifying : 1:openssl11-libs-1.1.1g-12.amzn2.0.19.x86_64 1/6
Verifying : gperftools-libs-2.6.1-1.amzn2.x86_64 2/6
Verifying : openssl11-pkcs11-0.4.10-6.amzn2.0.1.x86_64 3/6
Verifying : 1:nginx-filesystem-1.20.1-10.el7.noarch
Verifying : 1:nginx-1.20.1-10.el7.x86_64 6/6
Installed:
nginx.x86_64 1:1.20.1-10.el7
Dependency Installed:
amazonlinux-indexhtml.noarch 0:1-1.amzn2 gperftools-libs.x86_64 0:2.6.1-1.amzn2 nginx-filesystem.noarch 1:1.20.1-10.el7
openssl11-libs.x86_64 1:1.1.1g-12.amzn2.0.19 openssl11-pkcs11.x86_64 0:0.4.10-6.amzn2.0.1
Complete!
1-2. 버전 확인
nginx 1.20.1 버전이 잘 설치된 것을 확인할 수 있다.
sudo nginx -v
------------------------------
nginx version: nginx/1.20.1
2. Config 설정
2-1. nginx.conf 수정
nginx.conf 파일을 수정하기 위해 편집기를 연다.
sudo vi /etc/nginx/nginx.conf
server 부분을 따로 파일로 관리할 예정이라 include 추가하고
server 영역은 전부 주석처리한다.
include /etc/nginx/sites-enabled/*.conf;
# server {
# listen 80;
# listen [::]:80;
# server_name _;
# root /usr/share/nginx/html;
#
# # Load configuration files for the default server block.
# include /etc/nginx/default.d/*.conf;
#
# error_page 404 /404.html;
# location = /404.html {
# }
#
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# }
# }
2-2. server 설정
/etc/nginx 경로로 이동해서 디렉토리를 2개 생성한다.
sudo mkdir sites-available
sudo mkdir sites-enabled
sites-available 디렉토리로 이동하여 default.conf 파일을 하나 생성한다.
sudo vi default.conf
파일 안에 아래와 같이 세팅한다.
root 부분에 배포할 경로를 적어주면 된다.
server {
listen 80;
location / {
root /project/nginx-project;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
}
2-3. 심볼릭 링크
심볼릭 링크는 윈도우로 치면 바로가기로 이해하면 된다.
심볼릭 링크를 활용해서 sites-enabled 디렉토리에 default.conf 바로가기를 만든다.
cd /etc/nginx/sites-enabled
sudo ln -s /etc/nginx/sites-available/default.conf
sites-enabled 디렉토리로 이동하여 명령어를 실행하면 아래 이미지와 같이 심볼릭 링크 설정이 된다.
3. 서버 실행
아주 간단하게 설정이 끝났고 이제 서버를 실행한다.
sudo service nginx start
----------------------------
sudo systemctl start nginx
간단하게 index.html에 "NGINX TEST" 문구 넣어서 서버를 실행해봤다.
nginx 서버가 정상적으로 작동 중인 것을 확인할 수 있다.
systemctl status nginx
--------------------------------------------------------------
● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
Active: active (running) since Tue 2024-01-16 14:24:57 KST; 41s ago
Process: 26461 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
Process: 26457 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
Process: 26456 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
Main PID: 26463 (nginx)
CGroup: /system.slice/nginx.service
├─26463 nginx: master process /usr/sbin/nginx
└─26464 nginx: worker process
Jan 16 14:24:57 systemd[1]: Starting The nginx HTTP and reverse proxy server...
Jan 16 14:24:57 nginx[26457]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Jan 16 14:24:57 nginx[26457]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Jan 16 14:24:57 systemd[1]: Started The nginx HTTP and reverse proxy server.
nginx 설치 및 설정부터 간단하게 서버 실행해서 접속되는 것까지 확인했는데
단순 배포라서 그런지 모르겠지만 그리 어렵지 않게 할 수 있었다.
Apache, Spring Boot 내장 톰캣 Let's Encrypt 무료 인증서 적용 방법 (Certbot)
Nginx SSL/TLS 인증서 적용하여 HTTPS로 리다이렉트까지 하는 방법
주식투자에 관심이 있으세요?
제가 매일 사용하는 주식 앱, '디핏'을 추천해 드립니다.
이 앱으로 종목정보를 빠르게 파악하는 데 도움이 됩니다.
'개발 이야기 > AWS (Amazon Web Services)' 카테고리의 다른 글
댓글
이 글 공유하기
다른 글
-
[AWS] EC2 Abuse Report 대응 및 해결 방법 - AWS EC2 Instance Connect
[AWS] EC2 Abuse Report 대응 및 해결 방법 - AWS EC2 Instance Connect
2024.01.25 -
[AWS] EC2 NGINX에 무료 SSL/TLS 적용하고 HTTPS로 리다이렉트(Redirect) 하기 - Let's Encrypt (Certbot)
[AWS] EC2 NGINX에 무료 SSL/TLS 적용하고 HTTPS로 리다이렉트(Redirect) 하기 - Let's Encrypt (Certbot)
2024.01.16 -
[AWS] EC2에서 Node.js, npm, yarn 패키지 설치하는 방법 (nvm)
[AWS] EC2에서 Node.js, npm, yarn 패키지 설치하는 방법 (nvm)
2023.12.06 -
[AWS] EC2 무료 SSL/TLS(HTTPS)적용 방법 (Apache Tomcat, Spring Boot 내장 Tomcat 적용) - Let's Encrypt (Certbot)
[AWS] EC2 무료 SSL/TLS(HTTPS)적용 방법 (Apache Tomcat, Spring Boot 내장 Tomcat 적용) - Let's Encrypt (Certbot)
2023.11.02