云服务器绑定域名部署公网可访问项目

278 阅读4分钟

云服务器从零部署公网可访问项目

写在前面

入职的公司属于刚开始做互联网项目,所有的东西都需要从零开始搭建,这段时间也是完成了从购买域名,部署项目到公网,能够正常访问的访问。也是遇到了不少的坑,所以想记录下来,方便后面来的好兄弟们少踩一些坑,也是方便以后自己回顾。

前提条件

默认已经会部署Java项目到服务器,并且通过Ip加端口访问。如果不会的话,后面我再发一篇文章教程。

服务器和项目基础信息

  • 服务器:
    • 阿里云的 云服务器 ECS
    • 域名:在阿里云申请的
    • 建议还是都用同一家的,配置比较方便
  • 项目:
    • Java的单体项目,用的是SpringBoot+MySQL+Redis+VUE
    • nginx用来做域名代理这些

开始

第一步: 服务器以及域名

购买服务器与域名

在各种云服务器商处购买即可,操作系统是CenterOS 7.9

域名备案

这次走的是阿里云的域名备案,走的是公司备案,需要提供营业执照法人信息,之类的东西,按照阿里云的提示走即可,那个收钱来帮你的辅助备案的完全没必要,信息齐全的情况下,大概在十天左右备案能下来。

  1. 打开阿里云网址,找到icp备案 image.png
  2. 点击开始备案 image.png
  3. 点击自主备案,亲力亲为 image.png
  • 需要注意的问题:
    • 域名的账号,跟你备案的账号可以不是同一个,但是主体需要一致:
      • 我用的备案的账号是服务器的账号,域名的账号是公司的主账号,一样可以进行备案操作,但是需要先将域名的主体过户到当前备案的主体。
    • 如果域名的账号,跟你服务器的账号不是同一个主体的情况下,需要先更改域名的主体:
      • 在选择域名的时候就会报一个域名与主体不一致的错误。在第三步的时候报,非常坑爹,之前填好的信息是无法回去修改的。这时候先去修改域名的主体,跟你要备案的主体一致,在进行备案。这一个过程大概需要三四天。

域名与服务器绑定

  1. 收到域名备案通过的通知以后,需要在域名管理中,配置解析到需要绑定的公网ip,这里因为我没有账号权限,就不配图了。兄弟们可以在阿里云的域名管理找到。
  2. 配置完解析到,可以通过阿里的测试工具boce.aliyun.com/detect/dns/ 选择DNS输入域名进行检测。然后我们可以查看到解析结果,如果看到结果是我们的公网ip,那就说明已经成功绑定了。

申请ssl证书

如果不需要发送https请求的话,这一步可以跳过,不过最好还是配置下。

  1. 在阿里云搜 ssl,点击进入控制台。

image.png 2. 点击SSL证书,点击免费证书,点击创建证书,输入我们的域名

image.png

  1. 申请完之后,需要dns解析校验,我们需要在域名的dns解析那里配置一下

9d52d8aebc0604fe2eba45eae71f2117.png

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我也不是特别精通,纯靠谷歌度娘琢磨出来的,所以没有特别详细。