ubuntu 아래 node 서버 환경 배치 - 기초 편

맨 앞 에 쓰다
이것 은 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 를 파견 하여 슈퍼 관리자 계 정 으로 직접 조작 하지 않도록 합 니 다.
  • 사용자 추가 Jerry sudo adduser Jerry
  • 제 리 를 승진 시 켰 다.sudo visudo GUN nano 프로필 을 열 고 User privilege specificationJerry ALL=(ALL:ALL) ALL 모든 sudo 를 추가 합 니 다.Jerry 는 모든 명령 으로 작업 을 수행 할 수 있 습 니 다.Jerry 는 모든 그룹 으로 작업 을 수행 할 수 있 습 니 다.이 규칙 은 모든 명령 에 적용 된다
  • ssh 서비스 재 개: 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
  • ssh 서비스 재 개 UseDNS no
  • 명령 행 을 새로 열 어 로그 인 해 보기 sudo service ssh restart
  • 2 、 루트 비밀번호 로그 인 닫 기
    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
  • nvm 설치.git 에서 nvm 검색, 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
  • 특정한 버 전의 node wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash 를 설치 하거나 최신 nvm install v6.9.5
  • 을 설치 합 니 다.
  • 전역 공구 꾸러미 설치 nvm install node..
  • 2. pm2 를 통 해 서버 상주
  • taobao 미 러 를 설정 할 수 있 습 니 다. 직접 npm 가 느 릴 수 있 습 니 다
       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
  • pm2 npm i pm2 webpack gulp grunt-cli -g 또는 cnpm i pm2 -g 또는 npm i pm2 -g
  • 설치
    Nginx 역방향 에이전트
  • Nginx 는 80 포트 를 가지 고 포트 리 트 윗
  • 을 책임 집 니 다.
  • 업데이트 npm --registry=https://registry.npm.taobao.org install -g pm2
  • nginx 설치 sudo apt-get update
  • 2 급 도 메 인 이름 (A 기록) 분석 sudo apt-get install nginx
  • 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;
        }
    }
  • 브 라 우 저 헤더 정보 에 있 는 Nginx 버 전 번 호 를 숨 깁 니 다.설정 sudo nginx -s reload 아래 /etc/nginx 에서 nginx.conf 아래 Basic Setting 의 주석 을 떼 어 냅 니 다.설정 검사 server_token off, 설정 다시 불 러 오기 sudo nginx -t
  • 정적 사이트 배치
    1. 프로젝트 를 git 창고 에 업로드
  • 로 컬 과 서버 의 sudo service nginx reload 를 git
  • 에 추가 합 니 다.
  • 로 컬 에 git 를 설치 하고 git
  • 에 프로젝트 를 만 들 고 업로드 합 니 다.
  • 서버 설치 git id-rsa.pub
  • 서버 에서 clone 프로젝트 테스트 sudo apt-get install git
  • 2. pm2 원 키 배치 항목 설정
  • 로 컬 프로젝트 에 프로필 추가 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 
  • 프로젝트 픽업 (git 에서 서버 까지) 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) 도 추가

    좋은 웹페이지 즐겨찾기