Category : 教程系列

作者选择了COVID-19 救济基金来接受捐赠,作为Write for DOnations计划的一部分。 介绍 在Apache的HTTP Web服务器已经通过几年来在不同的环境下正常工作发展和解决不同的需求。与任何 Web 服务器一样,Apache HTTP 必须解决的一个重要问题是如何处理不同的进程来为 http 协议请求提供服务。这包括打开套接字、处理请求、保持连接打开一段时间、处理通过该连接发生的新事件,以及返回由特定语言(如 PHP、Perl 或 Python)编写的程序生成的内容. 这些任务由多处理模块(MPM)执行和控制。 Apache HTTP 带有三种不同的 MPM: Pre-fork:为每个到达服务器的传入连接创建一个新进程。每个进程都相互隔离,因此它们之间不会共享内存,即使它们在执行过程中的某个时刻执行相同的调用。这是运行链接到不支持线程的库的应用程序(通常是较旧的应用程序或库)的安全方式。 Worker:父进程负责启动子进程池,其中一些正在侦听新的传入连接,而另一些正在为请求的内容提供服务。每个进程都是线程化的(一个线程可以处理一个连接),因此一个进程可以同时处理多个请求。这种处理连接的方法鼓励更好的资源利用,同时仍然保持稳定性。这是可用进程池的结果,其中通常有空闲可用线程准备好立即为新连接提供服务。 事件:基于工作线程,此 MPM 通过优化父进程如何将任务调度到子进程以及与其关联的线程,更进一步。连接默认保持打开状态 5 秒,如果没有新事件发生则关闭;这是 keep-alive 指令的默认值,它保留与其关联的线程。事件 MPM 使进程能够管理线程,以便一些线程可以自由地处理新的传入连接,而其他线程则保持绑定到实时连接。允许将分配的任务重新分配给线程将有助于提高资源利用率和性能。 该MPM事件模块可在Apache HTTP Web服务器上的快速多处理模块。 PHP-FPM是PHP的 FastCGI 进程管理器。FastCGI 协议基于通用网关接口 (CGI),这是一种位于应用程序和 Web 服务器(如 Apache HTTP)之间的协议。这允许开发人员独立于 Web 服务器的行为编写应用程序。程序独立运行它们的进程,并通过这个协议将它们的产品传递给网络服务器。应用程序需要处理的每个新连接都将创建一个新进程。 通过将 Apache HTTP 中的 MPM 事件与 PHP FastCGI 进程管理器 ..

Read more

介绍 版本控制系统是现代软件开发不可或缺的一部分。版本控制允许您在源代码级别跟踪您的软件。您可以跟踪更改、恢复到之前的阶段以及分支以创建文件和目录的替代版本。 目前可用的最流行的版本控制系统之一是 Git。许多项目的文件都保存在 Git 存储库中,GitHub、GitLab 和 Bitbucket 等站点有助于促进软件开发项目的共享和协作。 在本指南中,我们将介绍如何在 CentOS 8 服务器上安装和配置 Git。我们将介绍如何以两种不同的方式安装软件:通过内置包管理器和通过源。根据您的特定需求,这些方法中的每一种都有自己的好处。 先决条件 您将需要具有非 root 超级用户帐户的 CentOS 8 服务器。 要进行设置,您可以按照我们的 CentOS 8 初始服务器设置指南进行操作。 设置好服务器和用户后,您就可以开始了。 使用默认包安装 Git 我们安装 Git 的第一个选择是通过 CentOS 的默认包。 此选项最适合那些想要快速启动并运行 Git 的人、喜欢广泛使用的稳定版本的人或不寻找最新可用选项的人。如果您正在寻找最新版本,您应该跳转到有关从源安装的部分。 我们将使用开源包管理器工具 DNF,它代表 Dandified YUM 是 Yellowdog Updater 的下一代版本,Modified(即 yum)。DNF 是一个包管理器,现在是 CentOS 等基于 Red Hat 的 Linux 系统的默认包管理器。它将允许您在服务器上安装、更新和删除软件包。 首先,使用 DNF ..

Read more

介绍 在大多数 Web 应用程序中,密码通常用于用户身份验证。因此,以安全的方式存储密码非常重要。多年来,诸如单向密码散列等技术已被用于隐藏存储在数据库中的密码的真实表示。 虽然密码散列是保护密码的重要一步,但用户仍然对密码安全提出了重大挑战:使用常用词作为密码的用户会使散列的努力徒劳无功,因为暴力攻击可以快速破解此类密码. 为了解决这个问题,今天的许多 Web 应用程序都坚持要求用户使用强密码,方法是确保密码长度最短,或者密码中的字母数字字符和符号的某种组合。为了测量密码强度,Dropbox 开发了一种算法,用于受密码破解者启发的真实密码强度估计器。该算法封装在一个名为 .js 的 JavaScript 库中zxcvbn。此外,该软件包还包含常用英文单词、名称和密码的字典。 在本教程中,我们将使用 React JavaScript 框架创建一个包含全名、电子邮件和密码字段的表单。我们将执行一些轻量级表单验证,并zxcvbn在提供视觉反馈的同时使用该库来估计表单中密码的强度。 查看此CodeSandbox 演示,了解您将在本教程结束时创建的内容。 先决条件 在开始之前,请确保您的系统上安装了最新版本的Node。 要遵循本教程,您将需要以下内容: 您的机器上安装了最新版本的Node。有关如何安装它的更多信息,请从How To Install Node.js集合中选择您的发行版。 yarn安装以运行所有NPM脚本并为项目安装依赖项。您可以按照此Yarn 安装指南yarn在您的系统上进行安装。 步骤 1 — 设置应用程序 本教程将使用该create-react-app包生成新的 React 应用程序。create-react-app如果您尚未安装,请运行以下命令在您的系统上安装: npm install -g create-react-app 安装完成后,使用以下命令启动一个新的 React 应用程序: create-react-app react-password-strength 此命令将其命名为react-password-strength,但您可以随意命名。 注意:如果您使用的是npm5.2 或更高版本,它会附带一个额外的npx二进制文件。使用npx二进制文件,您无需create-react-app在系统上全局安装。你可以开始一个新的应用程序做出反应用这个命令:。npx create-react-app react-password-strength 接下来,您将安装应用程序所需的依赖项。运行以下命令安装所需的依赖项: yarn add zxcvbn isemail prop-types ..

Read more

介绍 Docker 简化了在容器中管理应用程序进程的过程。虽然容器在某些方面类似于虚拟机,但它们更轻量级和资源友好。这允许开发人员将应用程序环境分解为多个独立的服务。 对于依赖于多个服务的应用程序,编排所有容器以一起启动、通信和关闭可能很快变得笨拙。Docker Compose是一种工具,允许您根据 YAML 文件中设置的定义运行多容器应用程序环境。它使用服务定义来构建具有多个容器的完全可定制的环境,这些容器可以共享网络和数据量。 在本指南中,我们将演示如何在 Ubuntu 20.04 服务器上安装 Docker Compose 以及如何开始使用此工具。 先决条件 要阅读本文,您需要: 以具有 sudo 权限的非 root 用户身份访问 Ubuntu 20.04 本地计算机或开发服务器。如果您使用远程服务器,建议安装活动防火墙。要设置这些,请参阅我们的 Ubuntu 20.04 初始服务器设置指南。 按照如何在 Ubuntu 20.04 上安装和使用 Docker 的步骤 1 和 2在您的服务器或本地计算机上安装 Docker。 第 1 步 – 安装 Docker Compose 为了确保我们获得 Docker Compose 的最新稳定版本,我们将从其官方 Github 存储库下载该软件。 首先,在他们的发布页面确认可用的最新版本。在撰写本文时,最新的稳定版本是1.27.4. 以下命令将下载1.27.4发行版并将可执行文件保存在/usr/local/bin/docker-compose,这将使该软件可全局访问为docker-compose: sudo curl -L ..

Read more

在这篇文章中,我介绍了我在开发工作流程中安装和运行 WSL2(适用于 Linux 的 Windows 子系统)的一些第一印象。 我没有以任何方式进行过任何详尽的、科学的或精确的测试。但我发现,对于 npm 或 yarn 等日常 Web 开发任务,WSL 的速度大约快 5 倍。 此外,热重载和使用 create-react-app 或 vue-cli 会更快! 继续阅读以了解安装、入门、陷阱和特定时间 npx create-react-app WSL 2 带来了什么? 提高文件IO性能 完整的系统调用兼容性 这是我经历的过程以及我在安装时遇到的惊喜。 在 Windows 10 上安装 WSL2 Microsoft 现在有关于如何安装 WSL 和更新到 WSL2 的稳定文档。 要启动并运行,请按照上面的指南设置新的 linux 发行版。 检查安装是否有效 以下命令将向我们显示我们安装了哪些发行版以及它们的版本: wsl –list –verbose # or shorthand wsl -l -v ..

Read more

介绍 这是一个备忘单,可以帮助您找到您需要使用 Angular CLI 完成的大多数事情的命令。有关 Angular CLI 的简要介绍,您可以浏览本教程。 检查版本 查看您使用的 CLI 版本: ng –version 更新版本 运行这个: npm uninstall -g @angular/cli cache clean npm install -g @angular/cli@latest 帮助 获取一般帮助: ng help 或获取特定命令的帮助: ng help generate 新项目 生成一个新项目: ng new my-app 这里有一些你可以使用的标志: –dry-run: 查看将创建哪些文件,但实际上什么都不做。 –verbose: 多说几句。 –skip-install:不要npm install,离线或网速慢时很有用。 –skip-tests:不要创建规范文件。 –skip-git:不要初始化 git repo。 –source-dir: 源目录的名称 –routing:向应用程序添加路由。 –prefix:指定用于组件选择器的前缀。 –style:默认为css,但可以设置为scss。 ..

Read more

介绍 无限滚动是网站和应用程序上的一项功能,用户向下滚动并到达当前内容页面的底部,然后加载并显示下一页内容。这种效果取代了通过分页导航点击。在使用移动设备和触摸屏的情况下,无限滚动可能会提供更好的用户体验。 当您需要在用户需要时加载大量数据或图像而不是一次加载时,此功能特别有用。多年来,Twitter、Facebook 和 Instagram 等社交媒体已经普及了这一点。 在本教程中,您将构建一个示例 Vue.js 应用程序,该应用程序使用无限滚动从Random User API获取和显示数据。 先决条件 要完成本教程,您需要: Node.js 安装在本地,您可以按照如何安装 Node.js 和创建本地开发环境来完成。 熟悉设置 Vue.js 项目和使用 Vue.js 组件可能会有所帮助。 本教程已通过 Node v15.3.0、npmv6.14.9、vuev2.6.11 和axiosv0.21.0 验证。本教程经过编辑以反映从@vue/cli. 步骤 1 — 设置项目 出于本教程的目的,您将从使用@vue/cli. npx @vue/cli create vue-infinite-scrolling-example –default 这将使用默认配置配置一个新的 Vue 项目:Vue 2, babel, eslint。 导航到新创建的项目目录: cd vue-infinite-scrolling-example 接下来,安装axios: npm install axios@0.21.0 此时,您应该拥有一个支持 Axios 的新 Vue 项目。 ..

Read more

介绍 Inquirer.js是一组常见的交互式命令行用户界面。这包括输入问题的答案或从列表中选择一个选项。 该inquirer包提供了几个默认提示,并且是高度可配置的。它还可以通过插件接口进行扩展。它甚至支持承诺和async/await语法。 在本文中,您将安装并探索 Inquirer.js 的一些功能。 先决条件 如果你想跟随这篇文章,你需要: Node.js 的本地开发环境。遵循如何安装 Node.js 并创建本地开发环境。 本教程已通过 Node v15.14.0、npmv7.10.0 和v8.0.0 验证inquirer。 步骤 1 — 设置项目 首先,打开终端窗口并创建一个新的项目目录: mkdir inquirer-example 然后,导航到此目录: cd inquirer-example 要开始向 Node.js 脚本添加提示,您需要安装inquirer包: npm install inquirer 此时,您已准备好使用 Inquirer.js 的新项目。 第 2 步 – 创建提示 现在,index.js在您的项目目录中创建一个新文件并使用您的代码编辑器打开它。 在您的脚本中,请务必要求inquirer: 索引.js const inquirer = require(‘inquirer’); 添加一个提示,询问用户他们最喜欢的爬行动物: 索引.js const inquirer = require(‘inquirer’); inquirer ..

Read more

介绍 该<time>元素是 HTML5 的新元素。它可以更轻松地标记时间信息。让我们检查一些场景并<time>在实践中使用。 先决条件 HTML5 的一般知识。要全面了解 HTML5 标记语言,请浏览我们的系列“如何用 HTML 构建网站”。 在 HTML5 中使用时间元素 <time>允许您以人类和机器都易于理解的格式标记日期和/或时间信息。例如,如果你想标记已经是机器可读格式的时间,你可以<time>这样使用: <p> Meet me at <time>11:59</time> at the dock. </p> 或者,如果日期/时间信息不是机器可读的,您可以使用以下datetime属性对其进行标记: <p> Last updated <time datetime=”2015-11-03″> November 3rd 2015 </time>. </p> 该datetime属性的值采用以下格式之一: date: YYYY-MM-DD datetime (带时区):YYYY-MM-DDThh:mm:ss.Z(例如:2016-06-30T03:37:56-0800) datetime-local (无时区):YYYY-MM-DDThh:mm:ss time: 时:分:秒 month: YYYY-MM 这就是您可以使用新<time>元素的方式。 结论 <time> 是 HTML5 中一个重要的新元素。 要更全面地了解 HTML5 标记语言,请浏览我们的系列,如何用 ..

Read more

作者选择了电子前沿基金会 作为Write for DOnations计划的一部分接受捐赠。 介绍 Cloudflare是一种位于访问者和网站所有者服务器之间的服务,充当网站的反向代理。Cloudflare 提供内容交付网络 (CDN),以及 DDoS 缓解和分布式域名服务器服务。 Nginx是一种流行的 Web 服务器,负责托管 Internet 上一些最大和流量最高的站点。组织通常使用 Nginx 为网站提供服务,并将 Cloudflare 用作 CDN 和 DNS 提供商。 在本教程中,您将使用Cloudflare的Origin CA 证书保护由 Nginx 提供服务的网站,然后将 Nginx 配置为使用经过身份验证的拉取请求。使用此设置的优势在于您可以从 Cloudflare 的 CDN 和快速 DNS 解析中受益,同时确保所有连接都通过 Cloudflare。这可以防止任何恶意请求到达您的服务器。 先决条件 要完成本教程,您需要具备以下条件: 按照Ubuntu 20.04 初始服务器设置指南设置一台 Ubuntu 20.04 服务器,包括sudo非 root 用户和防火墙。 您的服务器上安装了 Nginx。您可以按照我们的指南了解如何在 Ubuntu 20.04 上安装 Nginx。 一个CloudFlare的帐户。 添加到您的 ..

Read more