⑴ nginx怎么部署前端项目
1、安装兄陪护卫神·nginx大师
2、开设站羡察蠢点,绑定和解析域名
3、上传前端页没码面到网站
⑵ react+springBoot 项目部署到腾讯云
本文主要介绍如何搭建个人网站,并将项目部署到腾讯云。
前端:React,
后端:SpringBoot,
云服务:centos7
建议使用create-react-app创建react项目包,简单快捷。
进入项目路径,开始运行
直接使用项目自身的build指令进行打包,完成后会在项目根目录多出一个build文件夹
build文件中包含项目打包后的js、css、html...等资源。下一步的部署,就是将这一build文件上传到云服务器,并通过nginx指向build。
将上一过程中的build文件上传到云服务器,推荐使用ForkLift, 使用教程 。
进入云服务器,找到nginx文件,修改root指向build路径, nginx配置教程 。
上述操作完成后,打开域名后,页面即为react项目的首页。
建议使用idea进行springboot项目的开发(专业的事情交给专业的工具,简单些)。
idea搭建一个springboot项目
mysql: 官方地址
mysql管理工具Navicat: 官网地址
如果本地不想安装mysql,也可以直接在服务器上进行安装,然后在本地访问, 服务器安装mysql并实现远程访问 。
将本地springboot项目打包后,上传到云服务器并启动, Spring boot项目部署到腾讯云服务器 。
关于项目的启动并保持一致运行:可以在控制台输入
回车,nohup命令可以让你的shell命令忽略SIGHUP信号,即可以使之脱离终端运行;“&”可以让你的命令在后台运行。
至此,前后端项目都已安装在云服务器上。
原文地址: react+springBoot 项目部署到腾讯云
⑶ 使用Tomcat和Nginx部署前端项目
第一种方式,将我们的前端项目放置在webapps目录下
进入tomcat安装路径下的conf目录,在server.xml文件中<Host>标签内配置虚拟路径
简单的解释一下参数
path 对应用户请求过来的url路径, /static 匹配所有以 /static 开头的请求
docBase 表示实际匹配到的路径,这里可以使用绝对路径,也可以使用相对路径
reloadable 如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化。(对于静态资源来说,个人觉得这个配置用处不大)
总结起来就是,对于ip:8080/static的资源请求,会通过虚拟路径匹配到我们实际的资源路径music_client/static。
配置好后重启,我们可以发现已经能够看到我们的前端项目了
对于ROOT目录下的资源,tomcat可以直接在根目录下进行访问。通过这种方式,我们可以让项目的路径去适配tomcat访问的路径。
但是这种方式不是特别推荐,当有多个项目在同一个tomcat服务器上的时候,会不方便管理。
Nginx是当下热门的服务器,使用起来只需要进行简单的配置即可。对于Nginx的安装大家可以自行网络解决。
我们先进入到usr/local/nginx(具体以实际nginx安装目录为准)下的conf目录,vim编辑nginx.xml。主要进行下面的配置
简单的解释一下
listen 表示nginx监听的端口号,也就是你希望暴露哪个端口给用户进行访问
server_name 表示nginx接受请求的域名,一般默认localhost就行
location 模块用于响应请求,这里的 / 表示匹配8082端口的所有请求
root 表示静态资源/项目的路径
index 表示默认的访问资源
配置完成后,进入 sbin 目录下,通过 ./nginx -t 检查配置文件的格式是否正确
如正确 ./nginx 进行启动或者 ./nginx -s reload 进行重启
启动完,我们就可以直接ip:8082直接访问我们的前端项目啦
开启nginx的反向代理也比较简单,只需要加上proxy_pass 配置即可
出现这个问题的原因是: 在history模式下,只是动态的通过js操作window.history来改变浏览器地址栏里的路径,并没有发起http请求,但是当我们直接在浏览器输入这个地址的时候,就会对服务器发起http请求,但是这个目标在服务器上又不存在,所以会返回404。
我们可以通过把所有请求都转发到首页上来解决这个问题。只需要在 Nignx 中的配置文件加入如下配置:
事实上,上面的解决方式也是Vue-Router官方推荐的解决方式( https://router.vuejs.org/zh/guide/essentials/history-mode.html#nginx )。
那上面的 try_files 为什么能帮助我们解决这个问题呢?我们可以看一下这个属性的作用
try_files :按选项所指定的顺序去检查用户请求的文件是否存在,如果本地存在的话则返回该请求;不存在的话将该请求转发到指定的其它路径。也就是说,比如我们当前的前端项目部署在 /usr/myproj 目录下,现在我们在浏览器发起 ip:port/testApi 请求,那么此时 uri 为testApi,nginx会先去 $root/testApi (即/usr/local/myproj/testApi)找是否存在该静态资源,若不存在,则继续寻找 $root/testApi/index (即/usr/local/myproj/testApi/index)文件是否存在,如果还是不存在,则会把请求转发到首页。
而我们的项目本事就是由Vue-Cli创建的 单页面应用 ,当index页面接收到请求的时候,对应的history模式路由就可以发挥作用了,根据浏览器的路由跳转到对应的页面,这也就保证了我们的路由请求都能够转发给index页面来进行处理。
这种问题一般是出现在服务器一开始安装Nginx的时候,没有安装SSL模块。在不重装Nignx的情况下,可以安装如下方式进行操作:
执行如下命令
这一步只是以防万一,可以省略
也可以直接执行 ./usr/local/nginx/sbin/nginx -t 看还会不会报错就行
nginx报错: [emerg] https protocol requires SSL support in /usr/local/nginx/conf/nginx.conf:50
⑷ web前端项目部署到服务器:
执行成功后会生成dist文件
4.1 进入到nginx配置目录:/usr/local/nginx/conf,对 nginx.conf 文件进行配置
使用include可以配置多个.conf文件,如一个项目一个配置文件。在同目录下创建demo文件夹,并创建demo.conf配置文件
下面使用是以ip地址的方式创建的的配置文件
访问地址:
其中dist名称时可以修改,保持与/usr/local/nginx/html下cp名称一致,否则会访问不到;并且/usr/local/nginx/html目录可存在同一ip下多个web项目。
域名与ip绑定
配置域名demo.conf
eg: 域名 - demo.cn
4.2阿里云配置域名前缀
阿里云->域名->域名列表—>域名 管理-> 域名解析->解析设置
如图:记录值 填写当前服务ip
学习过程中所记录,有问题或者有好的方式欢迎指点。不胜感激 🤗 🤗 🤗
⑸ nginx部署多个前端项目
这里就不介绍同一端口和同一nginx.conf,有需要的童鞋自行网络。
这里介绍不同项目的不同配置。
服务器中已经部署了其他项目,这里做一个简单的页面做测试:
1、新建目录:
/root/nginx/8571/
/root/nginx/8571/html/
/root/nginx/8571/log/
2、将文件:/usr/sbin/nginx 拷贝至 /root/nginx/8571/
3、新建index.html:/root/nginx/8571/html/index.html
4、新建配置文件:/root/nginx/8571/nginx.conf
5、启动 nginx
./nginx -c /root/nginx/8571/nginx.conf
注意:
若 nginx.conf 配置 location 后,重启 nginx 再访问,如果访问提示:Nginx 403 Forbidden,则需要在 nginx.conf 头部加入一行:
user root;
查看nginx端口使用情况:netstat -apn
启动成功后输入ip和端口8571访问:
⑹ nginx部署前端纯页面
1.进入nginx配置文件vim .../nginx-1.9.12/conf/nginx.conf。
如上图所示:第一个红框中的内容就是应用服务器的地址陪粗;第二个红框中的内容就是前端包的位置。
此时,配置文件已经准备完毕。这个包和端口可以存在多个。
2.进入.../nginx-1.9.12/sbin 找到nginx的启动程序。
nginx -c ../nginx-1.9.12/conf/nginx.conf 启动芦返镇nginx程序,并指定配置文件。
3.如果要替换包,则直接替换就行,nginx为热加载自动更新的。但是以防有缓存之类的存在,可以使用nginx -s reload命令进行重载一次。
追加 一 :
如果前端包的构造如下图
则location配置依然如下图
但是访问地址则需要指定到具体的html文件上。。
绑定: http://127.0.0.1:48110/binding.html
成功: http://127.0.0.1:48110/success.html
失败: http://127.0.0.1:48110/error.html
追加 二:
同一个端口部署多个页面:
一个server下,多个 location。
location的作用就是是否有后缀,并且这个后缀会去拼接root后的地址。
比如第二个location /sis/。
则在访问127.0.0.1:8080/sis时,会去自动寻找/apps/svr/nginx-1.9.12/pagefile/0921/sis这个包。 世明 (Ps:location后的地址一定要用 / 关闭,比如 location /sis/,不然访问127.0.0.1:8080/sis时,会报错,只有用127.0.0.1:8080/sis/才行。)
这样就部署好了一个 端口支持多个页面。