1. SSH를 이용해 EC2 인스턴스 접속
2. Phusion Passenger의 설치 파일을 내려 받기
3. 설치한 asdf를 이용하여 루비(Ruby) 언어를 설치 (ruby 설치 이유는 Phusion passenger이 c++, ruby로 만들어져서)
4. Passenger 명령어를 쉽게 실행하기 위해 변수를 설정하는 작업을 해준다.
5. Phusion Passenger를 이용해 Pasenger nginx module을 설치해준다.
//Phusion passenger, nginx module 설치
[ec2-user@ip-172-31-6-63 ~]$ passenger-install-nginx-module
--------------------------------------------
Which languages are you interested in?
Use <space> to select.
If the menu doesn't display correctly, press '!'
( ) Ruby
( ) Python
> (*) Node.js
( ) Meteor
--------------------------------------------
여기서 시스템에 가상 메모리가 부족해서 설치 시 문제가 발생할 수 있기 때문에 가상 메모리를 늘린 뒤 installer를 실행하는 것이 좋다. 설치를 더 이상 진행하지 않고, 가상 메모리를 늘리기 위해 ctrl + c를 눌러준다.
6. installer에서 추천하는 명령어를 통해 가상메모리의 크기를 늘린다.
[ec2-user@ip-172-31-6-63 ~]$ sudo dd if=/dev/zero of=/swap bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 13.5719 s, 79.1 MB/s
[ec2-user@ip-172-31-6-63 ~]$ sudo mkswap /swap
mkswap: /swap: insecure permissions 0644, 0600 suggested.
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=d19e0be5-bdc4-4f55-a4fd-17baf4c35854
[ec2-user@ip-172-31-6-63 ~]$ sudo swapon /swap
swapon: /swap: insecure permissions 0644, 0600 suggested.
7. 다시 Passenger nginx module 설치를 시도해준다.
[ec2-user@ip-172-31-6-63 ~]$ passenger-install-nginx-module
두 번째 사진에서는 경고 메시지 : ec2-user로 로그인한 상태에서 root 권한이 필요한 /opt/nginx 경로에 설치하려다 권한 에러가 발생했다. ec2-user가 아닌 root 계정으로 실행하기 위해서는 현재 asdf의 환경변수를 보존하면서 root 계정을 실행해준다.
- asdf 플러그인이 설치된 경로를 asdf 환경 변수에 명시적으로 지정
- sudo 명령어에 옵션을 지정하지 않는 경우 ec2-user의 환경변수가 보존되지 않은 새로운 세션을 생성해준다.
- 현재 PATH 환경변수를 임시로 저정해주고 sudo 명령어이 s(--shell) 와 E(--preserve_env) 옵션을 주어 ec2-user의 PATH 환경변수를 유지해준다.
[ec2-user@ip-172-31-6-63 ~]$ export ASDF_DATA_DIR=/home/ec2-user/.asdf
[ec2-user@ip-172-31-6-63 ~]$ export ORIG_PATH="$PATH"
[ec2-user@ip-172-31-6-63 ~]$ sudo -s -E
[root@ip-172-31-6-63 ec2-user]# export PATH="$ORIG_PATH"
[root@ip-172-31-6-63 ec2-user]# asdf global ruby 3.1.1
# root 계정으로 다시 nginx-module 설치를 시도해준다.
[ec2-user@ip-172-31-6-63 ~]$ passenger-install-nginx-module
현재 까지 해준 작업
8. 텍스트 편집기로 Nginx의 설정을 변경하기 위해 파일을 열어준다.
[ec2-user@ip-172-31-6-63 ~]$ sudo vi /opt/nginx/conf/nginx.conf
[ec2-user@ip-172-31-6-63 ~]$ sudo /opt/nginx/sbin/nginx
실행이 안된다. 이유는 서버를 재시작하거나 끄기 위해서 사용하는 명령어가 간단하지 않기 때문. 서비스 관리를 조금 더 쉽게 하기 위해 명령어를 추가해줘야한다.
[문제 해결 방안]
9. nginx, phusion passenger 서비스 명령어 추가
# /etc/init.d 경로에 스크립트 추가. (init.d는 서비스 스크립트들이 존재하는 경로)
[ec2-user@ip-172-31-6-63 ~]$ cd /etc/init.d
[ec2-user@ip-172-31-6-63 init.d]$
[ec2-user@ip-172-31-6-63 init.d]$
[ec2-user@ip-172-31-6-63 init.d]$ ls
functions netconsole network README
[ec2-user@ip-172-31-6-63 init.d]$
[ec2-user@ip-172-31-6-63 init.d]$ sudo vi nginx
# nginx 시작 스크립트의 내용을 복사 및 붙여 넣기해서 저장한다.
# 실행 가능한 서비스로 만들기 위해 파일 권한을 변경해준다.
[ec2-user@ip-172-31-6-63 init.d]$ sudo vi nginx
[ec2-user@ip-172-31-6-63 init.d]$ sudo chmod 755 nginx
9. 시스템 시작 시 자동 시작 서비스에 등록
[ec2-user@ip-172-31-6-63 init.d]$ sudo /opt/nginx/sbin/nginx
[ec2-user@ip-172-31-6-63 init.d]$ sudo chkconfig --add nginx
[ec2-user@ip-172-31-6-63 init.d]$ sudo ntsysv
# 스냅샷
'Cloud(AWS)' 카테고리의 다른 글
[AWS] Elastic 로드 밸런싱을 이용한 서버 트래픽 분산 (0) | 2024.12.16 |
---|---|
[AWS] Auto Scaling 그룹 생성 (0) | 2024.12.16 |
[AWS] 웹 애플리케이션 서버 구축 (0) | 2024.12.09 |
[AWS] 인스턴스(EC2) 생성 (0) | 2024.12.09 |
[개념] 클라우드 컴퓨팅 유형 (0) | 2024.12.09 |