寫在最前
這是根據 imooc 上 Scott 老師的課程整理的,主要是方便自己查找,因為真的記不住...
附上鏈接:Node.js項目線上服務器部署與發布 靜態網站,需要數據庫的電影網站、公眾號,小程序,app 五種項目的部署。
這里只寫最簡單的靜態網站的部署
1、完成項目
2、購買域名,備案,解析一些二級域名出來備用
3、購買服務器
4、ssh 遠程登錄服務器 并進行一些安全配置
5、服務端搭建 node 環境
6、Nginx 反向代理。持有80端口,負責端口轉發
7、配置 數據庫 mongodb... 安裝教程
8、部署上線。本地和服務器上都安裝git、pm2(pm2 負責把git的項目更新到服務器)
騰訊的超級管理員賬戶是 ubuntu ,阿里的是 root
ssh root@公網ip
2、委派一個欽差大臣Jerry,避免用超級管理員賬號進行直接操作添加用戶 Jerry sudo adduser Jerry
給 Jerry 升官。sudo visudo 打開 GUN nano 配置文件, 在 User privilege specification 下添加 Jerry ALL=(ALL:ALL) ALL
對所有sudo生效;Jerry 可以以任何命令來執行操作;Jerry 可以以任何組來執行操作;這個規則適用于所有命令
重啟 ssh 服務:service ssh restart。 然后就可以用 Jerry 登錄啦(新開一個命令行,以免登錄失敗無后路可退): ssh Jerry@外網IP
3、ssh 免密登錄本地生成公鑰、私鑰
密鑰存放在本地 .ssh 文件下, 如果沒有先創建一下 mkdir .ssh。如果文件夾和密鑰都已經存在,可以先備份一下已存在的密鑰 mv id_rsa id_rsa_backup。
在 .ssh 目錄下做如下操作 : 注冊 ssh-keygen -t rsa -b 4096 -C "your_email@example.com" ,開啟代理 eval "$(ssh-agent -s)", 加入代理 ssh-add ~/.ssh/id_rsa
服務端生成 并把本地的公鑰放在服務端的 authorized_keys 中
使用 Jerry 登錄服務端,在 /home/Jerry/.ssh 目錄下也進行如上操作生成密鑰。接著創建授權文件 vi authorized_keys, vi 是 vim 的縮寫,把想要免密登錄服務器的電腦的公鑰 ip_rsa.pub 復制過來
服務端授權 chmod 600 authorized_keys 并重啟ssh 服務 service ssh restart 。 這樣就可以通過 Jerry 免密登錄了, 通過 root 依然需要密碼
一個報錯提升安全等級 1、修改服務器默認登錄端口號
Host key verification failed
原因:
本地 .ssh 文件夾下存在另一個文件 known_hosts, 這里記錄的是所有訪問過的計算機(服務器是臺遠程計算機)的公鑰,報錯的公鑰有問題
解決辦法:
清除對應的公鑰信息。 最粗暴的辦法是直接刪除文件 rm -rf known_hosts , 正確的公鑰也會被刪掉。含蓄一點就是打開文件找到公鑰刪掉它。 還有一種辦法 ssh-keygen -r 公網IP,可惜報錯了 no keys found
打開配置文件 sudo vi /etc/ssh/sshd_config ,服務器默認端口是 22 ,修改 Port 22 。0-1024 不用,被系統程序占用,且必須 root 啟用,1024-65536可用。
文件末行添加 AllowUsers Jerry 。 順便確認一下 UseDNS no
重啟 ssh 服務 sudo service ssh restart
新開一個命令行登錄試試 ssh -p 39999 Jerry@外網IP
2、關閉 root 密碼登錄sudo vi /etc/ssh/sshd_config PermitRootLogin no PasswordAuthentication no PrimitEmptyPasswords no (確認一下,默認也是no)3、配置iptables 和 Fail2Ban 增強安全防護
iptables 防火墻
Fail2Ban 防御性的動作庫 監控系統的日志中的行為給相應的操作。可疑行為IP鎖定...
搭建 node 生產環境 1、搭建 node 環境更新系統 sudo apt-get update
一口氣安裝 sudo apt-get install vim openssl build-essential libssl-dev wget curl git
安裝 nvm。 在git上搜索 nvm , 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
安裝某版本的 node nvm install v6.9.5 或者安裝最新的 nvm install node
安裝一些全局工具包 npm i pm2 webpack gulp grunt-cli -g..
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 cnpm i pm2 -g or npm i pm2 -g or npm --registry=https://registry.npm.taobao.org install -g pm2
Nginx 反向代理Nginx 持有 80 端口,負責端口轉發
更新 sudo apt-get update
安裝 nginx sudo apt-get install nginx
解析一個二級域名(A記錄)出來 test.segmentfault.com
配置 nginx cd /etc/nginx/conf.d 目錄下新增一個配置文件 sudo vi test-3000.conf。檢測配置 sudo nginx -t, 重啟nginx sudo nginx -s reload
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; } }
隱藏瀏覽器 Header 信息中 Nginx 的版本號。 配置 /etc/nginx 下的 nginx.conf,把Basic Setting 下 server_token off 的注釋拿掉。檢測配置 sudo nginx -t, 重新加載配置 sudo server nginx reload
靜態網站部署 1、項目上傳至 git 倉庫把本地和服務端的 id-rsa.pub添加至 git
本地安裝 git ,創建并上傳項目到 git
服務端安裝 git sudo apt-get install git
服務端測試一下 clone 項目 git clone git@github.com:DoFind/test.git
2、配置 pm2 一鍵部署項目在本地項目下新增配置文件ecosystem.json 并配置
在服務端新建發布項目的文件夾 /www/test,粗暴給操作 test 的權限 sudo chmod 777 test
vi .bashrc 注釋一些代碼 source .bashrc
找到以下這幾行代碼注釋掉:
# If not running interactively, don"t do anything # case $- in # *i*);; # *)return;; # esac
接送一下項目(從 git 到 服務器) pm2 deploy ecosystem.json production setup
之后的項目更新重啟服務 pm2 deploy ecosystem.json production
// 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": "git@github.com: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" } } } }
我自己遇到的一個問題,無法訪問部署在阿里云上的站點:ERR_CONNECTION_TIMED_OUT。 網絡診斷的結果是 服務器 不接受 80 端口上的連接
解決:
ECS實例的安全組規則中添加 HTTP(80) ,順便把 HTTPS(443) 也加進來
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/19132.html
寫在最前 這是根據 imooc 上 Scott 老師的課程整理的,主要是方便自己查找,因為真的記不住... 附上鏈接:Node.js項目線上服務器部署與發布 靜態網站,需要數據庫的電影網站、公眾號,小程序,app 五種項目的部署。這里只寫最簡單的靜態網站的部署 部署思路 1、完成項目2、購買域名,備案,解析一些二級域名出來備用3、購買服務器 4、ssh 遠程登錄服務器 并進行一些安全配置5、服務...
摘要:本文將介紹如何在一臺的云服務器上快速部署博客站點,如何快速發布一篇博文并通過云服務器上的私有倉庫部署到服務器目錄下。此外,還要在云服務器上安裝和兩個必備的軟件包。在服務器上部署博客以下為文章正文。 推薦理由:Hexo 是用 Node.js 開發的一個靜態站點生成器(Static Site Generator),支持 Markdown 語法寫作,有著強大的插件系統,而且性能優異。下面我推...
摘要:本文整理自時速云線上微信群分享第十期本文主要包括的基本概念使用場景,以及如何在時速云平臺上進行的編排部署,希望對大家在進行微服務架構實踐時有所幫助。問關于提供訪問容器數據的能力,中包含一個業務和一個服務,時速云的控制臺可以進入到容器內部。 本文整理自【時速云線上微信群分享】第十期 本文主要包括Pod的基本概念、使用場景,以及如何在時速云平臺上進行Pod的編排部署,希望對大家在進行微服務...
摘要:測試后,使用來發布。部署軟件組件,啟動虛擬機,將虛擬機分類到和節點,然后部署密鑰清單。集群自動化集群配置由三個控制。自簽證書簽署的服務器端證書和它的密鑰文件。 我們之前聊了把OpenStack跑在K8S上,如何基于Kubernetes在TCP云端創建私有云解決方法,運用在生產或在OpenStack啟動虛擬化。今天換個姿勢,我們來看看如何在OpenStack虛擬機上運行Kubernete...
閱讀 1166·2021-11-22 15:22
閱讀 3837·2021-10-19 13:13
閱讀 3570·2021-10-08 10:05
閱讀 3292·2021-09-26 10:20
閱讀 2984·2019-08-29 14:21
閱讀 2192·2019-08-27 10:55
閱讀 1871·2019-08-26 10:31
閱讀 2578·2019-08-23 16:47