1. 程式人生 > >React + Node.js + Mysql專案部署到阿里雲輕量級應用伺服器

React + Node.js + Mysql專案部署到阿里雲輕量級應用伺服器

一、安裝Mysql,可外網訪問

1. 更新系統 【在root使用者下】

apt-get update

2.安裝Mysql-server

apt-get install mysql-server
apt-get isntall mysql-client
apt-get install libmysqlclient-dev

注:若是安裝出現問題,參考部落格:點選開啟連結,當然我在安裝的時候沒有出現任何問題,祝各位也一切順利!

3.查詢是否安裝成功

netstat -tap | grep mysql

4.使用客戶端遠端連結

預設情況下,不能用客戶端遠端連線的,阿里雲提供的help.docx裡面做了設定說明,mysql密碼預設存放在/alidata/account.log

// 登入資料庫
mysql -u root -p
// 輸入資料庫的密碼
Enter Password:
// 為root使用者授予全部許可權 (實際的語句寫法有很多,諸君可自行百度)
grant all on *.* to 'root'@ '%'   identified  by '資料庫密碼' with grant option
// 重新整理列表,使得修改許可權生效
flush privileges
# 資料庫啟動
service mysql start
# 資料庫停止
service mysql stop
# 資料庫重啟
service mysql restart

客戶端工具我使用的是Navicat,其實這個客戶端工具是個人選擇,看諸君個人的喜好。

二、部署Node專案

其實再實際操作前,我對於如何部署後臺專案可謂是一竅不通,但在網上查看了許多文件後,總算明白了。其實部署,說到底就是將後臺專案放置在自己的阿里雲伺服器上,並且讓它一直處於執行狀態,這樣就可以前端的Web專案就可以一直訪問了,是不是很簡單,那麼就介紹一下具體步驟:

1.安裝Node和npm

安裝步驟網上有很多,大家可以自行百度檢視,附上阿里雲的官方文件:點選開啟連結,在該教程裡還讓安裝版本管理nvm,方便後期長期進行node版本管理,但因為筆者在進行部署的時候也是菜鳥一枚,沒想過要長期管理,所以沒有安裝,當然頁完全不影響後面的部署

2.首先將Node專案放在伺服器上

Node專案和後臺的Java程式碼不一樣,不需要編譯,直接進行上傳就可以,所以我才用的懶人的辦法——使用git

// 安裝git  (這裡是本人的安裝,如需更高版本的安裝,請自行百度)
apt-get install git

安裝成功後,就可以按照以往的git操作命令,將Node專案克隆到伺服器上

3.啟動Node專案

如果是直接使用node app.js 或者 npm start啟動專案,那麼在關閉連線後,專案的啟動也會停止,所以我們需要使用讓Node專案能夠一致在後臺自行執行,在這裡我使用的是PM2管理工具,當然還有forever等,大家可以自行嘗試.

// 全域性安裝pm2
npm install -g pm2

安裝成功後就進入執行pm2命令,執行Node專案,我這裡的專案是Express,首先啟動的是bin/www下的檔案,所以在使用時先進入Node專案下,然後執行 pm2 start bin/www 來啟動專案。其實pm2還有很多用途,詳細的命令,附上參考文件

【注意】在部署伺服器前,需要將監聽的地址改為0.0.0.0,具體原因,嗯~ o(* ̄▽ ̄*)o,筆者沒有細究。

找到Node專案下bin/www 檔案,找到監聽的地方

可見,監聽的地址是由onListening函式來處理的,找到這個函式進行修改

三、部署React專案

部署前端專案,我採用的是最為簡單nginx,只需要安裝好nginx,配置好配置檔案nginx.conf,然後將打包好的檔案丟到伺服器上就可以,聽上去是不是很簡單,那麼就實踐操作一下吧。

1.上傳打包好的資原始檔

在本地執行npm run build命令後,將dist資料夾中的資原始檔上傳到伺服器,我上傳使用的是rz和sz命令,大家可以自行百度如何安裝,當然你也可以選擇自己熟悉的上傳方式,反正只要上傳成功就行。

我是在/home/React_WEB中存放資原始檔,這個路徑很重要,關係到後續的nginx配置

2.安裝nginx

apt-get install nginx

3.配置nginx

要配置nginx就需要先了解配置檔案的基本屬性,附上參考文件

瞭解nginx的基本配置屬性後,我們發現其實只需要修改配置檔案/etc/nginx/nginx.conf中修改http部分,設定其中的Server屬性,配置虛擬主機,主要就是設定監聽的埠,資源的訪問地址等,我的配置比較簡單,參看下圖:(僅供參考)

user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
	worker_connections 768;
	# multi_accept on;
}

http {

	##
	# Basic Settings
	##

	sendfile on;
	tcp_nopush on;
	tcp_nodelay on;
	keepalive_timeout 65;
	types_hash_max_size 2048;
	# server_tokens off;

	# server_names_hash_bucket_size 64;
	# server_name_in_redirect off;

	include /etc/nginx/mime.types;
	default_type application/octet-stream;

	##
	# SSL Settings
	##

	ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
	ssl_prefer_server_ciphers on;

	##
	# Logging Settings
	##

	access_log /var/log/nginx/access.log;
	error_log /var/log/nginx/error.log;

	##
	# Gzip Settings
	##

	gzip on;
	gzip_disable "msie6";

	# gzip_vary on;
	# gzip_proxied any;
	# gzip_comp_level 6;
	# gzip_buffers 16 8k;
	# gzip_http_version 1.1;
	# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

	##
	# Virtual Host Configs
	##

	include /etc/nginx/conf.d/*.conf;
        // 原本這個檔案是要引入sites-enabled的資料夾下面的預設配置檔案,我這裡是將其註釋掉,然後直接在nginx.conf檔案裡寫
	# include /etc/nginx/sites-enabled/*;
	server {
		listen 80;  // 監聽的埠
		server_name whsjblog.com;   // 設定訪問的域名或者改為伺服器的公網IP地址
		root /home/React_WEB;    // 資原始檔的存放路徑
		index index.html;     
		location ~^/favicon\.ico$ {
			root /home/React_WEB;
		}
		location / {
			try_files $uri $uri/ /index.html;
		}
	}
}
配置成功後,只需要在位址列輸入域名和伺服器的外網IP地址就可以訪問了。