云服务器从零部署公网可访问项目
写在前面
入职的公司属于刚开始做互联网项目,所有的东西都需要从零开始搭建,这段时间也是完成了从购买域名,部署项目到公网,能够正常访问的访问。也是遇到了不少的坑,所以想记录下来,方便后面来的好兄弟们少踩一些坑,也是方便以后自己回顾。
前提条件
默认已经会部署Java项目到服务器,并且通过Ip加端口访问。如果不会的话,后面我再发一篇文章教程。
服务器和项目基础信息
- 服务器:
- 阿里云的 云服务器 ECS
- 域名:在阿里云申请的
- 建议还是都用同一家的,配置比较方便
- 项目:
- Java的单体项目,用的是SpringBoot+MySQL+Redis+VUE
- nginx用来做域名代理这些
开始
第一步: 服务器以及域名
购买服务器与域名
在各种云服务器商处购买即可,操作系统是CenterOS 7.9
域名备案
这次走的是阿里云的域名备案,走的是公司备案,需要提供营业执照法人信息,之类的东西,按照阿里云的提示走即可,那个收钱来帮你的辅助备案的完全没必要,信息齐全的情况下,大概在十天左右备案能下来。
- 打开阿里云网址,找到icp备案
- 点击开始备案
- 点击自主备案,亲力亲为
- 需要注意的问题:
- 域名的账号,跟你备案的账号可以不是同一个,但是主体需要一致:
- 我用的备案的账号是服务器的账号,域名的账号是公司的主账号,一样可以进行备案操作,但是需要先将域名的主体过户到当前备案的主体。
- 如果域名的账号,跟你服务器的账号不是同一个主体的情况下,需要先更改域名的主体:
- 在选择域名的时候就会报一个域名与主体不一致的错误。在第三步的时候报,非常坑爹,之前填好的信息是无法回去修改的。这时候先去修改域名的主体,跟你要备案的主体一致,在进行备案。这一个过程大概需要三四天。
- 域名的账号,跟你备案的账号可以不是同一个,但是主体需要一致:
域名与服务器绑定
- 收到域名备案通过的通知以后,需要在域名管理中,配置解析到需要绑定的公网ip,这里因为我没有账号权限,就不配图了。兄弟们可以在阿里云的域名管理找到。
- 配置完解析到,可以通过阿里的测试工具boce.aliyun.com/detect/dns/ 选择DNS输入域名进行检测。然后我们可以查看到解析结果,如果看到结果是我们的公网ip,那就说明已经成功绑定了。
申请ssl证书
如果不需要发送https请求的话,这一步可以跳过,不过最好还是配置下。
- 在阿里云搜 ssl,点击进入控制台。
2. 点击SSL证书,点击免费证书,点击创建证书,输入我们的域名
- 申请完之后,需要dns解析校验,我们需要在域名的dns解析那里配置一下
4.校验通过后,我们的ssl证书就可以进行部署或者下载了,我用的是下载。可以参考这个文档,写的很详细了包括nginx文件的配置。 help.aliyun.com/zh/ssl-cert…
nginx配置
根据文档的教程,配置好nginx,使用-t命令,检查配置是否有问题。没问题后使用-s relod命令,重启nginx,可以尝试通过域名访问一下服务器,如果出现nginx的页面,就说明咱们已经成功的绑定好了,域名以及服务器,并且可以发送https请求。
nginx配置项目访问
我部署的是一个前后端分离的项目,在server里面配置前端的路径以及访问的前缀。需要注意的是,如果配置了二级目录,前端需要参数相同的访问前缀,否则会出现静态资源找不到的问题!!!
前端
location /自定义前缀 {
alias 前端项目目录;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
后端
location /api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://IP:端口/;
}
需要注意的是,如果我们的proxy_pass配置的时候没有最后没有加/ 那么实际请求的是http://IP:端口/api/ 如果加了/那么请求的就是http://IP:端口/ 按照项目的实际情况来配置即可。 配置好了以后重新启动nginx,就可以通过域名访问我们的项目了。
第一次写文章,有描述不清楚的地方,请见谅。nginx我也不是特别精通,纯靠谷歌度娘琢磨出来的,所以没有特别详细。