摘要:感謝老師,老師的慕課網(wǎng)教程購買阿里云服務(wù)器及域名終端連接阿里云服務(wù)器環(huán)境輸入密碼購買時(shí)的密碼如果出現(xiàn)這個(gè)問題的解決方案解決方法查看硬盤掛在情況如果有數(shù)據(jù)盤的情況下查看硬盤使用情況通過設(shè)置快捷登錄權(quán)限,可以增加幾個(gè)擁有權(quán)限的用戶下查
感謝 Scott 老師,Scott老師的慕課網(wǎng)教程 https://coding.imooc.com/clas...1. 購買阿里云服務(wù)器及域名 2. 終端連接阿里云服務(wù)器(mac環(huán)境)
ssh root@39...* 輸入密碼(購買時(shí)的密碼)
如果出現(xiàn)這個(gè)問題的解決方案:root@39.106.220*.*: Permission denied (publickey,gssapi-keyex,gssapi-with-mic)
解決方法: https://blog.csdn.net/gigijin...
查看硬盤掛在情況:fdisk -l (如果有數(shù)據(jù)盤的情況下)
查看硬盤使用情況 df -h
通過zsh設(shè)置快捷登錄 alias ssh_orange="ssh root@39.106.22*.*"
root 權(quán)限,可以增加幾個(gè)擁有root權(quán)限的用戶
https://www.cnblogs.com/wang3...
adduser [name]
Linux下 ssh 查看用戶列表
復(fù)雜:cat /etc/passwd
簡化:cat /etc/passwd|grep -v nologin|grep -v halt|grep -v shutdown|awk -F":" "{ print $1"|"$3"|"$4 }"|more
刪除用戶: userdel orange001 直接刪除就好
給新用戶 orange01 設(shè)置密碼 passwd orange01 根據(jù)提示填寫兩次密碼
給新用戶升級權(quán)限 gpasswd -a orange001 sudo
(centos 環(huán)境)
配置用戶權(quán)限: 修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示: ## Allow root to run any commands anywhere root ALL=(ALL) ALL orange01 ALL=(ALL) ALL 修改完畢,現(xiàn)在可以用 orange01 帳號(hào)登錄,然后用命令 su - ,即可獲得root權(quán)限進(jìn)行操作。 :wq! 保存退出
重啟ssh 烏班圖上 srevice ssh restart centos7 命令:systemctl restart sshd.service或 service sshd restart
ssh 實(shí)現(xiàn)無密碼登錄
本地操作: 本地生成 ssh key: ssh-keygen -t rsa -b 4096 -C "326242499.@qq.com" 同 git 操作一樣 開啟 ssh 代理 eval "$(ssh-agent -s)" 把ssh key 假如到代理中 ssh-add ~/.ssh/id_rsa (在 .ssh 目錄下執(zhí)行這一操作) 遠(yuǎn)程主機(jī)操作: 再把上面本地操作的步驟重復(fù)一遍 然后生成 authorized_keys 文件: vi .ssh/authorized_keys 然后將本地的公鑰的內(nèi)容 (~/.ssh/id_rsa.pub) 拷貝到遠(yuǎn)程主機(jī)的 authorized_keys 文件內(nèi) 授權(quán) chmod 600 authorized_keys 重啟遠(yuǎn)程主機(jī) sudo service ssh restart(烏班圖) systemctl restart sshd.service 或 service sshd restart (centos7) 做完這些步驟就可以ssh免密登錄遠(yuǎn)程主機(jī)了
端口安全性
ssh 默認(rèn)登錄端口 22
在 root 賬戶下修改默認(rèn)登錄端口號(hào)
centos7 修改默認(rèn)22端口 https://www.cnblogs.com/zhuzi8849/p/6254498.html
不知道為什么我修改完之后 ssh -p 3600 root@39.**.**.* 登錄連接超時(shí) (未設(shè)置成功)
配置安全項(xiàng)、防火墻(iptables) --- 未做
3. 搭建nodejs環(huán)境更新:sudo yum update 或者 sudo yum upgrade (這個(gè)會(huì)報(bào)錯(cuò))
安裝: sudo yum install vim openssl build-essential libssl-dev wget curl git
安裝:nvm wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
安裝完之后 nvm --version 檢查下是否安裝成功 安裝 node: nvm install v8.11.3
好像下面兩步都不用做了 ,自動(dòng)做好了
nvm use v8.10.0 nvm 指定使用的 node 的版本
nvm alias default v8.10.0 設(shè)置 node 默認(rèn)使用版本
設(shè)置淘寶鏡像 npm --registry=https://registry.npm.taobao.org install -g npm
配置 cnpm npm --registry=https://registry.npm.taobao.org install -g cnpm
cnpm sync koa 同步 npm 上的模塊
增加系統(tǒng)文件監(jiān)控?cái)?shù)目 echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p (不知道是做什么)
全局安裝 pm2 npm install -g pm2
開啟一個(gè)靜態(tài)站點(diǎn)
pm2 是一個(gè) node.js 部署和進(jìn)程管理工具,通過它可以實(shí)現(xiàn) node.js 后臺(tái)運(yùn)行(不是向上邊那樣關(guān)閉命令行服務(wù)就沒了)和出錯(cuò)自動(dòng)重啟
pm2 運(yùn)維 node 服務(wù)本身
運(yùn)行 pm2 start app.js 即可運(yùn)行 node 服務(wù)
pm2 list 列出當(dāng)前運(yùn)行的 pm2-node 服務(wù)
pm2 show [App name|id] 查看詳細(xì)信息
pm2 log app 查看實(shí)時(shí)日志
退出 log ctrl + c
出現(xiàn)的問題: 無法使用 80 端口以外的端口開啟服務(wù)(會(huì)不會(huì)centos默認(rèn)只對外暴露 80 端口)
4. nginx 實(shí)現(xiàn)反向代理通過對80端口的監(jiān)聽,將80端口的流量轉(zhuǎn)發(fā)到其他端口
讓web通過 80 端口被外網(wǎng)訪問
只有 root 權(quán)限的用戶才能使用 80 端口
服務(wù)器有多個(gè)網(wǎng)站 可以通過 nginx 代理 80端口,轉(zhuǎn)發(fā)給 特定的端口,實(shí)現(xiàn)負(fù)載均衡
刪除自帶的 阿帕奇服務(wù),我的阿里云輕量服務(wù)器上好像并沒有找到 httpd 包
安裝 nginx下載好就行,不要再往下進(jìn)行
進(jìn)入 /etc/nginx/conf.d 目錄下,然后創(chuàng)建配置文件
配置文件:一個(gè)服務(wù)一個(gè)配置文件microblog-yao-3002.conf 命名規(guī)則:域名 + 端口
# 考慮負(fù)載均衡策略 upstream microblog { server 127.0.0.1:3002; // 本地node服務(wù) } server { listen 80; server_name code-sky.cn; // 域名 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://microblog; // 把域名代理到應(yīng)用上 proxy_redirect off; } } 檢查 nginx/nginx.conf 配置文件 去掉 include 注釋 include /etc/nginx/conf.d/*.conf; 這句在 nginx.conf 必須要在 http 里面 server 外面 sudo nginx -t 檢查 nginx 配置文件是否正確 nginx 重啟 sudo nginx -s reload 隱藏 nginx 版本 nginx.conf http 設(shè)置 server_tokens off;
nginx 對 css,js 靜態(tài)資源的處理(可讓瀏覽器緩存靜態(tài)資源)
# 在多帶帶應(yīng)用的nginx配置里,放在server里面同 location同級 # 對靜態(tài)資源的處理 location ~* ^.+.(jpg|jpeg|gif|png|ico|css|js|pdf|txt) { root /www/blog/production/current/admin/dist/; } # 開啟gizp壓縮 # new config lines for gzip gzip on; gzip_min_length 1k; gzip_buffers 4 8k; gzip_http_version 1.1; gzip_types text/plain application/javascript application/x-javascript text/javascript text/css;
nginx 轉(zhuǎn)發(fā)配置(用 80端口代理,然后分發(fā)到不同的服務(wù)上)學(xué)習(xí)連接
5. 域名備案與DNS解析一個(gè)域名只能指向一個(gè) ip 地址,一個(gè) ip地址可以被多個(gè)域名指向
域名記錄:A記錄 將一個(gè)域名指向到一個(gè)服務(wù)器的 ip地址
CNAME 將一個(gè)域名指向另一個(gè)域名
解析域名:阿里云域名控制臺(tái)-云解析DNS-添加記錄 根據(jù)提示設(shè)置域名及二級域名
6. 安裝 mongoDB 數(shù)據(jù)庫在服務(wù)器上搭建 MongoDB數(shù)據(jù)庫(一般情況下,數(shù)據(jù)應(yīng)該與應(yīng)用分開,自己學(xué)習(xí)就無所謂了)homebrew 本地安裝 MongoDB數(shù)據(jù)庫
安裝 homebrew
brew 安裝本地mongoDB數(shù)據(jù)庫 brew install mongodb brew安裝MongoDB
啟動(dòng)mongodb服務(wù):終端執(zhí)行: brew services start mongodb
使用brew 默認(rèn)下載地址為 /usr/local/Cellar/ 下的 mongodb文件夾。
To have launchd start mongodb now and restart at login:服務(wù)器安裝 MongoDB數(shù)據(jù)庫(centos環(huán)境)
brew services start mongodb
Or, if you don"t want/need a background service you can just run:
mongod --config /usr/local/etc/mongod.conf
安裝mongodb-1
安裝mongodb-2
mongoDB操作
啟動(dòng)報(bào)錯(cuò)處理 mongod -repair 啟動(dòng)mongodb systemctl start mongod.service or service mongod start 重啟mongodb systemctl restart mongod.service or service mongod restart 停止mongodb systemctl stop mongod.service or service mongod stop 查看mongodb狀態(tài) systemctl status mongod.service 登錄 mongo 查看數(shù)據(jù)庫 show dbs
修改 mongodb 默認(rèn)連接端口號(hào)
sudo vi /etc/mongod.conf # port: 27017 # 將端口號(hào)修改為 19999 port: 19999 bindIp: 127.0.0.1 # Listen to local interface only, comment to listen on all interfaces. 修改完端口 重啟mongodb sudo service mongod restart 指定端口連接 指定端口連接 mongodb mongo --port 19999 注意:如果設(shè)置了防火墻,要將防火墻更新
mongodump -h 127.0.0.1:27017 -d test2 -o microblog
test2 數(shù)據(jù)庫名稱 microblog 備份文件夾名稱
打包 tar zcvf microblog.tar.gz microblog
前面:打包后的文件名稱 后面:打包前的文件夾
上傳 scp -p 80 ./microblog.tar.gz root@39.106.220.6:/root/dbmicroblog
-p 服務(wù)器端口 本地tar包位置 服務(wù)器地址 服務(wù)器存放 tar 包的位置
對服務(wù)器上的 tar 包進(jìn)行解壓縮 tar -xzvf microblog.tar.gz
tar 命令: 壓縮文件:tar -czvf test.tar.gz a.c // 壓縮 a.c 文件為 test.tar.gz 解壓文件:tar -xzvf test.tar.gz a.c // 解壓 test.tar.gz 為 a.c
將這個(gè) test2 數(shù)據(jù)庫導(dǎo)入到線上剛剛配置完端口的數(shù)據(jù)庫
mongorestore --host 127.0.0.1:19999 -d test2 ./test2
前面test2 線上數(shù)據(jù)庫的名稱
后面 ./ test2 線上備份數(shù)據(jù)庫存儲(chǔ)的位置
查看是否導(dǎo)入成功
mongo --port 19999 show dbs 查看數(shù)據(jù)庫 use test2 進(jìn)入test2數(shù)據(jù)庫 show tables 查看test2數(shù)據(jù)庫中的表 db.user.find({}) 查看表中的數(shù)據(jù)
導(dǎo)入到線上已有的數(shù)據(jù)庫,導(dǎo)入一張或多張單表
本地導(dǎo)出單表 mongoexport -d immoc-movie -c users -q "{"name": {$ne: null}}" -o ./movie-users.json -d immoc-movie 數(shù)據(jù)庫名稱 -c users 要導(dǎo)出的表 -q 可選 查詢條件 -o 導(dǎo)出文件在本地存放的位置 將該單表 scp 上傳到服務(wù)器 將該單表導(dǎo)入到 線上數(shù)據(jù)庫 mongoimport --host 127.0.0.1:19999 -d immoc-movie -c users ./movie-users.json 建議導(dǎo)入初始化數(shù)據(jù)時(shí)在配置數(shù)據(jù)庫權(quán)限之前,不然輸入的命令會(huì)麻煩很多,輸入各種命令 刪掉數(shù)據(jù)庫 mongo --host 127.0.0.1:19999 immoc-movie --eval "db.dropDatabase()"
mongod 打開mongoDB 服務(wù)
mongo 打開 mongoDB客戶端
brew services start mongodb
為數(shù)據(jù)庫設(shè)置用戶權(quán)限 設(shè)置 添加mongoDB管理員 use admin db.createUser({user: "orange", pwd: "yao1024", roles: [{role: "userAdminAnyDatabase", db: "admin"}]}) 每次對不同數(shù)據(jù)庫創(chuàng)建管理員都需要到 admin 去認(rèn)證 對用戶進(jìn)行登錄授權(quán) use admin db.auth("orange", "yao1024") 切換到 test2 use test2 創(chuàng)建讀寫權(quán)限用戶 db.createUser({user: "microblog", pwd: "microblog", roles: [{role: "readWrite", db: "test2"}]}) 創(chuàng)建備份角色 db.createUser({user: "wheel", pwd: "wheel", roles: [{role: "read", db: "test2"}]}) 修改配置文件開啟mongoDB驗(yàn)證模式 sudo vi /etc/mongod.conf # security: 將 #去掉 authorization: "enable" (兩個(gè)空格) 重啟 mongoDB 讓配置生效 sudo service mongod restart 重新登錄 mongo --port 19999 show dbs 就會(huì)報(bào)錯(cuò) use admin db.auth("orange", "yao1024") 直接登錄某個(gè)數(shù)據(jù)庫 mongo 127.0.0.1:19999/test2 -u microblog -p microblog 數(shù)據(jù)庫名 用戶名 密碼
遷移數(shù)據(jù)庫、遷移數(shù)據(jù)庫的一張單表 先將 庫或單表導(dǎo)出到服務(wù)器的某個(gè)目錄里,然后 tar 打包 用 scp -P 80 root@xx.xx.xx:/root/db/microblog.tar.gz 然后再把這個(gè)包上傳到另一臺(tái)服務(wù)器上 線上生產(chǎn)數(shù)據(jù)庫定時(shí)備份(上傳到云平臺(tái))7. 代碼部署
pm2,git倉庫 自動(dòng)部署項(xiàng)目
創(chuàng)建一個(gè)新項(xiàng)目第一次時(shí): pm2 deploy ecosystem.json production setup
接下來部署代碼部署代碼 pm2 deploy ecosystem.json production
pm2文檔
1. 服務(wù)器安裝 git,(和本地安裝git一樣,配置 rsa_pub 等文件,可以實(shí)現(xiàn)免密) 2. 本地代碼上傳到代碼倉庫 3. 服務(wù)器拉取代碼倉庫代碼 4. 在項(xiàng)目根目錄創(chuàng)建 pm2 自動(dòng)部署文件 ecosystem.json,編輯部署文件內(nèi)容 5. 在服務(wù)器根目錄上新建 /www 目錄,與 pm2 配置文件映射起來 6. 在本地執(zhí)行 pm2 deploy ecosystem.json production setup 即可成功部署 7. 可能部署失敗的原因:賬號(hào)權(quán)限不夠,服務(wù)器 www 文件不存在 部署的 user 用戶必須要有創(chuàng)建文件夾的權(quán)限 原理:通過本地 pm2 登錄遠(yuǎn)程服務(wù)器,通知遠(yuǎn)程服務(wù)器從代碼倉庫拉取代碼到部署目錄 8. pm2 在服務(wù)器上使用的是 非交互 ssh 連接方式,需要注釋 .bashec 文件內(nèi)容 (我的centos 沒找到那兩句,所以什么也沒做) 9. 將 代碼倉庫更新,確保 ecosystem.json 存在于 /www/production/current 目錄里 10. 執(zhí)行 pm2 deploy ecosystem.json production 部署成功,即發(fā)布成功 11. 修改 nginx 配置文件 創(chuàng)建3000端口的 conf 問題:如何開啟兩個(gè)端口共存,防火墻允許3000端口訪問,還是申請個(gè)域名吧 12. 代碼更新 pm2 deploy 的 HEAD 指向不了最新的提交,還是指向上次的提交 解決方法:需要在 pm2 配置文件中多加一行配置 "post-deploy": "git pull && npm install && pm2 startOrRestart ecosystem.json --env production", 13. 如果數(shù)據(jù)庫設(shè)置了用戶權(quán)限:代碼里連接數(shù)據(jù)庫要以 14. 如果沒有域名,怎么在 nginx 配置映射二級域名,有 二級 ip地址之說嗎? 不要搞了,還是備案域名吧8. 配置HTTPS 協(xié)議
騰訊云申請免費(fèi) SSL 證書(亞洲誠信DV SSL證書)
SSL證書管理頁面 -> 申請證書 -> 填入信息 -> 手動(dòng)DNS 驗(yàn)證 -> 驗(yàn)證成功之后會(huì)得到一條記錄包括(主機(jī)記錄 記錄類型(CNAME) 記錄值)-> 在阿里云域名管理后臺(tái)新添加一條記錄(將剛才得到驗(yàn)證記錄填寫進(jìn)去)-> 填寫生效后,證書就頒發(fā)好了 參考鏈接
將下載好的 SSL 證書上(Nginx目錄下)傳到 服務(wù)器上 scp -p 80 ./admin.code-sky.cn/Nginx/2_admin.code-sky.cn.key root@39.106.220.6:/root scp -p 80 ./admin.code-sky.cn/Nginx/1_admin.code-sky.cn_bundle.crt root@39.106.220.6:/root
將上傳好的文件放到 一個(gè)名為 ssl 的文件夾,然后將 ssl 文件夾移動(dòng)到 /www 目錄下
修改 nginx 配置文件
upstream admin { server 127.0.0.1:3003; } server { listen 80; server_name admin.code-sky.cn; # rewrite ^(.*) https://$host$1 permanent; return 301 https://admin.code-sky.cn$request_uri; } server { listen 443; server_name admin.code-sky.cn; #填寫綁定證書的域名 ssl on; ssl_certificate /www/ssl/1_admin.code-sky.cn_bundle.crt; ssl_certificate_key /www/ssl/2_admin.code-sky.cn.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照這個(gè)協(xié)議配置 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照這個(gè)套件配置 ssl_prefer_server_ciphers on; if ($ssl_protocol = "") { rewrite ^(.*) https://$host$1 permanent; } 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://admin; proxy_redirect off; } location ~* ^.+.(jpg|jpeg|gif|png|ico|css|js|pdf|txt) { root /www/blog/production/current/admin/dist/; } # new config lines for gzip gzip on; gzip_min_length 1k; gzip_buffers 4 8k; gzip_http_version 1.1; gzip_types text/plain application/javascript application/x-javascript text/javascript text/css; }
檢查 nginx 文件配置是否正確 sudo nginx -t
重啟nginx sudo nginx -s reload 即完成 https 配置
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/19428.html
摘要:感謝老師,老師的慕課網(wǎng)教程購買阿里云服務(wù)器及域名終端連接阿里云服務(wù)器環(huán)境輸入密碼購買時(shí)的密碼如果出現(xiàn)這個(gè)問題的解決方案解決方法查看硬盤掛在情況如果有數(shù)據(jù)盤的情況下查看硬盤使用情況通過設(shè)置快捷登錄權(quán)限,可以增加幾個(gè)擁有權(quán)限的用戶下查 感謝 Scott 老師,Scott老師的慕課網(wǎng)教程 https://coding.imooc.com/clas... 1. 購買阿里云服務(wù)器及域名 2. ...
摘要:還有需要配置安全組,在阿里云控制臺(tái)中進(jìn)行配置,添加和端口,才能夠訪問到線上服務(wù)器。 在搭建web全棧的過程中,最令我頭疼的就是項(xiàng)目的部署與上線,這個(gè)過程雖然簡單,但是對于全棧菜鳥的我來說真的是個(gè)大坑,但是我還是去嘗試,終于通過各種文檔、請教與實(shí)踐中完成了線上部署,在此做一下記錄與總結(jié) 一、購買服務(wù)器 服務(wù)器選擇:服務(wù)器的品牌有很多,如亞馬遜、阿里云、騰訊等等,各大廠商之間的產(chǎn)品、服務(wù)...
摘要:前言之前做的幾個(gè)項(xiàng)目都托管在阿里云服務(wù)器,但是最近要到期了。環(huán)境部署折騰了一天,其中也遇到幾個(gè)坑。項(xiàng)目遷移歷時(shí)一天,兩臺(tái)服務(wù)器的系統(tǒng)都是位。 前言 之前做的幾個(gè)項(xiàng)目都托管在阿里云服務(wù)器,但是最近要到期了。想著到底要不要續(xù)期,畢竟100/月。后面看著阿里云有個(gè)活動(dòng),800/三年。果斷買下。環(huán)境部署折騰了一天,其中也遇到幾個(gè)坑。 目錄 一、安裝環(huán)境 1.1 安裝NodeJS環(huán)境 ...
摘要:前言本文講解的是做為前端開發(fā)人員,對服務(wù)器的了解還是小白的我,是如何一步步將項(xiàng)目部署在阿里云的服務(wù)器上,并進(jìn)行性能優(yōu)化,達(dá)到頁面秒內(nèi)看到,秒內(nèi)看到首屏內(nèi)容的。搭建的項(xiàng)目是采用了主流的前后端分離思想的,這里只講服務(wù)器環(huán)境搭建與性能優(yōu)化。 showImg(https://segmentfault.com/img/remote/1460000017143281); 前言 本文講解的是:做為前...
閱讀 1619·2021-09-23 11:31
閱讀 930·2021-09-23 11:22
閱讀 1354·2021-09-22 15:41
閱讀 4087·2021-09-03 10:28
閱讀 2923·2019-08-30 15:55
閱讀 3550·2019-08-30 15:55
閱讀 1969·2019-08-30 15:44
閱讀 2731·2019-08-30 13:50