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 인 스 턴 스 보안 그룹 규칙 에 추가ECSHTTP(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에 따라 라이센스가 부여됩니다.