ubuntu 아래 node 서버 환경 배치 - 기초 편
8109 단어 mongodbnginxubuntu14.04node.js
이것 은 imooc 에서 Scott 선생님 의 과정 에 따라 정리 한 것 입 니 다. 주로 자신 이 찾 는 것 을 편리 하 게 합 니 다. 왜냐하면 정말 기억 하지 못 하기 때 문 입 니 다. 링크 를 첨부 합 니 다. Node. js 프로젝트 온라인 서버 배치 및 발표 정적 사 이 트 는 데이터 뱅 크 의 영화 사이트, 공중 번호, 애플 릿, app 5 가지 프로젝트 의 배치 가 필요 합 니 다.여 기 는 가장 간단 한 정적 사이트 의 배치 만 씁 니 다.
사고의 방향 을 배치 하 다.
1. 프로젝트 완성 2. 도 메 인 이름 을 구 매 하고 등록 하 며 2 급 도 메 인 이름 을 분석 하여 예비 3. 서버 4, ssh 원 격 로그 인 서버 를 구 매 하고 안전 설정 5. 서버 에서 node 환경 6, Nginx 역방향 대 리 를 구축한다.80 포트 를 가지 고 포트 리 트 윗 7, 데이터베이스 mongodb 설정... 설치 튜 토리 얼 8. 온라인 배치.로 컬 과 서버 에 git, pm2 (pm2 는 git 프로젝트 를 서버 에 업데이트 하 는 것 을 책임 집 니 다) 를 설치 합 니 다.
원 격 로그 인 서버
1, 첫 번 째 ssh 원 격 로그 인
ubuntu
이 고 아 리 는 root
ssh root@ ip
2. 흠 차 대신 Jerry 를 파견 하여 슈퍼 관리자 계 정 으로 직접 조작 하지 않도록 합 니 다.
sudo adduser Jerry
sudo visudo
GUN nano 프로필 을 열 고 User privilege specification
에 Jerry ALL=(ALL:ALL) ALL
모든 sudo 를 추가 합 니 다.Jerry 는 모든 명령 으로 작업 을 수행 할 수 있 습 니 다.Jerry 는 모든 그룹 으로 작업 을 수행 할 수 있 습 니 다.이 규칙 은 모든 명령 에 적용 된다 service ssh restart
.그리고 Jerry 로 로그 인 할 수 있 습 니 다.P: 새 사용자 Jerry 로 로그 인 합 니 다.이후 이 사용자 아래 에서 작 동 합 니 다.
3. ssh 비밀 로그 인 면제
ssh Jerry@ IP
파일 에 저장 되 어 있 으 며, 먼저 만 들 지 않 았 다 면 .ssh
.폴 더 와 키 가 모두 존재 한다 면 존재 하 는 키 mkdir .ssh
를 백업 할 수 있 습 니 다.. ssh 디 렉 터 리 에서 다음 과 같은 작업 을 합 니 다. 등록 mv id_rsa id_rsa_backup
, 대리 오픈 ssh-keygen -t rsa -b 4096 -C "[email protected]"
, 대리 가입 eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa
에 두 고 authorized_keys
로그 인 서버 에 사용 하고 Jerry
디 렉 터 리 에서 도 위 와 같이 키 를 생 성 합 니 다.이 어 인증 파일 /home/Jerry/.ssh
을 만 들 었 습 니 다. vi 는 vim 의 줄 임 말로 서버 에 로그 인 하지 않 으 려 는 컴퓨터 의 공개 키 vi authorized_keys
를 복사 합 니 다 ip_rsa.pub
및 ssh 서비스 재 개 chmod 600 authorized_keys
.이렇게 하면 Jerry 를 통 해 비밀 로그 인 을 면제 할 수 있 습 니 다. root 를 통 해 비밀 번 호 를 필요 로 합 니 다 Host key verification failed
원인:
로 컬. ssh 폴 더 아래 에 다른 파일 이 존재 합 니 다.
service ssh restart
여기 기 록 된 것 은 모든 방문 한 컴퓨터 (서버 는 원 격 컴퓨터) 의 공개 키 입 니 다. 잘못된 공개 키 에 문제 가 있 습 니 다.해결 방법:
대응 하 는 공개 키 정 보 를 삭제 합 니 다.가장 거 친 방법 은 파일 을 직접 삭제 하 는 것 이다.
known_hosts
정확 한 공개 키 도 삭 제 됩 니 다.함 축적 인 것 은 파일 을 열 고 공개 키 를 찾 아 삭제 하 는 것 이다.또 하나의 방법 이 있다.rm -rf known_hosts
, 아 쉽게 도 no keys found 를 잘못 보 고 했 습 니 다.안전 등급 을 높이다
1. 서버 기본 로그 인 포트 번호 수정
ssh-keygen -r IP
을 엽 니 다. 서버 기본 포트 는 22 이 고 수정 sudo vi /etc/ssh/sshd_config
입 니 다.0 - 1024 사용 하지 않 습 니 다. 시스템 프로그램 에 의 해 점용 되 고 루트 가 사용 되 어야 합 니 다. Port 22
사용 가능 합 니 다.1024-65536
.참고 로 확인 AllowUsers Jerry
UseDNS no
sudo service ssh restart
sudo vi /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no
PrimitEmptyPasswords no ( , no)
3. iptables 와 Fail2Ban 을 설정 하여 안전 보 호 를 강화 합 니 다.
ssh -p 39999 Jerry@ IP
방화벽 iptables
방어 적 인 동작 창고 모니터링 시스템 의 로그 에서 의 행 위 는 해당 하 는 조작 에 해당 한다.수상 한 행동 IP 잠 금... 1. node 환경 구축
Fail2Ban
sudo apt-get update
sudo apt-get install vim openssl build-essential libssl-dev wget curl git
아래 설치 방법 install script
또는 curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
를 설치 하거나 최신 nvm install v6.9.5
nvm install node
.. npm --registry=https://registry.npm.taobao.org install -g npm
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
npm --registry=https://registry.npm.taobao.org install -g cnpm
npm i pm2 webpack gulp grunt-cli -g
또는 cnpm i pm2 -g
또는 npm i pm2 -g
Nginx 역방향 에이전트
npm --registry=https://registry.npm.taobao.org install -g pm2
sudo apt-get update
sudo apt-get install nginx
test.segmentfault.com
디 렉 터 리 에 프로필 이 추가 되 었 습 니 다 cd /etc/nginx/conf.d
.설정 검사 sudo vi test-3000.conf
, nginx 재 부팅 sudo nginx -t
upstream test {
server 127.0.0.1:3000;
}
server {
listen 80;
server_name test.segmentfault.com;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
proxy_set_header HOST $http_host;
proxy_set_header X-Nginx-Proxy true;
proxy_pass http://test;
proxy_redirect off;
}
}
sudo nginx -s reload
아래 /etc/nginx
에서 nginx.conf
아래 Basic Setting
의 주석 을 떼 어 냅 니 다.설정 검사 server_token off
, 설정 다시 불 러 오기 sudo nginx -t
1. 프로젝트 를 git 창고 에 업로드
sudo service nginx reload
를 git id-rsa.pub
sudo apt-get install git
git clone [email protected]:DoFind/test.git
및 설정 ecosystem.json
를 새로 만 들 고 테스트 를 조작 할 수 있 는 권한 /www/test
sudo chmod 777 test
주석 일부 코드 vi .bashrc
는 다음 과 같은 몇 줄 의 코드 주석 을 찾 았 다. # If not running interactively, don't do anything
# case $- in
# *i*);;
# *)return;;
# esac
source .bashrc
pm2 deploy ecosystem.json production setup
// ecosystem.json :
{
"apps": [
{
"name": "test",
"script": "app.js",
"env": {
"COMMON_VARIABLE": "true"
},
"env_production": {
"NODE_ENV": "production"
}
}
],
"deploy": {
"production": {
"user": "Jerry",
"host": [" IP"],
"port": "39999",
"ref": "origin/master",
"repo": "[email protected]:DoFind/test.git",
"path": "/www/test/production",
"ssh_options": "StrictHostKeyChecking=no",
"post-deploy": "npm install --registry=https://registry.npm.taobao.org && pm2 startOrRestart ecosystem.json --env production",
"env": {
"NODE_ENV": "production"
}
}
}
}
내 가 직면 한 문제 중 하 나 는 배치 에 접근 할 수 없다.
pm2 deploy ecosystem.json production
의 사이트:
。 네트워크 진단 결 과 는 서버 가 받 아들 이지 않 습 니 다.ERR_CONNECTION_TIMED_OUT
포트 의 연결해결:
80
인 스 턴 스 보안 그룹 규칙 에 추가ECS
HTTP(80)
도 추가
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
레코드를 업데이트하고 업데이트 전에 동일한 레코드를 삭제하는 방법(nest js & mongoDB)ID로 레코드를 업데이트하고 싶지만 업데이트 전에 동일한 레코드에 이전에 저장된 데이터를 삭제하고 싶습니다. 프로세스는 무엇입니까? 컨트롤러.ts 서비스.ts 나는 이것을 해결하기 위해 이런 식으로 노력하고 있습니다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.