伺服器部署過程
步驟
- 購買自己的域名
- 域名備案
- 購買伺服器
- 配置伺服器應用環境
- 專案遠端部署和釋出與更新
購買域名
雲主機
備案
登入伺服器(以阿里云為例子)
連線伺服器
ssh root@60.205.231.190
複製程式碼
ssh無密碼登入
- 在自己的電腦上生成私鑰和公鑰
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
//-t 指定是rsa演算法
//-b 指定公鑰和私鑰的大小,這裡是四個位元組,越大安全,效能也就越差
//-C 指定郵箱
//會在~/.ssh目錄下面生成id_rsa和id_rsa.pub檔案,公鑰可以給別人,但是私鑰一定不能給別人
複製程式碼
- ssh加密解密比較慢,客戶端可以開啟ssh代理,加快速度
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa
複製程式碼
- 伺服器配置
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
eval "$(ssh-agent -s)"//開啟ssh代理服務,加快解密速度
ssh-add ~/.ssh/id_rsa
複製程式碼
- 把本地的公鑰上傳到伺服器授權檔案中
//1. 在伺服器.ssh目錄下新建授權檔案
vi ~/.ssh/authorized_keys
//2. 將本地的公鑰id_rsa.pub檔案內容拷貝到伺服器授權檔案中
複製程式碼
- 執行完以上步驟,在執行以下ssh登入就不需要密碼登入了
ssh root@60.205.231.190
複製程式碼
增加ssh連線伺服器安全等級
- 修改/etc/ssh/sshd_config 這個檔案
vi /etc/ssh/sshd_config
// Port 2222 預設ssh的預設埠是22,我們將他改成2222
//PermitRootLogin yes 預設為yes,改為no, 使用者就不能以root使用者登入了
//PasswordAuthentication yes 預設為yes, 可以密碼登入,改為no, 使用者就不能以密碼登入了,只能以公鑰和私鑰的形式登入
複製程式碼
- 重啟ssh
systemctl restart sshd.service
複製程式碼
- 此時再以22埠登入的話就報錯了
ssh: connect to host 60.205.231.190 port 22: Connection refused
複製程式碼
- 正確的登入方式
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
- 安裝
//安裝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
複製程式碼
- 將nginx新增到環境變數
ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/nginx
複製程式碼
ps: 上面語法是為nginx建立一個軟連線,
具體語法是ln -s 原始檔 目標檔案
,要寫成絕對路徑
- 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
複製程式碼
以守護程式的方式執行
- 在/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
執行
設定密碼
show dbs
新版Mongodb沒有admin資料庫,但是不妨礙下面的操作use admin
進入admin資料庫db.createUser({user:"admin", pwd:"admin888", roles:[{role:"userAdminAnyDatabase", db:"admin"}]})
- 改命令是建立是管理員賬號
- mongodb中的身份是基於roles的, user是使用者名稱,pwd是使用者民對應的密碼,userAdminAnyDatabase表示該使用者可以操作任何資料庫
db.auth("credan", "Credan!88")
驗證使用者是否新增成功,返回1表示新增成功- 修改上面mongod.conf配置檔案 將
auth=true
開啟,並且重啟mongod - 用上面建立好的admin賬號,建立其他賬號
- use admin
- db.auth("admin", "admin888")
- use yourdatabase
- db.createUser({ user: "youruser", pwd: "yourpassword", roles: [{ role: "dbOwner", db: "yourdatabase" }] })
- 本地通過robo 3T 連結伺服器mongo