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地址就可以访问了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值