如何在同一台服务器上设置 API、webapp、gitlab 和展示网站?

如何在同一台服务器上设置 API、webapp、gitlab 和展示网站?

我今天来是因为,作为一名开发人员,我觉得我必须知道如何配置这些东西,但是,我遇到了困难,我不确定为什么。

我有 4 件东西,比如说:

  • API(www.api.example.com
  • Web 应用程序 ( www.player.example.com)
  • 展示网站 ( www.example.com)
  • GitLab ( www.gitlab.example.com)

为了实现这个目标,我从Obambu购买了一个虚拟服务器,还从OVH购买了一个域名。

但是,主要的问题是,首先,我无法从 (我的服务器 IP:端口) 重定向www.api.example.com192.0.2.89:1234我搜索过,但似乎没有这样的选项......

然后,我首先做的是安装 GitLab 并禁用 Apache2(因为我不确定是否理解它的要点......并且因为它们使用相同的端口)。

为了访问我的 gitlab,我输入了https://www.gitlab.example.com,但它只在 Safari 中有效,在 Chrome 中无效。我在网上看到这是因为 SSL 认证,但又一次,它不起作用......

运行 gitlab-ctl reconfigure 时出错:

letsencrypt_certificate[gitlab.example.com] (letsencrypt::http_authorization 第 3 行) 发生错误:RuntimeError: acme_certificate[staging] (/opt/gitlab/embedded/cookbooks/cache/cookbooks/letsencrypt/resources/certificate.rb 第 20 行) 发生错误:RuntimeError: [gitlab.example.com] 域 gitlab.PROJECT.com 验证失败

https://www.howtoforge.com/tutorial/how-to-install-and-configure-gitlab-on-ubuntu-16-04/#step-enable-nginx-https-for-gitlab

第三,我不太明白的是,如果你不能重定向到某个端口,你是否需要多个服务器?另外,我不太清楚的另一点是 Apache2..它对我想要实现的目标有用吗?因为最后,我不想调用某样http://www.example.com:8079东西,又http://www.example.com:8083调用其他东西..我真的想遵循我上面写的 4 个不同的子域 :/


编辑1

好的,首先,我要感谢您的回答。现在,根据您的回答/评论和其他一些回答/问题,我觉得最好的选择是:

www.example.com:8080(展示网站) www.example.com:8081(gitlab) www.example.com:8082(api) www.example.com:8083(webapp)

这有意义吗?

答案1

如果你真的想把所有这些都放在一台服务器上,你可以考虑使用信噪比。正如 ETL 所建议的那样,您可以在这里使用 NGINX。如果您不熟悉 Docker,您可以只在该服务器上托管服务,但为每个服务使用唯一的端口,然后配置 NGINX 来处理 SNI部分和疏导交通到达另一个端口。

你真的应该尝试将其分开,如果我是你,我会考虑执行以下操作之一:

  • 将多个较小的实例分配给单独的服务
  • 按照 ETL 的建议将其放入容器中
  • 将一些任务卸载到托管服务,例如 AWS ApiGateway,而不是在本地托管您的 API,以及使用 CodeCommit 而不是 Gitlab。

答案2

我将在单独的 Docker 容器中运行所有这些,并运行一个 NGINX 或 Apache httpd 容器,该容器将监听端口 80/443 并代理到适当的服务。

相关内容