30 个终端命令中的多应用程序 Web 服务器


先决条件

  • 域名和 DNS 记录的控制权,最有可能在您的提供商的网站上。
  • 具有根访问权限的 Debian 服务器。虚拟专用服务器可能是您最好的选择。
  • 本地Unix机器(Linux / Mac)与常用工具,如,并安装。在 Windows 上,您可以使用适用于 Linux 的 Windows 子系统gitsshscp

从长远来看,设置域和服务器每月的成本约为 5 到 20 美元,具体取决于服务器的域和口径。对于本教程,即使只有 10 GB 的磁盘空间和 2 GB 的 RAM 也应该是安全的。处理器功率不会成为问题。

域名解析配置

若要将抽象域指向物理服务器,我们将设置两个 DNS 记录。任何子域的根地址记录和通配符。如果要严格,也可以单独设置每个子域。将下面的 IP 地址替换为您的服务器。如果未提供该地址,则可以在服务器中确定该地址。

@ 1800 IN A 1.1.1.1
* 1800 IN A 1.1.1.1

配置 DNS 后,您应该能够解析您的域。传播记录可能需要几个小时,因此为了避免不断检查状态。成功解析地址后继续教程。请注意,请求仍会导致错误,但应找到服务器 IP。watch

curl -v DOMAIN              # check if domain can be resolved
watch -n 10 curl -v DOMAIN  # check every 10s

模板存储库

不幸的是,如果没有一些帮助,就无法使本教程简短。我们将使用包含构建脚本、配置和虚拟网站内容的模板存储库。考虑分叉存储库或将其用作模板来管理您自己的未来项目!

git clone https://github.com/felix-hilden/server-template.git
cd server-template

服务器配置

让我们进入问题的实质并开始配置我们的服务器。下面的设置步骤分为两个缩进级别,第一个缩进级别位于本地计算机上,第二个缩进级别与服务器进行远程连接。请阅读正在使用的命令,并查看执行的脚本以了解正在执行的操作。

首先,我们通过在服务器上创建新的管理员用户来避免 root 访问权限。请将“域”替换为您的域名,用“用户”替换所需的用户名。以下命令假定您立即具有 SSH 访问权限,但如果您使用其他登录方法,则可以手动运行这些命令。user-setup

cd server

scp user-setup root@DOMAIN:~   # copy setup script to server
ssh root@DOMAIN                # login as root
    cat user-setup             # peek at the script
    chmod +x user-setup        # make it executable
    ./user-setup USER          # setup new sudo user
    rm user-setup              # remove setup script

下一步将为我们的系统配置 SSH 和防火墙以及一些重要的应用程序。在关闭root连接之前,请在另一个终端中继续设置,或者确保如果出现问题并且您注销而无法进入,则可以以其他方式访问服务器。为了安全起见,该配置将通过 SSH 禁用根访问和密码登录。

cat setup-ssh            # peek at the script
chmod +x setup-ssh       # make it executable
./setup-ssh USER DOMAIN  # generate and send SSH keys

scp files/* DOMAIN:~     # copy build files to server
ssh DOMAIN               # login as new user
    cat build            # peek at the script
    chmod +x build       # make it executable
    ./build USER         # build server
    rm *                 # remove build files

For additional configuration, this nixCraft article has great tips on Linux security and it seems to be kept up to date: https://www.cyberciti.biz/tips/linux-security.html

Applications

From now on, we'll only be working inside of the server. So let's clone the template repository on the server too. Before setting up a proper deployment process, the git project will do fine for synchronising changes across our local machine and the server.

git clone https://github.com/felix-hilden/server-template.git
cd server-template

在这一点上,解释我们的技术堆栈的基础知识是合适的。

  • Docker:为我们提供轻型虚拟机来隔离服务。我们将构建并运行 git 项目中定义的容器,而不是进一步配置我们的主机服务器(这很快就会变得难以管理),其中所有相关信息都存储在一个地方。
  • nginx:一个主要的Web服务器。我们将使用它来为其容器中的静态网站提供服务,并用作代理,将流量路由到另一个容器中的 Python 应用程序。
  • Python:使用流行的FastAPI框架,我们将为一个简单的网站提供API服务。

要启动并运行网站本身,我们只需要遵循几个步骤。首先,使用下面的魔术脚本将模板文件中出现的所有“example.com”替换为您的域。相信我。还是这个家伙

# Linux
grep -RIl 'example.com' | xargs sed -i 's/example.com/DOMAIN/g'

# Mac OS
grep -RIl 'example.com' | xargs sed -i '' 's/example.com/DOMAIN/g'

git diff  # inspect the result

然后,我们将为您的域颁发 SSL 证书,以便能够使用安全连接。

make certify  # bring up a dummy website to issue certificates

假设证书已成功颁发,我们可以启动真正的应用程序。

make up-prod  # serve applications on HTTPS
make logs     # start following logs to see if initialisation was successful

在幕后,我们的 Makefile 正在编排一组容器来运行,同时设置网络和共享文件系统以查找我们的配置。我们现在应该能够在普通浏览器中访问该域!或者获取主页。curl

curl DOMAIN      # static site
curl app.DOMAIN  # Python app

开发网站

存储库包括在本地运行站点以促进开发的配置。在本地计算机上,安装Docker Desktop并运行:

make  # bring up development website & inspect logs
curl localhost  # get home page

您现在可以修改 和 的内容以开始构建应用程序。网站在运行时将使用您的最新修改进行更新。如果出现问题,可以使用默认的 make 目标重新启动。website/siteapp/src

告别

我希望你觉得这个简短的教程有用。感谢您的阅读。该模板在很多方面都缺乏,尤其是在实际软件开发方面。但是,我们不会在此处为网站或 Python 设置完整的开发环境。这与自动化发布过程一起,留给你,我亲爱的读者。

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/aiops/292587.html

(0)
上一篇 2022年11月4日 17:40
下一篇 2022年11月4日 17:46

相关推荐

发表回复

登录后才能评论