伺服器部署過程(node相關)

dark_91發表於2018-09-07

伺服器部署過程

步驟

  1. 購買自己的域名
  2. 域名備案
  3. 購買伺服器
  4. 配置伺服器應用環境
  5. 專案遠端部署和釋出與更新

購買域名

  1. 騰訊雲
  2. 阿里雲
  3. 百度雲
  4. 愛名網
  5. godaddy

雲主機

  1. 阿里雲 ECS
  2. 亞馬遜 AWS
  3. 百度雲

備案

  1. 阿里雲備案
  2. 備案服務號管理

登入伺服器(以阿里云為例子)

連線伺服器

ssh root@60.205.231.190
複製程式碼

ssh無密碼登入

  1. 在自己的電腦上生成私鑰和公鑰
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
//-t 指定是rsa演算法
//-b 指定公鑰和私鑰的大小,這裡是四個位元組,越大安全,效能也就越差
//-C 指定郵箱
//會在~/.ssh目錄下面生成id_rsa和id_rsa.pub檔案,公鑰可以給別人,但是私鑰一定不能給別人
複製程式碼
  1. ssh加密解密比較慢,客戶端可以開啟ssh代理,加快速度
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa
複製程式碼
  1. 伺服器配置
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
eval "$(ssh-agent -s)"//開啟ssh代理服務,加快解密速度
ssh-add ~/.ssh/id_rsa
複製程式碼
  1. 把本地的公鑰上傳到伺服器授權檔案中
//1. 在伺服器.ssh目錄下新建授權檔案
vi ~/.ssh/authorized_keys
//2. 將本地的公鑰id_rsa.pub檔案內容拷貝到伺服器授權檔案中
複製程式碼
  1. 執行完以上步驟,在執行以下ssh登入就不需要密碼登入了
ssh root@60.205.231.190
複製程式碼

增加ssh連線伺服器安全等級

  1. 修改/etc/ssh/sshd_config 這個檔案
vi /etc/ssh/sshd_config
// Port 2222 預設ssh的預設埠是22,我們將他改成2222
//PermitRootLogin yes 預設為yes,改為no, 使用者就不能以root使用者登入了
//PasswordAuthentication yes 預設為yes, 可以密碼登入,改為no, 使用者就不能以密碼登入了,只能以公鑰和私鑰的形式登入
複製程式碼
  1. 重啟ssh
systemctl restart sshd.service
複製程式碼
  1. 此時再以22埠登入的話就報錯了
ssh: connect to host 60.205.231.190 port 22: Connection refused
複製程式碼
  1. 正確的登入方式
ssh -p 2222 root@60.205.231.190
複製程式碼

安裝部署需要的其他軟體

yum install wget curl git
複製程式碼

安裝node

//1. 安裝nvm
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
//2. 安裝node指定版本
nvm install 8.11.3
//3. 使用指定版本
nvm use 8.11.3
//4. 檢視node版本
node -v
//5. 用cnpm替換npm提高下載模組速度
npm i cnpm -g
複製程式碼

編寫node程式

vi ~/node/demo.js
...
const http = require('http');
const hostname='60.205.231.190';
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-type', 'text/plain');
  res.end('hello world');
})

server.listen(port, hostname, ()=>{
  console.log(`Server running at http://${hostname}:${port}`);
})
...
node demo.js
//位址列輸入http://60.205.231.190:3000/程式既可跑起來了
複製程式碼

安裝pm2

//全域性安裝
npm install pm2 -g
//啟動一個專案
pm2 start app.js --name 'demo'
//檢視這個專案的詳細資訊
pm2 show demo
//刪除該專案
pm2 delete demo
//檢視pm2當前啟動的專案
pm2 list
複製程式碼

安裝nginx 參考更多nginx

  1. 安裝
//安裝nginx依賴環境
yum install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel -y
cd ~ && mkdir source && cd source
wget http://nginx.org/download/nginx-1.12.0.tar.gz
tar zxvf nginx-1.12.0.tar.gz
cd nginx-1.12.0
//生成makefile檔案
./configure
make && make install
複製程式碼
  1. 將nginx新增到環境變數
ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/nginx
複製程式碼

ps: 上面語法是為nginx建立一個軟連線, 具體語法是ln -s 原始檔 目標檔案,要寫成絕對路徑

  1. nginx 相關命令
//啟動
nginx 
//檢查nginx配置是否錯誤
nginx -t
//重啟nginx
nginx -s reload
//關閉nginx
nginx -s stop
複製程式碼

安裝mysql

cd ~/source
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
sudo rpm -Uvh mysql57-community-release-el7-11.noarch.rpm
yum repolist all | grep mysql
sudo yum install mysql-community-server -y
//開啟mysql服務
sudo systemctl start mysqld.service
//檢視mysql服務狀態
sudo systemctl status mysqld.service
//檢視mysql臨時登入密碼
sudo grep 'temporary password' /var/log/mysqld.log
mysql -uroot -p + 臨時的密碼
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Admin!888';
//開啟遠端連線
use mysql;
select Host, User from user;
//第一個root表示使用者名稱,%表示所有的電腦都可以連線,也可以設定某個ip地址執行連線,BY後面的字串表示密碼).表示任何資料庫都可以被訪問 %表示任意的ip都可以訪問,這句話的意思表示允許資料庫被任何主機以root使用者以Credan!888(遠端連線的密碼,不是本地訪問的密碼)密碼進行訪問
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Admin!888' WITH GRANT OPTION;
//重新整理授權
flush privileges;
複製程式碼

安裝mongod

安裝

curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz 
tar -zxvf mongodb-linux-x86_64-3.0.6.tgz  
mv  mongodb-linux-x86_64-3.0.6/ /usr/local/mongodb 
//新增到環境變數,加入到~/.bash_profile檔案裡面
export PATH=/usr/local/mongodb/bin:$PATH 
source ~/.bash_profile 
mkdir -p /data/db
複製程式碼

以守護程式的方式執行

  1. 在/usr/local/mongodb下面新建mongod.conf
port= 27017
fork=true
master=true
logpath=/data/mongo/27017/mongo.log
logappend=true
dbpath=/data/db
#auth=true #是否開啟授權
複製程式碼

ps: 一定要提前把所需要的檔案建好 2. 執行mongod -f /usr/local/mongodb/mongod.conf執行

設定密碼

  1. show dbs 新版Mongodb沒有admin資料庫,但是不妨礙下面的操作
  2. use admin 進入admin資料庫
  3. db.createUser({user:"admin", pwd:"admin888", roles:[{role:"userAdminAnyDatabase", db:"admin"}]})
    • 改命令是建立是管理員賬號
    • mongodb中的身份是基於roles的, user是使用者名稱,pwd是使用者民對應的密碼,userAdminAnyDatabase表示該使用者可以操作任何資料庫
  4. db.auth("credan", "Credan!88") 驗證使用者是否新增成功,返回1表示新增成功
  5. 修改上面mongod.conf配置檔案 將auth=true開啟,並且重啟mongod
  6. 用上面建立好的admin賬號,建立其他賬號
    • use admin
    • db.auth("admin", "admin888")
    • use yourdatabase
    • db.createUser({ user: "youruser", pwd: "yourpassword", roles: [{ role: "dbOwner", db: "yourdatabase" }] })
  7. 本地通過robo 3T 連結伺服器mongo
    image.png

相關文章