react + node + mysql 全栈项目在centos7 服务器部署上线全过程

一、要求

1、首先要有成熟的前端react项目和node后台项目,并且能在本地正常运行。

2、有一个服务器,我用的是学校的服务器,你也可以在阿里云上买一自己的服务器,大体步骤是一样的(我们只是需要一个能用的IP和域名)

二、服务器的环境要求

1、首先,需要自己下一个node和mysql,这个网上的教程很多,随便搜一下就好,下好之后我们再回来。
2、需要的工具还有Xshell(用来将前端和后台项目打包发送到Centos的服务器上)和 VMware(可以进行更方便的配置,若不下载的话,也可以在xshell上进行命令配置)

三、部署react项目到服务器上

1、首先将前端项目进行打包,通过在vsCode的控制台输入命令,之后我们在将build,进行压缩成为一个压缩包(因为xshell是不能发送文件夹的,所以要压缩一下)

npm run build

2、打开xshell,通过之前你得到的IP地址及用户名和密码登录进去,然后使用下面的命令上传build的压缩包,到服务器上,位置一般为服务器文件夹的根目录下

rz -y

3、在服务器上下载解压zip 的工具,用来解压传送过来的压缩包,命令为:

wget https://www.rarlab.com/rar/rarlinux-x64-5.7.1.tar.gz

4、自己新建一个文件夹,将解压后的压缩包放入该文件夹,此处我的文件夹的安放目录为
react + node + mysql 全栈项目在centos7 服务器部署上线全过程
5、下载 nginx ,并进行配置

yum -y install nginx

配置命令

vim  /etc/nginx/nginx.conf

打开后

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 {  //有多个项目,加server 就行
		listen 6379;  // 监听的端口,修改
		server_name whsjblog.com;   // 设置访问的域名或者改为服务器的公网IP地址
		root  /root/projects/project1/build;    // 资源文件的存放路径
		index index.html;     
		location ~^/favicon\.ico$ {
			root /root/projects/project1/build;// 资源文件的存放路径
		}
		location / {
			try_files $uri $uri/ /index.html;
		}
	}
}

保存完配置后,记得一定要重启下nginx服务

nginx -s reload 

下面说一下 nginx 的基本命令

验证配置是否正确: ./nginx -t

查看Nginx的版本号:./nginx -V

启动Nginx:直接运行 nginx即可

快速停止或关闭Nginx:./nginx -s stop

正常停止或关闭Nginx:./nginx -s quit

配置文件修改重装载命令:./nginx -s reload


6、因为服务器上都有防火墙,我们一定要记得,将自己之前nginx的端口号开启,否则的话,通过 服务器IP + 端口号 访问项目的时候,会报错 505

有关防火墙的基本命令

firewall-cmd --list-all  //查看开放的所有的端口号
sudo firewall-cmd --add-port=80/tcp --permanent //设置开放的端口号80
firewall-cmd --reload //设置成功重启端口号
sudo firewall-cmd --remove-port=80/tcp --permanent//关闭端口号80

//我有遇到个BUG,就是进行上面的所有命令都会显示一个
//   FirewallD is not running
//此时的操作应该是 如下两步,即可成功
systemctl unmask firewalld
systemctl start firewalld.service

7、此刻,我们应该就可以访问到前端的项目了

四、node项目部署到服务器上

1、首先将后端项目进行压缩通过Xshell上传到服务器上并解压,跟前端上传项目差不多,并且我这里是将前后端项目的文件夹并列的
react + node + mysql 全栈项目在centos7 服务器部署上线全过程
2、下载pm2,来运行项目,因为你使用node来运行项目的时候,当进程一中断就没了,但pm2 不一样,没有那么容易的中断

npm install -g pm2

3、启动后端项目

pm2 start bin/www

4、一个注意的地方,就是你后端项目监听的端口,也一定要在防火墙中开开

五、再说下实践期中遇到的BUG

1、首先有时候,通过XShell连接你的服务器的时候连不上,可能是因为服务器关机或者没联网
2、你自己的项目一定要记得要配置跨域
3、前端的项目放在服务器中不能使用window.location.href=“路由”,来进行跳转
4、我们但是使用node来下载pm2的时候就下不了,后来发现是因为node的版本太低了,一定要记得升级

上一篇:JavaScript 温故而知新(八)DOM基础


下一篇:nginx网页优化