如何在 Ubuntu 18.04 上安装和保护 Grafana

2023-11-16

笔者精选/dev/颜色接受捐赠作为为捐款而写程序。

介绍

Grafana是一个开源数据可视化和监控工具,集成了来自以下来源的复杂数据普罗米修斯, InfluxDB, Graphite, and 弹性搜索。 Grafana 允许您为数据创建警报、通知和临时过滤器,同时还可以通过内置共享功能更轻松地与团队成员协作。

在本教程中,您将安装 Grafana 并使用SSL证书 and an Nginx 反向代理。设置 Grafana 后,您可以选择通过 GitHub 配置用户身份验证,以便您更好地组织团队权限。

先决条件

要学习本教程,您将需要:

  • 按照以下步骤设置一台 Ubuntu 18.04 服务器Ubuntu 18.04 初始服务器设置指南,包括非 root 用户sudo权限和防火墙配置ufw.

  • A fully registered domain name. This tutorial uses your_domain throughout. You can purchase a domain name on Namecheap, get one for free on Freenom, or use the domain registrar of your choice.

  • 为您的服务器设置以下 DNS 记录。您可以关注如何使用 DigitalOcean 设置主机名有关如何添加它们的详细信息。

    • An A record with your_domain pointing to your server’s public IP address.
    • An A record with www.your_domain pointing to your server’s public IP address.
  • Nginx 设置如下如何在 Ubuntu 18.04 上安装 Nginx教程,包括服务器块为您的域名。

  • 配置了 Let's Encrypt 的 Nginx 服务器块,您可以通过以下方式进行设置如何在 Ubuntu 18.04 上使用 Let's Encrypt 保护 Nginx.

  • 可选地,设置GitHub身份验证,您需要一个与组织关联的 GitHub 帐户.

第 1 步 — 安装 Grafana

在第一步中,您将把 Grafana 安装到 Ubuntu 18.04 服务器上。您可以通过以下方式安装 Grafana直接从其官方网站下载或者通过APT 存储库。由于 APT 存储库可以更轻松地安装和管理 Grafana 的更新,因此您将在本教程中使用该方法。

尽管 Grafana 可用于Ubuntu 18.04 官方软件包存储库,Grafana的版本可能不是最新的,所以使用Grafana的官方仓库。

下载格拉法纳GPG key with wget, then 通过管道输出 to apt-key。这会将密钥添加到 APT 安装的受信任密钥列表中,这样您就可以下载并验证 GPG 签名的 Grafana 软件包。

  1. wget -q -O- https://packages.grafana.com/gpg.key| sudoapt-keyadd -

在此命令中,选项-q关闭状态更新消息wget, and -O输出您下载到终端的文件。这两个选项确保仅将下载文件的内容通过管道传输到apt-key.

接下来,将 Grafana 存储库添加到您的 APT 源:

  1. sudo添加 apt 存储库“deb https://packages.grafana.com/oss/deb 稳定主”

刷新 APT 缓存以更新包列表:

  1. sudo apt update

接下来,确保将从 Grafana 存储库安装 Grafana:

  1. apt 缓存政策格拉法纳

上一个命令的输出告诉您要安装的 Grafana 版本,以及从哪里检索包。验证列表顶部的安装候选是否来自官方 Grafana 存储库:https://packages.grafana.com/oss/deb.

apt-cache 策略 grafana 的输出
grafana: Installed: (none) Candidate: 9.1.3 Version table: 9.1.3 500 500 https://packages.grafana.com/oss/deb stable/main amd64 Packages ...

您现在可以继续安装:

  1. sudo apt install格拉法纳

安装 Grafana 后,使用systemctl启动 Grafana 服务器:

  1. sudosystemctl 启动 grafana-server

接下来,通过检查服务的状态来验证 Grafana 是否正在运行:

  1. sudosystemctl 状态 grafana 服务器

您将收到与此类似的输出:

grafana-server状态的输出
● grafana-server.service - Grafana instance Loaded: loaded (/usr/lib/systemd/system/grafana-server.service; disabled; vendor preset: enabled) Active: active (running) since Tue 2022-09-06 09:35:00 UTC; 5s ago Docs: http://docs.grafana.org Main PID: 22886 (grafana-server) Tasks: 5 (limit: 546) ...

This output contains information about Grafana’s process, including its status, Main Process Identifier (PID), and more. active (running) shows that the process is running correctly.

最后,启用服务在启动时自动启动 Grafana:

  1. sudo系统控制enablegrafana服务器

您将收到以下输出:

systemctl 的输出启用 grafana-server
Synchronizing state of grafana-server.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable grafana-server Created symlink /etc/systemd/system/multi-user.target.wants/grafana-server.service → /usr/lib/systemd/system/grafana-server.service.

这证实了systemd已创建自动启动 Grafana 所需的符号链接。

Grafana 现已安装并可供使用。接下来,您将使用反向代理和 SSL 证书来保护与 Grafana 的连接。

第 2 步 — 设置反向代理

使用 SSL 证书将通过加密与 Grafana 的连接来确保您的数据安全。但是,要使用此连接,您首先需要将 Nginx 重新配置为 Grafana 的反向代理。

打开您在使用 Let’s Encrypt 设置 Nginx 服务器块时创建的 Nginx 配置文件先决条件。您可以使用任何文本编辑器,但在本教程中我们将使用nano:

  1. sudo nano /etc/nginx/sites-available/your_domain

找到以下块:

/etc/nginx/sites-available/your_domain
...
	location / {
		try_files $uri $uri/ =404;
	}
...

因为您已经将 Nginx 配置为通过 SSL 进行通信,并且由于到您服务器的所有 Web 流量都已通过 Nginx,所以您只需告诉 Nginx 将所有请求转发到在端口上运行的 Grafana3000默认情况下。

删除现有的try_files在此行location block并将其替换为以下选项:

/etc/nginx/sites-available/your_domain
...
	location / {
		proxy_set_header Host $http_host;
		proxy_pass http://localhost:3000;
	}
...

这会将代理映射到适当的端口,并在标头中传递服务器名称。

另外,为了格拉法纳现场要使 WebSocket 连接正常工作,请在server部分:

/etc/nginx/sites-available/your_domain
map $http_upgrade $connection_upgrade {
	default upgrade;
	'' close;
}

server {
    ...

然后添加以下内容location部分:

/etc/nginx/sites-available/your_domain
...
	location /api/live {
		proxy_http_version 1.1;
		proxy_set_header Upgrade $http_upgrade;
		proxy_set_header Connection $connection_upgrade;
		proxy_set_header Host $http_host;
		proxy_pass http://localhost:3000;
	}
...

标头Upgrade and Connection不会从客户端发送到代理服务器。因此,为了让代理服务器了解客户端将协议更改为 WebSocket 的意图,应该显式传递这些标头。

最终配置应如下所示:

/etc/nginx/sites-available/your_domain
map $http_upgrade $connection_upgrade {
	default upgrade;
	'' close;
}

server {
	...

	root /var/www/your_domain/html;
	index index.html index.htm index.nginx-debian.html;

	server_name your_domain www.your_domain;

	location / {
		proxy_set_header Host $http_host;
		proxy_pass http://localhost:3000;
	}

	location /api/live {
		proxy_http_version 1.1;
		proxy_set_header Upgrade $http_upgrade;
		proxy_set_header Connection $connection_upgrade;
		proxy_set_header Host $http_host;
		proxy_pass http://localhost:3000;
	}
}
...

Note:如果您使用了certbot工具来设置 Let’s Encrypt SSL 证书,那么您的配置文件可能包含由 Certbot 添加的其他行和服务器块。

完成后,按保存并关闭文件CTRL+X, 其次是Y进而ENTER如果你正在使用nano.

现在,测试新设置以确保一切配置正确:

  1. sudo nginx -t

您将收到以下输出:

Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful

最后,通过重新加载 Nginx 来激活更改:

  1. sudosystemctl 重新加载 nginx

You can now access the default Grafana login screen by pointing your web browser to https://your_domain. If you’re unable to reach Grafana, verify that your firewall is set to allow traffic on port 443 and then re-trace the previous instructions.

通过加密与 Grafana 的连接,您现在可以实施额外的安全措施,首先是更改 Grafana 的默认管理凭据。

第 3 步 — 更新凭证

由于默认情况下每个 Grafana 安装都使用相同的管理凭据,因此最佳做法是尽快更改您的登录信息。在此步骤中,您将更新凭据以提高安全性。

Start by navigating to https://your_domain from your web browser. This will bring up the default login screen where you’ll see the Grafana logo, a form asking you to enter an Email or username and Password, a Log in button, and a Forgot your password? link.

Grafana login page showing prompts for email or username as well as password

Enter admin进入两个电子邮件或用户名 and Password字段,然后单击Log in button.

在下一个屏幕上,系统会要求您通过更改默认密码来提高帐户的安全性:

Change password prompt from Grafana

输入您要开始使用的密码新密码 and 确认新密码 fields.

从这里,您可以单击Submit保存新信息或按Skip跳过此步骤。如果跳过,下次登录时系统会提示您更改密码。

为了提高 Grafana 设置的安全性,请单击Save。您将返回到欢迎来到格拉法纳 page:

Grafan's home dashboard

现在,您已通过更改默认凭据来保护您的帐户。接下来,您将更改 Grafana 配置,以便没有人可以在未经您许可的情况下创建新的 Grafana 帐户。

第 4 步 — 禁用 Grafana 注册和匿名访问

Grafana 提供的选项允许访问者为自己创建用户帐户并预览仪表板而无需注册。当 Grafana 无法通过互联网访问或正在处理服务状态等公开数据时,您可能需要允许这些功能。然而,当在线使用 Grafana 处理敏感数据时,匿名访问可能会出现安全问题。要解决此问题,请对 Grafana 配置进行一些更改。

首先打开 Grafana 的主配置文件进行编辑:

  1. sudo nano/etc/grafana/grafana.ini

找到以下内容allow_sign_up指令下的[users]标题:

/etc/grafana/grafana.ini
...
[users]
# disable user signup / registration
;allow_sign_up = true
...

启用该指令true adds a Sign Up按钮到登录屏幕,允许用户自行注册并访问 Grafana。

禁用该指令false删除Sign Up按钮并增强 Grafana 的安全性和隐私性。

通过删除来取消注释该指令;在行的开头,然后将选项设置为false:

/etc/grafana/grafana.ini
...
[users]
# disable user signup / registration
allow_sign_up = false
...

接下来,找到以下内容enabled指令下的[auth.anonymous]标题:

/etc/grafana/grafana.ini
...
[auth.anonymous]
# enable anonymous access
;enabled = false
...

Setting enabled to true允许非注册用户访问您的仪表板;将此选项设置为false仅限注册用户访问仪表板。

通过删除来取消注释该指令;在行的开头,然后将选项设置为false.

/etc/grafana/grafana.ini
...
[auth.anonymous]
# enable anonymous access
enabled = false
...

保存文件并退出文本编辑器。

要激活更改,请重新启动 Grafana:

  1. sudosystemctl 重新启动 grafana-server

通过检查 Grafana 的服务状态来验证一切正常:

  1. sudosystemctl 状态 grafana 服务器

和以前一样,输出将报告 Grafana 是active (running).

Now, point your web browser to https://your_domain. To return to the Sign Up screen, bring your cursor to your avatar in the lower left of the screen and click on the Sign out option that appears.

退出后,请确认没有Sign Up按钮,并且如果不输入登录凭据,您将无法登录。

至此,Grafana 已完全配置并可供使用。接下来,您可以通过 GitHub 进行身份验证来简化组织的登录过程。

(可选)步骤 5 — 设置 GitHub OAuth 应用程序

对于登录的替代方法,您可以将 Grafana 配置为通过 GitHub 进行身份验证,这为授权 GitHub 组织的所有成员提供登录访问权限。当您希望允许多个开发人员协作和访问指标而无需创建 Grafana 特定的凭据时,这尤其有用。

首先登录与您的组织关联的 GitHub 帐户,然后导航到您的GitHub 个人资料页面.

单击下面的您的组织名称组织设置在屏幕左侧的导航菜单中。

GitHub organization settings

在下一个屏幕上,您将看到您的组织简介您可以在其中更改设置,例如您的组织显示名称, 组织Email和组织URL.

因为 Grafana 使用OAuth— 授予远程第三方访问本地资源的开放标准 — 要通过 GitHub 对用户进行身份验证,您需要创建一个新的GitHub 中的 OAuth 应用程序.

点击OAuth 应用程序链接下开发者设置在屏幕的左下侧。

如果您在 GitHub 上还没有与您的组织关联的任何 OAuth 应用程序,系统会告诉您有没有组织拥有的应用程序。否则,您将看到已连接到您的帐户的 OAuth 应用程序的列表。

点击注册申请按钮继续。

在下一个屏幕上,填写有关 Grafana 安装的以下详细信息:

  • 应用名称:这可以帮助您区分不同的 OAuth 应用程序。
  • Homepage URL: This tells GitHub where to find Grafana. Type https://your_domain into this field, replacing your_domain with your domain.
  • 应用说明:这提供了 OAuth 应用程序用途的描述。
  • Application callback URL: This is the address where users will be sent once successfully authenticated. For Grafana, this field must be set to https://your_domain/login/github.

请记住,通过 GitHub 登录的 Grafana 用户将看到您在前三个字段中输入的值,因此请务必输入有意义且适当的内容。

完成后,表格将类似于:

GitHub form for registering an OAuth Application

点击注册申请 button.

您现在将被重定向到包含以下内容的页面客户ID and 客户秘密与您的新 OAuth 应用程序关联。记下这两个值,因为您需要将它们添加到 Grafana 的主配置文件中才能完成设置。

Warning:请务必保留您的客户ID and 客户秘密在安全且非公共的位置,因为它们可以用作攻击的基础。

创建 GitHub OAuth 应用程序后,您现在可以重新配置 Grafana 以使用 GitHub 进行身份验证。

(可选)第 6 步 — 将 Grafana 配置为 GitHub OAuth 应用程序

要完成 Grafana 设置的 GitHub 身份验证,您现在将对 Grafana 配置文件进行一些更改。

首先,打开 Grafana 主配置文件。

  1. sudo nano/etc/grafana/grafana.ini

找到[auth.github]标题,并通过删除;在每一行的开头,除了;allowed_domains and ;team_ids=,在本教程中不会更改。

接下来,配置 Grafana 将 GitHub 与您的 OAuth 应用程序一起使用client_id and client_secret values.

  • Set enabled and allow_sign_up to true。这将启用 GitHub 身份验证并允许允许组织的成员自己创建帐户。请注意,此设置与allow_sign_up下的财产[users]你改变了Step 4.
  • Set client_id and client_secret为您在创建 GitHub OAuth 应用程序时获得的值。
  • Set allowed_organizations添加到您组织的名称,以确保只有您组织的成员才能注册并登录 Grafana。

完整的配置将如下所示:

/etc/grafana/grafana.ini
...
[auth.github]
enabled = true
allow_sign_up = true
client_id = your_client_id_from_github
client_secret = your_client_secret_from_github
scopes = user:email,read:org
auth_url = https://github.com/login/oauth/authorize
token_url = https://github.com/login/oauth/access_token
api_url = https://api.github.com/user
;allowed_domains =
;team_ids =
allowed_organizations = your_organization_name
...

您现在已经告诉 Grafana 它需要了解的有关 GitHub 的所有信息。要完成设置,您需要启用反向代理后面的重定向。这是通过设置一个来完成的root_url下的值[server]标题。

/etc/grafana/grafana.ini
...
[server]
root_url = https://your_domain
...

保存您的配置并关闭文件。

然后,重新启动 Grafana 以激活更改:

  1. sudosystemctl 重新启动 grafana-server

最后,验证服务是否已启动并正在运行。

  1. sudosystemctl 状态 grafana 服务器

输出将表明该服务是active (running).

Now, test your new authentication system by navigating to https://your_domain. If you are already logged into Grafana, hover your mouse over the avatar log in the lower left-hand corner of the screen, and click on Sign out in the secondary menu that appears next to your name.

在登录页面上,您将在原始页面下看到一个新部分Log in按钮,其中包括使用 GitHub 登录带有 GitHub 徽标的按钮。

Grafana login page, now showing option to sign in with GitHub

单击使用 GitHub 登录按钮将重定向到 GitHub,您将在其中登录您的 GitHub 帐户并确认您的意图授权Grafana.

Click the green, Authorize your_github_organization button.

Note:确保您的 GitHub 帐户是您批准的组织的成员,并且您的 Grafana 电子邮件地址与您的 GitHub 电子邮件地址匹配。如果您尝试使用不属于您批准的组织成员的 GitHub 帐户进行身份验证,您将收到登录失败留言告诉你,用户不是所需组织之一的成员.

您现在将使用现有的 Grafana 帐户登录。如果您登录的用户尚不存在 Grafana 帐户,Grafana 将使用以下命令创建一个新用户帐户Viewer权限,确保新用户只能使用现有的仪表板。

要更改新用户的默认权限,请打开主 Grafana 配置文件进行编辑。

  1. sudo nano/etc/grafana/grafana.ini

找到auto_assign_org_role指令下的[users]标题,并通过删除来取消注释设置;在该行的开头。

将指令设置为以下值之一:

  • Viewer:只能使用现有的仪表板。
  • Editor:可以更改用途、修改和添加仪表板。
  • Admin: 有权做任何事情。

本教程将自动分配设置为Viewer:

/etc/grafana/grafana.ini
...
[users]
...
auto_assign_org_role = Viewer
...

保存更改后,关闭文件并重新启动 Grafana:

  1. sudosystemctl 重新启动 grafana-server

检查服务的状态:

  1. sudosystemctl 状态 grafana 服务器

像以前一样,状态将显示为active (running).

此时,您已完全配置 Grafana,以允许 GitHub 组织的成员注册和使用您的 Grafana 安装。

结论

在本教程中,您安装、配置并保护了 Grafana,并且还允许组织成员通过 GitHub 进行身份验证。

要扩展当前的 Grafana 安装,请参阅官方和社区构建的仪表板列表。要了解有关使用 Grafana 的更多信息,请参阅Grafana 官方文档,或查看我们的其他监控教程.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Ubuntu 18.04 上安装和保护 Grafana 的相关文章

  • 如何监控20多个区域?

    我正在开发一个有 66 个注释的应用程序 这些注释是区域的中心 每当用户进入某个区域时 就会出现一条通知 但这仅适用于其中的前 20 个 因为监视区域的数量有限 我的问题是我不知道如何监控20多个区域 有人可以帮忙吗 set current
  • 是否可以使用java代码监视文件夹?

    有谁知道如何使用java监控文件夹 或者任何人都可以给我一个观点 我该如何开始这个 这是我的想法 启动一个线程来扫描文件夹更改 这可能是创建 删除 更新此文件夹中的文件或发生其他情况 例如上次更新 但在这种情况下 你必须控制线程循环 如果这
  • 如何使用 inotifywait 来查看文件夹中的文件而不是文件夹中的文件

    我想使用 inotifyway 来监视文件夹中新创建或移动的文件 但仅限于文件 假设我的文件夹名称为 watched folder test 文件名为 toto txt 如果我使用 mv 命令将文件移动到 Watched folder te
  • 如何查看 Laravel 中的内存使用情况?

    如何查看 Laravel 应用程序中的内存使用情况 这是为了测试并估算我需要为服务器使用假设设置多少服务器内存 RAM 资源 要查看 Laravel 应用程序的内存使用情况 请安装Laravel 调试栏 这是跟踪 Laravel 应用程序的
  • 如何在 Windows 中获取每个进程的磁盘活动

    我需要提取给定进程的磁盘统计信息 我可以获取列出的进程并获取总体信息 例如使用 WMI 和 PerformanceCounters 列出的 CPU 和内存 但信息都是捆绑在一起的 有什么方法可以提取每个进程的这些数据 有点像 Windows
  • java缓存hashmap每天都会过期

    我想要一个HashMap
  • 监控java本机内存

    我们正在监控 jvm 指标 如堆 元空间 线程和 gc 计数 并且我们能够将这些指标推送到像 prometheus 这样的监控服务器 同样 我们想要跟踪 Java 本机内存指标 jcmd VM sumary 的输出 我的问题是 是否可以通过
  • 有哪些技术可以监控一个软件的多个实例?

    我有一个自助服务亭软件 将在多个站点运行 我想远程监控他们的状态 信息亭应用程序本身已经基本完成 我现在正在创建一款软件 该软件将从一个中心位置监控所有自助服务终端 以便客户可以远程查看特定详细信息 例如 接受者的现金盒中有多少钞票 当前的
  • 将石墨指标偏移当前时间范围内的最低值

    我有带有 Graphite 指标的 Grafana 我有一个图表显示EnqueueCountActiveMQ 中的某些特定队列 问题是EnqueueCount显示自创建队列以来的所有值 因此当我将 Grafana 中的时间范围缩小到 今天到
  • 如何监控Python文件的变化?

    如果代码发生更改 我想重新启动我的 Python Web 应用程序 但是可能有大量文件可以更改 因为导入模块中的文件可能会更改 如何从导入的包 模块中获取实际的文件名 如何高效检测修改过的Python文件 有图书馆可以做到这一点吗 无耻的插
  • Spring Boot 生产监控

    Spring Boot Actuator公开了已部署容器的大量指标和信息 然而 生产操作人员可能不想在浏览器上盯着纯 JSON 对象 在生产中监控这一点的良好 标准 工具是什么 这包括图表 警报触发器等 spring boot admin
  • 如何从 Flex - AIR 执行 ping 操作?

    我很无聊 因为我的开发服务器宕机了 我正在运行命令提示符来无限期地 ping 服务器 这样我就能看到它们何时停止超时 并知道我可以再次工作 与此同时 我想制作一个 Air 应用程序来为我做这件事 这样我就可以让它发出鸣叫声或警报 或者在它开
  • Delphi XE中如何监控目录中的文件? [复制]

    这个问题在这里已经有答案了 可能的重复 文件更新时的 Delphi 通知 https stackoverflow com questions 3418562 delphi notification when a file gets upda
  • Android Studio 网络监控不起作用

    我在 Ubuntu 14 04 上运行 Android Studio 1 5 1 我想检查我的应用程序的网络使用情况 因此尝试了 Android studio 的网络监控工具 然而 对于我尝试过的所有 Android 模拟器 我只收到消息
  • beanstalkd 的统计数据/监视器/检查器

    有谁知道有一个可以监控 beanstalkd 队列的应用程序吗 我正在寻找一些可以显示管道和工作统计信息并允许您检查详细信息的东西 我对语言 平台并不是很挑剔 只是想在编写自己的语言 平台之前知道是否有可用的东西 所有这些以及至少另外两个都
  • 监控 Android 手机中的网络活动

    我想监控我的 Android 手机的网络流量 我正在考虑在 Android 上使用 tcpdump 但我不确定是否必须为手机进行交叉编译 另一个问题是 如果我想监控某个应用程序的流量数据 有什么命令可以做到这一点吗 TCPDUMP 是我最喜
  • TFDMoniFlatFileClientLink 不规则地不跟踪到文件

    我有一个TFDMoniFlatFileClientLink在表单上 文件名设置为d temp monitor txt 追踪 真 TFDConnection Params MonitorBy mbFlatFile 这有时有效 有时则不跟踪任何
  • 如何在 Linux 中获取 Apache 的“每秒请求数”?

    在 Windows for ASP 中 您可以获得 perfmon 但是 如何获得 每秒请求数 Linux 下的 Apache 这是我编写的一个简短的 bash 脚本 用于对请求率进行采样 基于迪克塞的建议 https stackoverf
  • 获取 Prometheus 中两个自定义时间戳之间的增量

    我有一个名为的普罗米修斯指标device number 我想要的是显示现在与一天 一周 一个月等之前的价值差异 这意味着减去具有两个不同时间戳的两个值 环顾四周 我没有找到任何关于如何执行此操作的有用文档 我想做但不起作用的是 sum de
  • WCF服务健康状况监控

    我刚刚实现了 WCF 服务 目前正在研究服务监控选项 我们的服务器团队目前仅托管 java 服务 希望我们的实例始终运行 因此它可以在该实例的生命周期内收集数据 他们表示将使用我们的 webmon 操作之一来获取统计信息 但我们正在使用每次

随机推荐

  • 如何在 Ubuntu 18.04 上安装 IntelliJ IDEA

    智能IDEA是一个功能齐全的 IDEJVM和安卓开发 它具有内置的调试支持 Docker and Docker 组合支持 嵌入式Git控制 集成了主要的构建自动化工具 例如Maven and Gradle 语法高亮 代码完成 ssh终端 代
  • 如何在 Debian 9 上安装 Tomcat 8.5

    Apache Tomcat 是一个开源应用程序服务器 支持 Java Servlet JavaServer Pages Java 表达式语言和 Java WebSocket 技术 它是当今世界上使用最广泛的应用程序和 Web 服务器之一 本
  • Linux 中的命令

    at是一个命令行实用程序 允许您安排在特定时间执行的命令 创建的职位at仅执行一次 在这篇文章中 我们将解释如何使用at及其配套实用程序batch atq atrm查看 删除和创建稍后执行的作业 安装中at 根据分布情况 at您的 Linu
  • 如何在 Ubuntu 18.04 上安装 Webmin

    Webmin是一个用于 Linux UNIX 系统管理的开源 Web 控制面板 Webmin 允许您管理用户 组 磁盘配额以及配置最流行的服务 包括 Web FTP 电子邮件和数据库服务器 在本教程中 我们将向您展示如何在 Ubuntu 1
  • 如何在 Ubuntu 20.04 上安装 Nvidia 驱动程序

    本文介绍如何在 Ubuntu 20 04 上安装 NVIDIA 驱动程序 如果您的 Ubuntu 机器有 NVIDIA GPU 您可以选择开源驱动程序Nouveau以及 NVIDIA 的专有驱动程序 默认情况下 Ubuntu 使用 Nouv
  • 如何列出和删除 UFW 防火墙规则

    UFW 代表简单防火墙 是一个用户友好的前端 用于管理 iptables netfilter 防火墙规则 它是默认的防火墙配置工具Ubuntu并且也可用于其他流行的 Linux 发行版 例如Debian和 Arch Linux 在本教程中
  • 如何在 Vue.js 中使用样式和类绑定

    介绍 在本文中 您将了解 Vue js 中的动态样式和类绑定 随着v bind style指令 您将在单击事件上可视化字体大小 和v bind class 您将观察如何将多个类应用于元素 虽然这可以通过 DOM 操作实现 但 Vue js
  • SQL 类似 - SQL 不类似

    SQL LIKE 与 WHERE 子句一起使用来搜索列的模式 通配符是用于指定模式的通配符 有两个通配符与 LIKE 运算符一起使用 用百分比来表示一次 多次或不出现的情况 下划线用于表示单个字符 To use SQL LIKE opera
  • Spring Security 基于角色的访问授权示例

    今天我们将研究 Spring Security 基于角色的访问和授权示例 然而 在阅读这篇文章之前 请先阅读我之前关于 Spring 4 Security MVC 登录注销示例 以获取有关 Spring 4 Security 的一些基本知识
  • 如何在 Python 3 中构造 For 循环

    在计算机编程中使用循环使我们能够自动化并多次重复类似的任务 在本教程中 我们将介绍 Pythonfor loop A for循环基于循环计数器或循环变量实现代码的重复执行 这意味着for当进入循环之前已知迭代次数时 最常使用循环 这与whi
  • Python静态方法

    Python静态方法 In this quick post we will learn how to create and use a Python static method We will also have a look at wha
  • 如何在 Ubuntu 14.04 上使用 Let's Encrypt 保护 HAProxy

    介绍 Let s Encrypt 是一个新的证书颁发机构 CA 它提供了一种获取和安装免费 TLS SSL 证书的简单方法 从而在 Web 服务器上启用加密的 HTTPS 它通过提供软件客户端 Certbot 来简化流程 该客户端尝试自动执
  • 如何在 Ruby 中使用数组

    介绍 An array是一个表示值列表的数据结构 称为elements 数组允许您在单个变量中存储多个值 在 Ruby 中 数组可以包含任何数据类型 包括数字 字符串和其他 Ruby 对象 这可以压缩和组织您的代码 使其更具可读性和可维护性
  • Python unittest - 单元测试示例

    今天我们将学习Python单元测试并浏览Python单元测试示例程序 在之前的教程中我们了解了python zip 函数 Python单元测试 Python unittest 模块用于测试源代码单元 假设 您需要测试您的项目 您知道该函数将
  • 如何在 Ubuntu VPS 上备份 PostgreSQL 数据库

    什么是 PostgreSQL PostgreSQL 是一个现代数据库管理系统 它经常用于存储和操作与网站和应用程序相关的信息 与任何类型的有价值的数据一样 实施备份方案以防止数据丢失非常重要 本指南将介绍一些备份 PostgreSQL 数据
  • 如何在 React 中构建自动完成组件

    介绍 自动完成是一种输入字段根据用户输入建议单词的功能 这有助于改善应用程序中的用户体验 例如需要搜索的情况 在本文中 您将研究如何在 React 中构建自动完成组件 您将使用固定的建议列表 事件绑定 理解键盘代码以及操作状态管理 先决条件
  • 如何使用 Nmap 扫描开放端口

    介绍 对于许多崭露头角的系统管理员来说 网络是一个广泛且令人难以承受的主题 有各种层 协议和接口 以及许多必须掌握才能理解它们的工具和实用程序 在 TCP IP 和 UDP 网络中 ports是逻辑通信的端点 单个 IP 地址可能运行许多服
  • 如何设置 Jupyter Notebook 在 Ubuntu 16.04 上运行 IPython

    介绍 IPython 是 Python 的交互式命令行界面 Jupyter Notebook 为多种语言提供了交互式 Web 界面 包括 IPython 本文将引导您设置服务器来运行 Jupyter Notebook 并教您如何连接和使用该
  • Java 中的 Restful Web 服务教程

    欢迎来到 Java 中的 Restful Web 服务教程 REST是缩写代表性状态转移 休息是一个建筑风格用于开发可通过网络访问的应用程序 Roy Fielding 在 2000 年的博士论文中提出了 REST 架构风格 宁静的网络服务
  • 如何在 Ubuntu 18.04 上安装和保护 Grafana

    笔者精选 dev 颜色接受捐赠作为为捐款而写程序 介绍 Grafana是一个开源数据可视化和监控工具 集成了来自以下来源的复杂数据普罗米修斯 InfluxDB Graphite and 弹性搜索 Grafana 允许您为数据创建警报 通知和