1、首先要有成熟的前端react项目和node后台项目,并且能在本地正常运行。
2、有一个服务器,我用的是学校的服务器,你也可以在阿里云上买一自己的服务器,大体步骤是一样的(我们只是需要一个能用的IP和域名)
1、首先,需要自己下一个node和mysql,这个网上的教程很多,随便搜一下就好,下好之后我们再回来。
2、需要的工具还有Xshell(用来将前端和后台项目打包发送到Centos的服务器上)和 VMware(可以进行更方便的配置,若不下载的话,也可以在xshell上进行命令配置)
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、自己新建一个文件夹,将解压后的压缩包放入该文件夹,此处我的文件夹的安放目录为
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、此刻,我们应该就可以访问到前端的项目了
1、首先将后端项目进行压缩通过Xshell上传到服务器上并解压,跟前端上传项目差不多,并且我这里是将前后端项目的文件夹并列的
2、下载pm2,来运行项目,因为你使用node来运行项目的时候,当进程一中断就没了,但pm2 不一样,没有那么容易的中断
npm install -g pm2
3、启动后端项目
pm2 start bin/www
4、一个注意的地方,就是你后端项目监听的端口,也一定要在防火墙中开开
1、首先有时候,通过XShell连接你的服务器的时候连不上,可能是因为服务器关机或者没联网
2、你自己的项目一定要记得要配置跨域
3、前端的项目放在服务器中不能使用window.location.href=“路由”,来进行跳转
4、我们但是使用node来下载pm2的时候就下不了,后来发现是因为node的版本太低了,一定要记得升级