ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

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

2022-11-04 14:46:39  阅读:345  来源: 互联网

标签:网站 系统 解析 美元 DNS 模板 服务器 配置


先决条件

  • 域名和 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 设置完整的开发环境。这与自动化发布过程一起,留给你,我亲爱的读者。

标签:网站,系统,解析,美元,DNS,模板,服务器,配置
来源:

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有