Node. js 프로그램 을 Systemd 와 Nginx 로 배치 하 는 방법
소개 하 다.
네트워크 애플 리 케 이 션 을 Droplet 에 배치 할 때 개발 과정 에서 사용 하 는 똑 같은 설정 을 사용 하 는 것 은 매우 유혹 적 이다. 예 를 들 어 서버 를 열 때 터미널 에서 실행 하 는 것 이다. "ruby app. rb" 또는 "node server. js" 는 간단 하고 쉬 우 며 시각 적 인 로그 인 도 제공 할 수 있 습 니 다.SSH 세 션 이 끝나 면 'screen' 이나 'tmux' 나 'nohup' 으로 실행 시 키 는 사람 도 있다.위험 합 니 다. 서버 가 무 너 지고 주변 에 다시 시작 하 는 사람 이 없 으 면 어떻게 해 야 합 니까?
너 는 forever 와 crontab 를 사용 하여 문 제 를 해결 할 수 있다.이 강 좌 는 더욱 강력 하고 복잡 한 해결 방안 을 제공 했다.시스템 d (앞으로 Arch, Fedora, CentOS 에서 도 사용 가능) 네트워크 응용 프로그램 으로 완전한 관 리 를 실현 할 수 있 습 니 다. 제어 그룹 ( cgroups) 관리 로그 (logs), 정상 실행 시간 (uptime), 자원 (resources) 과 보안 문제 (security), 고급 배경 프로그램 시작 은 통일 적 으로 접근 하고 제어 하 며 조정 할 수 있 습 니 다.
이 튜 토리 얼 은 간단 한 Node. js 프로그램 을 사용 하지만 대부분 에 적용 되 며 전부 가 아니라면 다른 것 으로 도 가능 합 니 다 (Ruby, Python 등).PHP 네트워크 응용 프로그램 에 대해 서 는 좀 더 전문 적 인 LAMP 나 LEMP 스 택 을 사용 하 는 것 으로 바 꾸 는 것 을 권장 합 니 다.
Fedora 와 Arch 는 잘못된 설정 이나 헷 갈 리 지 않도록 명령 을 제공 해 야 합 니 다.가리 키 지 않 을 때 두 시스템 에 주 는 명령 은 같 아야 한다.또한 튜 토리 얼 에 따라 조작 하기 전에 모든 튜 토리 얼 을 통독 하여 무엇이 필요 한 지, 당신 의 상황 에 사용 되 는 지 알 아 보 는 것 을 권장 합 니 다.
시스템 준비
시스템 d 가 있 는 서버Arch Linux 와 Fedora droplets 는 기본적으로 설정 되 어 있 지만 systemd 는 다른 분기 에 도 설치 할 수 있 습 니 다.당신 을 가리 키 는 파일: Ubuntu, Debian.
· Nginx, 역방향 프 록 시 http 와 websocket 서버 로 사 용 됩 니 다.
· Git, nvm 를 설치 하고 프로그램 을 끌 어 옵 니 다.
· Root 접근. 일반 사용자 로 로그 인 할 수도 있 고, sudo 의 모든 명령 이나 su –또는 sudo su – 하나의 프롬프트 로 갑 니 다.
설치 패키지
Arch:
# pacman -Sy
# pacman -S nginx git
Fedora:
# yum install nginx git
응용 프로그램 준비
취향 에 따라 설정 할 수 있 지만 시작 하기 전에 설정 해 야 합 니 다.
사용자
프로그램 은 자신의 단독 사용자 계 정 에서 실 행 됩 니 다.응용 프로그램 과 관련 된 이름 을 선택 하면 기억 하기 쉽 고 유지 하기 쉽다.여 기 는 srv - node - sample 을 사용 합 니 다.
# useradd -mrU srv-node-sample
포트
충돌 을 피하 기 위해 서 큰 포트 를 선택 하 세 요.여기
응용 프로그램 설정
프로그램 실행 에 필요 한 것 을 설치 해서 시작 합 니 다.Node. js (Ruby, Python...) 에 대해 서 는 두 가지 선택 이 있 습 니 다. 시스템 실행 시간 이나 특정 사용자 의 설치 (예 를 들 어 nvm, rbenv, RVM, virtualenv 등) 를 사용 합 니 다.
시스템 노드 사용
Arch:
# pacman -S nodejs
Fedora:
# yum install nodejs
구체 적 인 사용자 로 설치 하기
이 단 계 는 프로그램의 홈 디 렉 터 리 에 설치 해 야 합 니 다. 예 를 들 어:
/ home / srv - node - sample, 그 사용자 로 로그 인 하면 쉽게 완성 할 수 있 습 니 다.
# su srv-node-sample
$ cd
$ curl https://raw.github.com/creationix/nvm/master/install.sh | sh
$ source ~/.nvm/nvm.sh
$ nvm install 0.10
$ nvm alias default 0.10
그리고 node 바 이 너 리 파일 이 설 치 된 위 치 를 기록 합 니 다.
$ which node
/home/srv-node-sample/.nvm/v0.10.22/bin/node
응용 프로그램 배치
srv-node-sample
에 로그 인 할 때 코드 를 배치 합 니 다.이것 은 단지 예 일 뿐, 너의 과정 에 변화 가 있 을 수 있다.$ git clone [email protected]:user/repo.git .
$ npm install
$ grunt deploy
이 튜 토리 얼 에 대해 서 는 다음 인 스 턴 스 프로그램 을 사용 합 니 다.
var http = require('http');
http.createServer(function(req, res) {
res.end('<h1>Hello, world.</h1>');
}).listen(15301);
루트 디 렉 터 리 로 돌아 가기:
$ exit
Nginx 설정
이 튜 토리 얼 은 필요 한 설정 만 간단하게 소개 합 니 다. Nginx 설정 에 대한 자세 한 내용 을 알 고 싶 으 면 'Nginx 네트워크 서버 설정 방법' 이나 nginx 매 뉴 얼 을 볼 수 있 습 니 다.
다음 내용 을 server Block 에 넣 으 세 요:
location / {
proxy_pass http://localhost:15301/;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
그리고 배경 프로그램 을 만 듭 니 다:
# systemctl enable nginx
# systemctl restart nginx
Systemd 설정
/ etc / systemd / system / node - sample. service 에서 프로그램 에 서비스 파일 을 만 듭 니 다.
채 워 야 할 변수 가 있 습 니 다:
· [node 바 이 너 리 파일] srv - node - sample 사용자 의 "which node" 출력 입 니 다. 위 에서 언급 한
/usr/bin/node
또는 ~/.nvm/...
두 경로 모두 가능 합 니 다.· [메 인 파일] 이것 은 당신 의 프로그램의 메 인 파일 입 니 다.여기 서 는 'index. js' 입 니 다.
· 교체 잊 지 마 세 요.
srv-node-sample
! [Service]
ExecStart=[node binary] /home/srv-node-sample/[main file]
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=node-sample
User=srv-node-sample
Group=srv-node-sample
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.target
현재 이 서 비 스 를 시작 합 니 다:
# systemctl enable node-sample
# systemctl start node-sample
쓰다
—
상태.
—
~~~~
Systemctl 상태의 node - 예제 (systemctl status node - sample)
Node-sample.service
로 딩 완료: 로 딩 완료 (/ etc / systemd / system / node - sample. service; 활성화 활성화 (enabled) 액 티 브 (Active): 액 티 브 (active) (실행) 금요일 2013 - 11 - 22 01: 12: 15 UTC;35 초 전 주 PID: 7213 (node) CGroup: 이름 = systemd: / system / node - sample. service └ - 7213 / home / srv - node - sample /. nvm / v 0.10.22 / bin / node / home / srv - nod...
11 월 22 일 01: 12: 15 d02 systemd [1]: node - sample. service 시작 ~ ~ ~
로그 기록
— ~~~~
journalctl -u node-sample
-- 로 그 는 2013 - 11 - 21 목요일 19: 05: 17 UTC 를 시작 으로 2013 - 11 - 22 금요일 01: 12: 15 UTC 종료. -- 11 월 22 일 01: 12: 15 d02 systemd [1]: Starting node - sample. service... 11 월 22 일 01: 12: 15 d02 systemd [1]: Started node - sample. service 11 월 22 일 01: 12: 30 d02 node - sample [7213]: Sample message from application ~ ~ ~ ~
다시 시작, 정지
—
강제로 다시 시작:
# systemctl restart node-sample
프로그램 정지
# systemctl stop node-sample
프로그램 이 충돌 하거나 끝나 면 자동 으로 다시 시작 합 니 다.
# systemctl status node-sample
node-sample.service
Loaded: loaded (/etc/systemd/system/node-sample.service; enabled)
Active: active (running) since Fri 2013-11-22 01:12:15 UTC; 35s ago
Main PID: 7213 (node)
CGroup: name=systemd:/system/node-sample.service
└─7213 /home/srv-node-sample/.nvm/v0.10.22/bin/node /home/srv-nod...
Nov 22 01:12:15 d02 systemd[1]: Started node-sample.service.
# kill 7213
# systemctl status node-sample
node-sample.service
Loaded: loaded (/etc/systemd/system/node-sample.service; enabled)
Active: active (running) since Fri 2013-11-22 01:54:37 UTC; 6s ago
Main PID: 7236 (node)
CGroup: name=systemd:/system/node-sample.service
└─7236 /home/srv-node-sample/.nvm/v0.10.22/bin/node /home/srv-nod...
Nov 22 01:54:37 d02 systemd[1]: node-sample.service holdoff time over, sch...t.
Nov 22 01:54:37 d02 systemd[1]: Stopping node-sample.service...
Nov 22 01:54:37 d02 systemd[1]: Starting node-sample.service...
Nov 22 01:54:37 d02 systemd[1]: Started node-sample.service.
PID 가 바 뀌 었 다 는 것 은 프로그램 이 종료 되 고 다시 시작 되 었 음 을 나타 낸다.
Websockets
만약 응용 프로그램 이 웹 소켓 을 사용한다 면, 다음 몇 줄 을 Nginx 설정 에 추가 해 야 합 니 다.
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
그리고 Nginx 는 다시 불 러 와 야 합 니 다:
# systemctl reload nginx
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
간단! Certbot을 사용하여 웹 사이트를 SSL(HTTPS)화하는 방법초보자가 인프라 주위를 정돈하는 것은 매우 어렵습니다. 이번은 사이트를 간단하게 SSL화(HTTP에서 HTTPS통신)로 변경하는 방법을 소개합니다! 이번에는 소프트웨어 시스템 Nginx CentOS7 의 환경에서 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.