一、購買服務器並遠程連接
1.購買服務器和域名
可以選擇阿里雲或者是其他的廠商的服務器。然后會獲得服務器ip地址,用戶名和密碼。
購買域名,將域名綁定到ip地址上。
2.下載xshell,winscp
xshell和winscp都是可以用來操控服務器的,比如上傳上傳文件,修改文件權限等。
一個是有圖形化的操作,一個是用代碼操控。
我兩個都下了,因為我怕xsehll沒能操控好的地方,用可視化圖形來操控。
連接服務器
打開xshell
二、安裝node
參考這篇文章:https://blog.csdn.net/q3585914/article/details/75306447
1.首先切換到/usr/local/src 使用wget下載node文件
cd /usr/local/src wget https://nodejs.org/dist/v6.11.1/node-v6.11.1-linux-x64.tar.xz
如果不知道wget是什么,那就去node官網直接下載tar.xz后綴的文件到自己電腦。
node官網所有版本的下載地址:https://nodejs.org/en/download/releases/
打開winscp連接服務器,連接方式和xshell差不多。
找到root文件夾。把下載的tar.xz文件上傳上去。注意要下linux版本的。
2.解壓到當前文件夾
打開xsehll我們可以看到是一個撇的路徑這就是已經在root目錄下了。
注意:如果不是一個撇,通過直接cd回車就可以回到這個root目錄下。
不要輸入成cd / 變成這樣 。這個就不是在root目錄下了
解壓剛才上傳到服務端的文件:
tar xvf node-v6.11.1-linux-x64.tar.xz
3.創建軟鏈接,設置全局環境便令使node和npm命令全局有效。
通過創建軟鏈接的方法,使得在任意目錄下都可以直接使用node和npm命令:
ln -s /usr/local/src/node-v6.11.1-linux-x64/bin/node /usr/local/bin/node
ln -s /usr/local/src/node-v6.11.1-linux-x64/bin/npm /usr/local/bin/npm
node -v 查看node版本檢測是否安裝成功。
如果報如下錯誤:
bash node :command not found
那就需要設置全局環境變量:修改/etc/profile文件使其永久性生效,並對所有系統用戶生效。
vi /etc/profile
按鍵盤j字母移動到最下面一行加上:
export NODE_HOME=/usr/local/src/node-v10.15.0-linux-x64/bin
export PATH=$NODE_HOME:$PATH
然后保存退出,重啟,之后node、npm就配置好了
如果不會使用vi命令編輯文件,通過winscp將文件下載到本地,然后使用sublime,vs code等編輯器打開,不要直接記事本打開,編輯保存,上傳到服務端。
不要使用記事本直接打開,也不要只用winscp提供的編輯器打開編輯,會造成一些錯誤,下面會說到。
三、安裝mongodb
1.安裝
到官網下載,見官網有安裝說明。https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/
選擇社區版,以及選擇合適的linux版本。我的是centOS所以選擇了RedHat
安裝MongoDB
sudo yum install -y mongodb-org
取消自動升級
新版本出來yum會自動升級,添加以下代碼到/etc/yum.repos.d/mongodb-org-3.4.repo文件中
exclude=mongodb-org,mongodb-org-server,mongodb-org-shell,mongodb-org-mongos,mongodb-org-tools
下面是mongdb默認數據庫文件以及日志的指令位置
/var/lib/mongo
(the data directory)/var/log/mongodb
(the log directory)
開啟mongodb
sudo service mongod start
關閉MongoDB
sudo service mongod stop
重啟MongoDB.
sudo service mongod restart
四、配置mongoDB
創建用戶
否則不可以可以使用如mongoimport上傳數據等一些操作。
原因見:https://www.jianshu.com/p/1404b32432d0
創建一個頂級用戶,用於存放所有的用戶。
開啟mongodb服務:
sudo service mongod start
開啟數據庫:
mongo
創建admin數據庫:
use admin
建立一個超級用戶admin,命令如下:
db.createUser( { user: "admin", pwd: "admin", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } );
建立針對某個數據庫的用戶
admin雖然是超級管理員,但是對具體的數據庫,還是需要有對應的用戶,用戶是和數據庫走的,因此還需要建立ta數據庫的用戶。
use ta
//使用數據庫,需要注意的是在建立ta數據庫用戶的時候一定要先啟用ta數據庫,否則會出現問題。
db.createUser({user:'test1',pwd:'test1',roles:[{role:'readWrite',db:'ymall'}]})
開啟數據庫權限:
編輯配置文件: vi /etc/mongod.conf
添加以下:
security:
authorization: enabled
保存並重新啟動。
如下錯誤:是因為我們添加security:authorization: enabled的時候格式沒有寫對,多試試格式。
ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=2)
重啟mongod:
systemctl restart mongod.service
啟用 db.auth(用戶名,密碼),認證登錄,認證登錄使用數據庫:
db.auth('admin', 'admin123') 返回1表示成功
再次執行show dbs
啟用ta數據庫,查看該數據庫集合:
執行 db.auth('test1','test1') 然后再對ta數據庫進行相應的操作。
將winscp上傳到服務器中的數據導入到數據庫中
mongoimport --host=127.0.0.1 --port 27017 -u 用戶名 -p 密碼 -d ymall -c users --file /home/web-shop/models/mall-users
四、安裝nginx
下載: yum install nginx
開啟nginx服務:systemctl start nginx
要關閉防火牆
查看防火牆狀態 firewall-cmd --state
停止firewall systemctl stop firewalld.service
禁止firewall開機啟動 systemctl disable firewalld.service
五、pm2
npm install -g pm2
查詢pm2的安裝路徑 顯示是: /usr/local/bin/pm2
whereis pm2
為了可以在任何目錄都可以使用pm2命令,我們將此文件夾加入環境變量
ln -s /usr/local/bin/pm2 /usr/local/bin
六、部署自己代碼
參考鏈接:
https://blog.csdn.net/u014054437/article/details/79981307
https://segmentfault.com/a/1190000012186563
上傳項目文件夾:
我選擇了服務器中home目錄下將自己之前編寫的node服務端代碼server文件j夾,以及前端的packages.json一起上傳。
server文件夾重命名為vue-project。
上傳vue文件
npm run build后會生成的dist文件夾,將里面所有文件都拷貝到vue-project下的public目錄。
為什么拷貝到public文件夾下呢?
因為自己node使用express框架,並用express-generator生成了項目結構。其中app.js設置了express解析的靜態資源路徑:
app.use(express.static(path.join(__dirname, 'public')));
也可以是直接將dist文件夾直接上傳vue-project。修改app.js
app.use(express.static(path.join(__dirname, 'dist')));
npm install 安裝依賴包
開啟node服務 node /bin/www,或者是pm2 /bin/www
修改nginx配置
修改配置文件:vi /etc/nginx/nginx.conf
在http{}里添加一個server{}
server { listen 80; server_name aa.xxxx.com; //自己的一級或者是二級域名 location / { root /home/vue-project/public; //app.js中配置的靜態資源路徑文件夾 index index.html index.htm; //主頁入口文件 proxy_set_header Host $http_host; proxy_pass http://127.0.0.1:5000; //開啟的node項目的端口號 proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
保存重啟nginx
systemctl restart nginx.service
關於nginx的報錯
檢查修改的配置文件是否有錯:nginx -t -c /etc/nginx/nginx.conf
報錯:nginx: [emerg] unknown directive "#" in nginx/conf/nginx.conf:5
原文鏈接:
https://blog.csdn.net/dafei4/article/details/86562399
https://www.cnblogs.com/djlele/p/6991683.html
https://www.cnblogs.com/jstarseven/p/4683679.html
訪問網站
保證mongdb,nginx,node開啟,防火牆關閉。
輸入域名就可以訪問了。
多頁面的配置
自己也寫了一個多頁面,不過使用了xtpl作為模板。
所有的步驟都是一樣的,僅在niginx中添加配置的server的時候,有點不同local中不用配置root和 index屬性就可以訪問到了。不過自己也沒有深究,先占坑吧。
server { listen 80; server_name xxxx.com www.xxxx.com; location / { proxy_set_header Host $http_host; proxy_pass http://127.0.0.1:3000; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
最后
自己也是小白,里面有錯誤之處還請指正。
mongdb添加用戶開啟權限訪問的部分的內容是自己以前看到,然后保存在word里沒有記錄原鏈接。還是向原作者表示感謝。