-
Docker 是一个开源的平台,可以让开发者打包应用及其依赖项为一个可移植的容器。本文将详细介绍如何在 Ubuntu 上安装 Docker,包括安装步骤、常见命令以及一些注意事项。 一、准备工作 在开始之前,请确保您的系统是最新的,并且已经安装了支持的 Ubuntu 版本(例如 Ubuntu 20.04 或 22.04)。可以使用以下命令来更新系统: sudo apt update sudo apt upgrade -y 1 2 二、检查系统版本 为了确认您的 Ubuntu 版本,您可以运行以下命令: lsb_release -a 1 三、安装 Docker 1. 安装必要的依赖 在安装 Docker 之前,我们需要安装一些必要的依赖包。运行以下命令: sudo apt install apt-transport-https ca-certificates curl software-properties-common 1 2. 添加 Docker 的官方 GPG 密钥 通过以下命令添加 Docker 的官方 GPG 密钥,以确保下载的软件包的完整性: curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - 1 3. 添加 Docker 的 APT 源 接下来,我们需要添加 Docker 的 APT 源到您的系统中: sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" 1 4. 更新 APT 包索引 添加源后,更新 APT 包索引: sudo apt update 1 5. 安装 Docker CE 现在可以安装 Docker 社区版(Docker CE): sudo apt install docker-ce 1 6. 验证 Docker 是否安装成功 安装完成后,您可以运行以下命令来验证 Docker 是否成功安装: sudo systemctl status docker 1 如果 Docker 正在运行,您将看到类似以下的输出: ● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) 1 2 3 四、启动与测试 Docker 1. 启动 Docker 服务 如果 Docker 服务没有自动启动,可以手动启动它: sudo systemctl start docker 1 2. 运行 Hello World 容器 您可以使用以下命令来测试 Docker 是否工作正常: sudo docker run hello-world 1 如果一切正常,您应该会看到一条欢迎消息。 五、设置 Docker 自动启动 1. 启用 Docker 服务 您可以使用以下命令启用 Docker 服务,使其在系统启动时自动启动: sudo systemctl enable docker 1 运行此命令后,Docker 服务将在每次系统重启时自动启动。 2. 检查服务状态 要确认 Docker 服务已设置为自动启动,可以运行以下命令: sudo systemctl is-enabled docker 1 如果输出为 enabled,则表示 Docker 服务已成功配置为在启动时自动运行。 3. 启动 Docker 服务(如未运行) 如果 Docker 服务当前未运行,可以手动启动它: sudo systemctl start docker 1 4. 验证 Docker 是否正常运行 您可以再次检查 Docker 的状态,确保其正在运行: sudo systemctl status docker 1 六、添加 Docker 用户组(可选) 如果您希望普通用户也能运行 Docker 命令,而无需每次都使用 sudo,可以将该用户添加到 docker 用户组: sudo usermod -aG docker $USER 1 添加后,需要注销并重新登录,或者重启系统,以便更改生效。 七、常用 Docker 命令 以下是一些常用的 Docker 命令,表格形式展示: 命令 描述 sudo docker ps 列出当前运行的容器 sudo docker images 列出本地存储的所有镜像 sudo docker run [image] 使用指定镜像创建并运行一个新容器 sudo docker stop [container] 停止运行中的容器 sudo docker rm [container] 删除一个容器 sudo docker rmi [image] 删除一个镜像 sudo docker exec -it [container] /bin/bash 进入运行中的容器并打开 bash shell 八、卸载 Docker 如果您想完全卸载 Docker,可以使用以下命令: sudo apt remove docker-ce sudo apt purge docker-ce sudo rm -rf /var/lib/docker 1 2 3 在 Ubuntu 上安装 Docker 后,您可以设置 Docker 服务在系统启动时自动启动,并将其添加到系统守护进程中。以下是如何实现这一点的步骤。 总结 通过以上步骤,您已成功在 Ubuntu 上安装 Docker,并能够验证其安装情况。并且设置 Docker 在系统启动时自动启动,并且可以选择将自己添加到 Docker 用户组中以简化命令使用。Docker 的强大功能可以帮助您更高效地管理和部署应用。希望这篇指南对您有所帮助,祝您使用愉快! ———————————————— 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原文链接:https://blog.csdn.net/Stromboli/article/details/142486565
-
一、配置文件 摄像头对MDC进行单端口连接,配置文件设置如下:二、验证摄像头数据收 采用产品文档指令rtfevent list | grep -i Camera,查询摄像头的event信息,查询结果有event信息表示摄像头数据处于正常收发状态。查询第一个事件(camera_decoded_mbuf_29),信息为:执行产品文档命令,成功显示event信息,验证数据收发成功。三、MDC_610 自带查询数据函数(函数功能:获取指定通道摄像头内部数据函数)int32_t GetCameraInternalData(const std::string &slotId, CameraInternalData &data);返回值为int32_t 返回值为0表示获取数据成功利用该函数书写获取摄像头数据代码如下:经过交叉编译后,将编译文件下载至MDC,运行结果:换了几个接口也是数据获取失败,不知道问题出在哪,希望各位大佬提一提意见,感激不尽!!!
-
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 简介 Redis 是一个内存中的键值存储,以其灵活性、性能和广泛的语言支持而闻名。在本指南中,我们将演示如何在 Ubuntu 16.04 服务器上安装和配置 Redis。 先决条件 要完成本指南,您需要访问 Ubuntu 16.04 服务器。您需要一个具有 sudo 权限的非根用户,以执行此过程所需的管理功能。您可以按照我们的 Ubuntu 16.04 初始服务器设置指南来了解如何设置具有这些权限的帐户。 当您准备好开始时,请使用您的 sudo 用户登录到 Ubuntu 16.04 服务器并继续以下操作。 安装构建和测试依赖项 为了获得 Redis 的最新版本,我们将从源代码编译和安装软件。在下载代码之前,我们需要满足构建依赖项,以便编译软件。 为此,我们可以从 Ubuntu 存储库安装 build-essential 元包。我们还将下载 tcl 包,这样我们就可以测试我们的二进制文件。 我们可以通过输入以下命令来更新本地的 apt 包缓存并安装依赖项: sudo apt-get update sudo apt-get install build-essential tcl 1 2 下载、编译和安装 Redis 接下来,我们可以开始构建 Redis。 下载并解压源代码 由于我们不需要长期保留我们将要编译的源代码(我们可以随时重新下载它),我们将在 /tmp 目录中构建。让我们现在切换到那里: cd /tmp 1 现在,下载最新稳定版本的 Redis。这始终可在稳定的下载 URL 上找到: curl -O http://download.redis.io/redis-stable.tar.gz 1 通过输入以下命令解压 tarball: tar xzvf redis-stable.tar.gz 1 进入刚刚提取的 Redis 源目录结构: cd redis-stable 1 构建和安装 Redis 现在,我们可以通过输入以下命令来编译 Redis 二进制文件: make 1 在编译二进制文件后,运行测试套件以确保一切都构建正确。您可以通过输入以下命令来执行此操作: make test 1 这通常需要几分钟才能运行。完成后,您可以通过输入以下命令将二进制文件安装到系统中: sudo make install 1 配置 Redis 现在 Redis 已安装,我们可以开始配置它。 首先,我们需要创建一个配置目录。我们将使用传统的 /etc/redis 目录,可以通过输入以下命令来创建: sudo mkdir /etc/redis 1 现在,复制 Redis 源存档中包含的示例 Redis 配置文件: sudo cp /tmp/redis-stable/redis.conf /etc/redis 1 接下来,我们可以打开文件以调整配置中的一些项目: sudo nano /etc/redis/redis.conf 1 在文件中,找到 supervised 指令。当前,此项设置为 no。由于我们正在运行使用 systemd init 系统的操作系统,我们可以将其更改为 systemd: . . . # If you run Redis from upstart or systemd, Redis can interact with your # supervision tree. Options: # supervised no - no supervision interaction # supervised upstart - signal upstart by putting Redis into SIGSTOP mode # supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET # supervised auto - detect upstart or systemd method based on # UPSTART_JOB or NOTIFY_SOCKET environment variables # Note: these supervision methods only signal "process is ready." # They do not enable continuous liveness pings back to your supervisor. supervised systemd . . . 接下来,找到 dir 目录。此选项指定 Redis 将用于转储持久数据的目录。我们需要选择一个 Redis 将具有写权限且普通用户无法查看的位置。 我们将使用 /var/lib/redis 目录,稍后我们将在其中创建: . . . # The working directory. # # The DB will be written inside this directory, with the filename specified # above using the 'dbfilename' configuration directive. # # The Append Only File will also be created inside this directory. # # Note that you must specify a directory here, not a file name. dir /var/lib/redis . . . 完成后保存并关闭文件。 创建 Redis systemd 单元文件 接下来,我们可以创建一个 systemd 单元文件,以便 init 系统可以管理 Redis 进程。 首先创建并打开 /etc/systemd/system/redis.service 文件: sudo nano /etc/systemd/system/redis.service 1 在文件中,我们可以在 [Unit] 部分开始添加描述,并定义一个要求,在启动此服务之前网络必须可用: [Unit] Description=Redis 内存数据存储 After=network.target在 [Service] 部分,我们需要指定服务的行为。出于安全考虑,我们不应该以 root 用户身份运行服务。我们应该使用一个专门的用户和组,我们将简单地称之为 redis。我们将立即创建这些。 要启动服务,我们只需要调用 redis-server 二进制文件,指向我们的配置。要停止它,我们可以使用 Redis 的 shutdown 命令,可以用 redis-cli 二进制文件执行。此外,由于我们希望 Redis 在可能的情况下从故障中恢复,我们将 Restart 指令设置为 “always”: [Unit] Description=Redis 内存数据存储 After=network.target [Service] User=redis Group=redis ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf ExecStop=/usr/local/bin/redis-cli shutdown Restart=always 最后,在 [Install] 部分,我们可以定义服务在启用时应附加到的 systemd 目标(配置为在启动时启动): [Unit] Description=Redis 内存数据存储 After=network.target [Service] User=redis Group=redis ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf ExecStop=/usr/local/bin/redis-cli shutdown Restart=always [Install] WantedBy=multi-user.target 完成后保存并关闭文件。 创建 Redis 用户、组和目录 现在,我们只需创建在前两个文件中引用的用户、组和目录。 首先创建 redis 用户和组。可以通过输入以下命令一次性完成: sudo adduser --system --group --no-create-home redis 1 现在,我们可以通过输入以下命令创建 /var/lib/redis 目录: sudo mkdir /var/lib/redis 1 我们应该让 redis 用户和组拥有此目录的所有权: sudo chown redis:redis /var/lib/redis 1 调整权限,以便普通用户无法访问此位置: sudo chmod 770 /var/lib/redis 1 启动和测试 Redis 现在,我们准备启动 Redis 服务器。 启动 Redis 服务 通过输入以下命令启动 systemd 服务: sudo systemctl start redis 1 通过运行以下命令检查服务是否没有错误: sudo systemctl status redis 1 您应该看到类似于以下内容: ● redis.service - Redis 服务器 Loaded: loaded (/etc/systemd/system/redis.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2016-05-11 14:38:08 EDT; 1min 43s ago Process: 3115 ExecStop=/usr/local/bin/redis-cli shutdown (code=exited, status=0/SUCCESS) Main PID: 3124 (redis-server) Tasks: 3 (limit: 512) Memory: 864.0K CPU: 179ms CGroup: /system.slice/redis.service └─3124 /usr/local/bin/redis-server 127.0.0.1:6379 . . . 测试 Redis 实例功能 要测试服务是否正常运行,使用命令行客户端连接到 Redis 服务器: redis-cli 在随后的提示符中,通过输入以下内容测试连接: ping 您应该看到: PONG 通过输入以下内容检查是否可以设置键: set test "It's working!" OK 现在,通过输入以下内容检索值: get test 您应该能够检索到我们存储的值:"It's working!" 退出 Redis 提示符返回到 shell: exit 作为最后的测试,让我们重新启动 Redis 实例: sudo systemctl restart redis 现在,再次连接客户端并确认您的测试值仍然可用: redis-cli get test 您的键的值仍然可以访问: "It's working!" 完成后再次返回到 shell: exit 启用 Redis 开机自启动 如果你的所有测试都通过了,并且你希望在服务器启动时自动启动 Redis,你可以启用 systemd 服务。 要这样做,请输入以下命令: sudo systemctl enable redis Created symlink from /etc/systemd/system/multi-user.target.wants/redis.service to /etc/systemd/system/redis.service. 结论 现在你的 Ubuntu 16.04 服务器上应该已经安装并配置了 Redis 实例。要了解更多关于如何保护你的 Redis 安装的信息,请参考我们的《如何在 Ubuntu 14.04 上保护你的 Redis 安装》(从第3步开始)。尽管它是针对 Ubuntu 14.04 编写的,但在 16.04 上也应该大部分适用。 ———————————————— 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原文链接:https://blog.csdn.net/rubys007/article/details/140160542
-
在Ubuntu 20.04上搭建Chipyard环境时,执行build-setup.sh并安装RISC-V工具链过程中可能会遇到一些问题。以下是一个详细的步骤和解决方法:前提条件确保系统已更新并安装了必要的软件包。检查是否有较新的依赖库或工具。确保网络连接稳定。安装基本依赖包首先,确保所有必需的依赖包都已正确安装。sudo apt update sudo apt upgrade -y sudo apt install -y git autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev下载并配置Chipyard然后,下载Chipyard仓库并进入目录。git clone https://github.com/ucb-bar/chipyard.git cd chipyard git checkout <version> # 替换<version>为你使用的版本,如1.8.0或1.11.0 ./scripts/init-submodules-no-riscv-tools.sh执行build-setup.sh脚本接下来,执行脚本进行设置。如果遇到错误,请根据以下常见错误及其解决方案进行处理:./scripts/build-setup.sh riscv-tools常见错误及解决方案1. Error: GHC not found or Version mismatchGHC(The Glasgow Haskell Compiler)的版本可能不匹配或未找到。可以安装适当的版本。sudo apt install ghc或者使用更高版本的ghcup来管理GHC版本:curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh ghcup install ghc <version> # 替换<version>为所需的GHC版本 ghcup set ghc <version>2. Permission Denied Errors这些错误通常与权限问题有关,确保你有足够的权限运行脚本和访问文件。sudo chmod +x ./scripts/build-setup.sh如果问题依然存在,可以尝试以超级用户身份运行:sudo ./scripts/build-setup.sh riscv-tools3. Network Connectivity Issues由于网络波动,脚本可能下载失败。这种情况下可以手动下载需要的文件,并放置在相应目录中,然后重新执行脚本。4. Unsupported riscv-tools repository or branch确保你使用的riscv-tools仓库和分支是支持的。cd toolchains/riscv-tools git checkout master # 或者用适合的分支 git pull手动构建RISC-V工具链如果自动构建仍然失败,可以尝试手动构建RISC-V工具链:git clone --recursive https://github.com/riscv/riscv-gnu-toolchain cd riscv-gnu-toolchain ./configure --prefix=/opt/riscv make将生成的工具链添加到环境变量中:echo 'export PATH=/opt/riscv/bin:$PATH' >> ~/.bashrc source ~/.bashrc最终检查成功完成后,验证工具链是否正确安装:which riscv64-unknown-elf-gcc riscv64-unknown-elf-gcc --version如果没有错误输出,则表示工具链已正确安装并配置。总结通过上述步骤,你应该能够在Ubuntu 20.04上成功搭建Chipyard环境并安装RISC-V工具链。
-
1. Obtain the ISO File of UbuntuSupport versionUbuntu-18.04-desktop-amd64Ubuntu-20.04-desktop-amd64 2. Preparing Ubuntu ECSsSTEP 1 Upload the ISO image to OBS bucket and import Image.STEP 2 Use the Ubuntu image to create an ECSSTEP 3 Complete Ubuntu installationvideovideovideoSTEP 4 (Optional) Open termianl and enable sshsudo susudu apt install openssh-serversudo systemctl start sshsudo systemctl enable ssh3. Configure3.1 Videovideovideovideovideo3.3 STEPSSTEP 1 Prevent the system from entering suspend modesudo susudo systemctl mask suspend.targetSTEP 2 Install vim, libxcb-xinerama0, gawksudo suapt updateapt install vimsudo apt-get install libxcb-xinerama0sudo apt install gawkSTEP 3 Install the Linux Kernel (For Ubuntu 20.04 Only)sudo apt-get install linux-image-5.15.0-72-generic linux-headers-5.15.0-72-generic linux-modules-extra-5.15.0-72-genericgrep menuentry /boot/grub/grub.cfgRecord the location of the 5.15.0-72 version, as shown in the figure for kernel 2.sudo vim /etc/default/grubChange the value of "GRUB_DEFAULT" to "1 > 2", where 2 is the location of the 5.15.0-72 version, and add "GRUB_SAVEDEFAULT=true".Update configurationssudo update-grubsudo rebootSTEP 4 Install sshapt updateapt install openssh-serverservice sshd startSTEP 5 Config sshd_configvim /etc/ssh/sshd_configChange the value of "ChallengeResponseAuthentication" in the "sshd_config" file to "yes".STEP 6 Install pythonpython3 --versionapt install python3STEP 7 Install Cloud-initapt updateapt install cloud-initSTEP 8 Config Cloud-initvim /etc/cloud/cloud.cfgAdd the following configuration to the last linedatasource_list: [ OpenStack ] datasource: OpenStack: metadata_urls: ['http://169.254.169.254'] max_wait: 120 timeout: 5network: config: disabled Change the value of "disable_root" to "false":Find the "cloud_config_modules" configuration item list and delete the "- locale" configuration itemFind the "cloud_init_modules" configuration item list and move "- ssh" from the last to the firstSTEP 9 Check Cloud-Init configurationscloud-init init --localSTEP 10 Install KVMvim /etc/initramfs-tools/modulesAdd the Virtio driver to the "/etc/initramfs-tools/modules" file.# Examples: # # raid1 # sd_mOd virtio_blkvirtio_scsivirtio_netvirtio_pcivirtio_ringvirtioRegenerate initrdupdate-initramfs -uSTEP 11 Obtaining Huawei Delivery Agent (HDA) Packagewget https://workspace-hdp-gray-cn-south-1.obs.cn-south-1.myhuaweicloud.com/WorkspaceHDP/HDPAgent/23.8.2/Workspace_HDP_LinuxDesktop_23.8.2.1117.isocp Workspace_HDP_LinuxDesktop_23.8.2.1117.iso /tmpSTEP 12 Install HDAmount /tmp/Workspace_HDP_LinuxDesktop_23.8.2.1117.iso /mntcd /mnt/bin/bash autorun.shThe system will restartSTEP 13 Check HDA versioncat /usr/local/hdpserver/version.txtsudo apt-mark hold `uname -r`STEP 14 Disable animations in the GNOME desktop environmentsudo vi /etc/profileAdd the following configuration at the last line of the file:gsettings set org.gnome.desktop.interface enable-animations falseSTEP 15 Setting button-layoutsudo touch /usr/share/glib-2.0/schemas/19_mysettings.gschema.overridesudo vi /usr/share/glib-2.0/schemas/19_mysettings.gschema.overrideAdd the following configuration to the file:[org.gnome.desktop.wm.preferences]button-layout=':minimize,maximize,close'STEP 16 Reload the configuration filesudo glib-compile-schemas /usr/share/glib-2.0/schemasSTEP 17 Obtain and install Sysagentwget https://workspace-hdp-gray-cn-east-3.obs.cn-east-3.myhuaweicloud.com/WorkspaceHDP/HDPSysAgent/24.2.0/HDPSysAgentPackage_Linux-x86_64_Server_Release.zipmv HDPSysAgentPackage_Linux-x86_64_Server_Release.zip /tmpcd /tmpunzip HDPSysAgentPackage_Linux-x86_64_Server_Release.zip -d HDPSysAgentFirstcd HDPSysAgentFirstunzip HDPSysAgent_Linux_Server.zip -d HDPSysAgentSecondcd HDPSysAgentSecondbash install.shSuccess prompt: “----------------install HDPSysAgent success----------”STEP 18 Clean cachecd /usr/local/hdpserver/hwsysagent/scripts20bash cleanCache.shSTEP 19 Remove Software Update Notifiersudo apt-get updatesudo apt-get remove update-notifier4. Creating imageSTEP 1 Stopping the ECSSTEP 2 Create image
-
运行了MDC300sample-1.0.107.2中的Ascendcl_sample,模型推理和编译都没有问题,把最终生成的编译文件bin,模型文件model,图片image发到mini上面运行,结果报错。
-
介绍 DNS,即域名系统,在学习如何配置网站和服务器时,通常是一个难以正确配置的组件。虽然大多数人可能会选择使用由其托管公司或域名注册商提供的DNS服务器,但自己创建DNS服务器也有一些优势。 在本指南中,我们将讨论如何在Ubuntu 14.04机器上安装和配置Bind9 DNS服务器作为缓存或转发DNS服务器。这两种配置在为机器网络提供服务时都有优势。 先决条件和目标 要完成本指南,您首先需要熟悉一些常见的DNS术语。查看本指南以了解我们将在本指南中实施的一些概念。 我们将演示两种实现类似目标的单独配置:缓存和转发DNS服务器。 要跟随操作,您需要访问两台计算机(至少一台应为Ubuntu 14.04服务器)。一台将充当客户端,另一台将配置为DNS服务器。我们示例配置的详细信息如下: 角色 IP地址 DNS服务器 192.0.2.1 客户端 192.0.2.100 我们将向您展示如何配置客户端机器以使用DNS服务器进行查询。我们将向您展示如何根据您的需求在DNS服务器上配置两种不同的配置。 缓存DNS服务器 第一个配置将是缓存DNS服务器。这种类型的服务器也被称为解析器,因为它处理递归查询,并通常可以处理从其他服务器获取DNS数据的繁重工作。 当缓存DNS服务器找到客户端查询的答案时,它将答案返回给客户端。但它还将在其缓存中存储答案,存储时间由记录的TTL值决定。然后可以将缓存用作后续请求的来源,以加快总往返时间。 您在网络配置中可能拥有的几乎所有DNS服务器都将是缓存DNS服务器。这些服务器弥补了大多数客户机上实现的不足的DNS解析器库。缓存DNS服务器对许多情况都是一个不错的选择。如果您不希望依赖于您的ISP的DNS或其他公共可用的DNS服务器,那么制作自己的缓存服务器是一个不错的选择。如果它与客户机在物理上很近,它也很可能提高DNS查询时间。 转发DNS服务器 我们将演示的第二个配置是转发DNS服务器。从客户端的角度来看,转发DNS服务器看起来几乎与缓存服务器相同,但机制和工作负载是完全不同的。 转发DNS服务器提供了与维护缓存以改善客户端DNS解析时间相同的优势。但它实际上并不执行递归查询。相反,它将所有请求转发到外部解析服务器,然后缓存结果以供以后的查询使用。 这使得转发服务器可以从其缓存中响应,而无需执行所有递归查询的工作。这允许服务器仅进行单个请求(转发的客户端请求),而无需执行整个递归例程。这在外部带宽传输昂贵的环境中可能是一个优势,在这种环境中,您的缓存服务器可能需要经常更改,或者当您希望将本地查询转发到一个服务器,将外部查询转发到另一个服务器时。 在DNS服务器上安装Bind 无论您希望使用哪种配置选择,实施Bind DNS服务器的第一步是安装实际软件。 Bind软件可在Ubuntu的默认存储库中找到,因此我们只需要更新本地软件包索引,并使用apt安装软件。我们还将包括文档和一些常用实用程序: sudo apt-get update sudo apt-get install bind9 bind9utils bind9-doc 现在Bind组件已安装,我们可以开始配置服务器。转发服务器将使用缓存服务器配置作为起点,因此无论您的最终目标是什么,首先将服务器配置为缓存服务器。 配置为缓存DNS服务器 首先,我们将介绍如何配置Bind以充当缓存DNS服务器。此配置将强制服务器在客户端发出查询时递归地寻找其他DNS服务器的答案。这意味着它正在依次查询每个相关的DNS服务器,直到找到整个响应。 默认情况下,Bind配置文件保存在/etc/bind目录中。现在进入该目录: cd /etc/bind 我们不会关心该目录中的大多数文件。主配置文件称为named.conf(named和bind是同一应用程序的两个名称)。此文件简单地引用named.conf.options文件,named.conf.local文件和named.conf.default-zones文件。 对于缓存DNS服务器,我们只会修改named.conf.options文件。使用sudo权限在文本编辑器中打开此文件: sudo nano named.conf.options 去除注释以提高可读性后,文件如下所示: options { directory "/var/cache/bind"; dnssec-validation auto; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; }; 要配置缓存,第一步是设置访问控制列表(ACL)。 作为用于解析递归查询的DNS服务器,我们不希望DNS服务器被恶意用户滥用。一种称为DNS放大攻击的攻击尤其麻烦,因为它可能导致您的服务器参与分布式拒绝服务攻击。 DNS放大攻击是恶意用户试图使互联网上的服务器或站点宕机的一种方式。为此,他们尝试找到将解析递归查询的公共DNS服务器。他们伪造受害者的IP地址并发送一个将向DNS服务器返回大型响应的查询。这样一来,DNS服务器会用大负载响应针对受害者服务器的小请求,有效地放大了攻击者的可用带宽。 托管公共递归DNS服务器需要大量特殊配置和管理。为了避免您的服务器被用于恶意目的的可能性,我们将配置一个我们信任的IP地址或网络范围的列表。 在options块之上,我们将创建一个名为acl的新块。为您正在配置的ACL组创建一个标签。在本指南中,我们将称该组为goodclients。 acl goodclients { }; 在此块中,列出应允许使用此DNS服务器的IP地址或网络。由于我们的服务器和客户端都在同一个/24子网中运行,我们将将示例限制为此网络。我们还将添加localhost和localnets,它们将尝试自动执行此操作: acl goodclients { 192.0.2.0/24; localhost; localnets; }; 现在我们有了一个我们希望解析请求的客户端的ACL,我们可以在options块中配置这些功能。在此块中,添加以下行: options { directory "/var/cache/bind"; recursion yes; allow-query { goodclients; }; . . . 我们明确打开了递归,并配置了allow-query参数以使用我们的ACL规范。我们也可以使用不同的参数,比如allow-recursion来引用我们的ACL组。如果存在且递归打开,则allow-recursion将指示可以使用递归服务的客户端列表。 但是,如果未设置allow-recursion,则Bind将退回到allow-query-cache列表,然后是allow-query列表,最后是默认的localnets和localhost。由于我们正在配置仅缓存服务器(它没有自己的权威区域,也不转发请求),allow-query列表将始终仅适用于递归。我们使用它是因为这是指定ACL的最一般方式。 完成这些更改后,保存并关闭文件。 实际上,这就是缓存DNS服务器所需的全部内容。如果您决定使用此服务器类型,请随时跳转到后面了解如何检查配置文件、重新启动服务和实施客户端配置。 否则,请继续阅读,了解如何设置转发DNS服务器。 配置为转发 DNS 服务器 如果转发 DNS 服务器更适合您的基础架构,我们可以轻松地进行设置。 我们将从缓存服务器配置中离开的配置开始。named.conf.options 文件应该如下所示: acl goodclients { 192.0.2.0/24; localhost; localnets; }; options { directory "/var/cache/bind"; recursion yes; allow-query { goodclients; }; dnssec-validation auto; auth-nxdomain no; # 符合 RFC1035 listen-on-v6 { any; }; }; 我们将使用相同的 ACL 列表来限制我们的 DNS 服务器只能为特定的客户端提供服务。但是,我们需要更改配置,以便服务器不再尝试执行递归查询。 为此,我们不将 recursion 更改为 no。转发服务器仍然通过回答非权威区域的查询来提供递归服务。相反,我们需要设置一个缓存服务器列表,将我们的请求转发到这些服务器。 这将在 options {} 块内完成。首先,我们创建一个名为 forwarders 的块,其中包含我们要转发请求的递归名称服务器的 IP 地址。在我们的指南中,我们将使用 Google 的公共 DNS 服务器(8.8.8.8 和 8.8.4.4): . . . options { directory "/var/cache/bind"; recursion yes; allow-query { goodclients; }; forwarders { 8.8.8.8; 8.8.4.4; }; . . . 之后,我们应该将 forward 指令设置为 “only”,因为此服务器将转发所有请求,不应尝试自行解析请求。 完成后,配置文件将如下所示: acl goodclients { 192.0.2.0/24; localhost; localnets; }; options { directory "/var/cache/bind"; recursion yes; allow-query { goodclients; }; forwarders { 8.8.8.8; 8.8.4.4; }; forward only; dnssec-validation auto; auth-nxdomain no; # 符合 RFC1035 listen-on-v6 { any; }; }; 我们应该做的最后一项更改是 dnssec 参数。根据当前的配置,根据转发的 DNS 服务器的配置,您可能会在日志中看到以下类似的错误: Jun 25 15:03:29 cache named[2512]: error (chase DS servers) resolving 'in-addr.arpa/DS/IN': 8.8.8.8#53 Jun 25 15:03:29 cache named[2512]: error (no valid DS) resolving '111.111.111.111.in-addr.arpa/PTR/IN': 8.8.4.4#53 为了避免这种情况,将 dnssec-validation 设置为 “yes” 并显式启用 dnssec: . . . forward only; dnssec-enable yes; dnssec-validation yes; auth-nxdomain no; # 符合 RFC1035 . . . 完成后保存并关闭文件。现在您应该已经设置了一个转发 DNS 服务器。继续下一节以验证您的配置文件并重新启动守护程序。 测试您的配置并重新启动 Bind 现在您已经将 Bind 服务器配置为缓存 DNS 服务器或转发 DNS 服务器,我们准备实施我们的更改。 在我们在系统上重新启动 Bind 服务器之前,我们应该使用 Bind 提供的工具来检查我们的配置文件的语法。 您可以通过输入以下命令轻松地执行此操作: sudo named-checkconf 1 如果您的配置中没有语法错误,shell 提示符将立即返回,而不显示任何输出。 如果您的配置文件中存在语法错误,您将收到有关错误及其发生的行号的警告。如果发生这种情况,请返回并检查文件中的错误。 当您验证配置文件没有任何语法错误时,重新启动 Bind 守护程序以实施更改: sudo service bind9 restart 之后,当您设置客户端机器时,请在服务器上监视服务器日志,以确保一切顺利。在服务器上保持此运行: sudo tail -f /var/log/syslog 现在,打开一个新的终端窗口来配置您的客户端机器。 配置客户端机器 现在您的服务器已经运行起来,您可以配置客户端机器以使用此 DNS 服务器进行查询。 登录到您的客户端机器。确保您使用的客户端已在您为 DNS 服务器设置的 ACL 组中指定。否则,DNS 服务器将拒绝为客户端提供服务。 我们需要编辑 /etc/resolv.conf 文件,将我们的服务器指向名称服务器。在这里所做的更改将只持续到重新启动,这对于测试来说非常好。如果我们对测试结果满意,我们可以使这些更改永久生效。 使用具有 sudo 权限的文本编辑器打开文件: sudo nano /etc/resolv.conf 该文件将通过设置 nameserver 指令列出要用于解析查询的 DNS 服务器。注释掉所有当前条目,并添加一个 nameserver 行,将其指向您的 DNS 服务器: nameserver 192.0.2.1 # nameserver 8.8.4.4 # nameserver 8.8.8.8 # nameserver 209.244.0.3 保存并关闭文件。 现在,您可以使用一些常见的工具来测试查询是否可以正确解析。 您可以使用 ping 来测试是否可以连接到域: ping -c 1 google.com PING google.com (173.194.33.1) 56(84) bytes of data. 64 bytes from sea09s01-in-f1.1e100.net (173.194.33.1): icmp_seq=1 ttl=55 time=63.8 ms --- google.com ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 63.807/63.807/63.807/0.000 ms 这意味着我们的客户端可以使用我们的 DNS 服务器连接到 google.com。 您可以使用 dig 等专用于 DNS 的工具来获取更详细的信息。这次尝试不同的域: dig linuxfoundation.org ; <<>> DiG 9.9.5-3-Ubuntu <<>> linuxfoundation.org ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35417 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;linuxfoundation.org. IN A ;; ANSWER SECTION: linuxfoundation.org. 6017 IN A 140.211.169.4 ;; Query time: 36 msec ;; SERVER: 192.0.2.1#53(192.0.2.1) ;; WHEN: Wed Jun 25 15:45:57 EDT 2014 ;; MSG SIZE rcvd: 64 您可以看到查询花费了 36 毫秒。如果我们再次发出请求,服务器应该从其缓存中获取数据,从而减少响应时间: dig linuxfoundation.org 1 ; <<>> DiG 9.9.5-3-Ubuntu <<>> linuxfoundation.org ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18275 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;linuxfoundation.org. IN A ;; ANSWER SECTION: linuxfoundation.org. 6012 IN A 140.211.169.4 ;; Query time: 1 msec ;; SERVER: 192.0.2.1#53(192.0.2.1) ;; WHEN: Wed Jun 25 15:46:02 EDT 2014 ;; MSG SIZE rcvd: 64 如您所见,缓存的响应速度明显更快。 我们还可以使用 IP 地址进行反向查找,使用 dig 的 -x 选项: dig -x 140.211.169.4 1 ; <<>> DiG 9.9.5-3-Ubuntu <<>> -x 140.211.169.4 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61516 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;4.169.211.140.in-addr.arpa. IN PTR ;; ANSWER SECTION: 4.169.211.140.in-addr.arpa. 3402 IN CNAME 4.0-63.169.211.140.in-addr.arpa. 4.0-63.169.211.140.in-addr.arpa. 998 IN PTR load1a.linux-foundation.org. ;; Query time: 31 msec ;; SERVER: 192.0.2.1#53(192.0.2.1) ;; WHEN: Wed Jun 25 15:51:23 EDT 2014 ;; MSG SIZE rcvd: 117 如您所见,反向查找也成功了。 回到您的 DNS 服务器,您应该查看在测试期间是否记录了任何错误。可能出现的一个常见错误如下所示: . . . Jun 25 13:16:22 cache named[2004]: error (network unreachable) resolving 'ns4.apnic.net/A/IN': 2001:dc0:4001:1:0:1836:0:140#53 Jun 25 13:16:22 cache named[2004]: error (network unreachable) resolving 'ns4.apnic.com/A/IN': 2001:503:a83e::2:30#53 Jun 25 13:16:23 cache named[2004]: error (network unreachable) resolving 'sns-pb.isc.org/AAAA/IN': 2001:500:f::1#53 Jun 25 13:16:23 cache named[2004]: error (network unreachable) resolving 'ns3.nic.fr/A/IN': 2a00:d78:0:102:193:176:144:22#53 这些指示服务器正在尝试解析 IPv6 信息,但服务器未配置为使用 IPv6。您可以通过告知 Bind 仅使用 IPv4 来解决此问题。 为此,使用具有 sudo 权限的文本编辑器打开 /etc/default/bind9 文件: sudo nano /etc/default/bind9 在其中,修改 OPTIONS 参数以包含 -4 标志,以强制仅使用 IPv4: OPTIONS="-u bind -4" 保存并关闭文件。 重新启动服务器: sudo service bind9 restart 您将不会再在日志中看到这些错误。 使客户端 DNS 设置永久生效 如前所述,将客户端机器指向我们的 DNS 服务器的 /etc/resolv.conf 设置在重启后将不会保留。为了使更改持久化,我们需要修改用于生成此文件的文件。 如果客户端机器正在运行 Debian 或 Ubuntu,请使用 sudo 权限打开 /etc/network/interfaces 文件: sudo nano /etc/network/interfaces 查找 dns-nameservers 参数。您可以删除现有条目并用您的 DNS 服务器替换它们,或者只需将您的 DNS 服务器添加为选项之一: . . . iface eth0 inet static address 111.111.111.111 netmask 255.255.255.0 gateway 111.111.0.1 dns-nameservers 192.0.2.1 . . . 完成后保存并关闭文件。下次启动时,您的设置将被应用。 如果客户端正在运行 CentOS 或 Fedora,则需要打开 /etc/sysconfig/network/network-scripts/ifcfg-eth0 文件: sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0 在文件中查找以 DNS 开头的行。将 DNS1 更改为您的 DNS 服务器。如果您不希望使用其他 DNS 服务器作为备用,可以删除其他条目: DNS1=192.0.2.1 完成后保存并关闭文件。下次启动时,您的客户端应该使用这些设置。 结论 您现在应该配置了一个用于为客户端提供缓存或转发 DNS 服务器。这可以是加快您正在管理的机器的 DNS 查询速度的好方法。 如果您想创建一个为您自己的域区域授权的 DNS 服务器,您可以配置一个仅授权的 DNS 服务器或结合这些解决方案。 ———————————————— 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原文链接:https://blog.csdn.net/rubys007/article/details/137722785
-
使用MDC 510技术文档中的《AI开发-ATC模型转换-快速开始》的Resnet50转换失败输入:atc --model=/home/kjhu/桌面/resnet50_official.onnx --framework=5 --output=$HOME/module/out/onnx_resnet50 --soc_version=AS31XM1X输出:ATC run failed, Please check the detail log, Try 'atc --help' for more informationE40001: Value [/usr/local/python3.7.5] for environment variable [ld_library_path or ldconfig] is invalid when load python dynamic library. Solution: Reset the environment variable by referring to the installation guide. TraceBack (most recent call last): [GraphOpt][InitializeInner][InitTbeFunc] Failed to init tbe.[FUNC:InitializeInner][FILE:tbe_op_store_adapter.cc][LINE:1623] [SubGraphOpt][PreCompileOp][InitAdapter] InitializeAdapter adapter [tbe_op_adapter] failed! Ret [4294967295][FUNC:InitializeAdapter][FILE:op_store_adapter_manager.cc][LINE:84] [SubGraphOpt][PreCompileOp][Init] Initialize op store adapter failed, OpsStoreName[tbe-custom].[FUNC:Initialize][FILE:op_store_adapter_manager.cc][LINE:125] [FusionMngr][Init] Op store adapter manager init failed.[FUNC:Initialize][FILE:fusion_manager.cc][LINE:124] PluginManager InvokeAll failed.[FUNC:Initialize][FILE:ops_kernel_manager.cc][LINE:96] OpsManager initialize failed.[FUNC:InnerInitialize][FILE:gelib.cc][LINE:235] GELib::InnerInitialize failed.[FUNC:Initialize][FILE:gelib.cc][LINE:163]
-
linux下pycharm运行无问题,5s内会返回ok,可本地判题器返回初始化超时,没有引用无用文件,为啥会超时在判题器目录下输入这个。python源码全部放在了sdk文件夹下的python文件夹中。./PreliminaryJudge -f 15 -m ./maps/map1.txt -d ./output.txt "python main.py"
-
在ubantu系统的pycharm里验证minds pore是否安装成功,报错,但是在终端中显示正常,是否是因为pycharm里没有GPU环境,怎么解决?[WARNING] ME(43563,7f57be091740,python):2023-12-14-16:38:47.946.307 [mindspore/ccsrc/runtime/hardware/device_context_manager.cc:65] GetNvccRealPath] Invalid environment variable CUDA_HOME [:/usr/local/cuda], can not find nvcc file [:/usr/local/cuda/bin/nvcc], please check the CUDA_HOME.[ERROR] ME(43563:140014827149120,MainProcess):2023-12-14-16:38:48.323.567 [mindspore/run_check/_check_version.py:219] libcuda.so (need by mindspore-gpu) is not found. Please confirm that libmindspore_gpu.so is in directory:/home/robot/anaconda3/envs/mindspore_py39/lib/python3.9/site-packages/mindspore/run_check/../lib/plugin and the correct cuda version has been installed, you can refer to the installation guidelines: https://www.mindspore.cn/install[ERROR] ME(43563:140014827149120,MainProcess):2023-12-14-16:38:48.323.687 [mindspore/run_check/_check_version.py:219] libcudnn.so (need by mindspore-gpu) is not found. Please confirm that libmindspore_gpu.so is in directory:/home/robot/anaconda3/envs/mindspore_py39/lib/python3.9/site-packages/mindspore/run_check/../lib/plugin and the correct cuda version has been installed, you can refer to the installation guidelines: https://www.mindspore.cn/installTraceback (most recent call last): File "/home/robot/桌面/Command/test/try/try.py", line 5, in <module> ms.set_context(device_target="GPU") File "/home/robot/anaconda3/envs/mindspore_py39/lib/python3.9/site-packages/mindspore/_checkparam.py", line 1313, in wrapper return func(*args, **kwargs) File "/home/robot/anaconda3/envs/mindspore_py39/lib/python3.9/site-packages/mindspore/context.py", line 1454, in set_context ctx.set_device_target(kwargs['device_target']) File "/home/robot/anaconda3/envs/mindspore_py39/lib/python3.9/site-packages/mindspore/context.py", line 381, in set_device_target self.set_param(ms_ctx_param.device_target, target) File "/home/robot/anaconda3/envs/mindspore_py39/lib/python3.9/site-packages/mindspore/context.py", line 175, in set_param self._context_handle.set_param(param, value)RuntimeError: Unsupported device target GPU. This process only supports one of the ['CPU']. Please check whether the GPU environment is installed and configured correctly, and check whether current mindspore wheel package was built with "-e GPU". For details, please refer to "Device load error message".----------------------------------------------------- Device load error message:----------------------------------------------------Load dynamic library: libmindspore_ascend.so.2 failed. libge_runner.so: cannot open shared object file: No such file or directoryLoad dynamic library: libmindspore_ascend.so.1 failed. libge_runner.so: cannot open shared object file: No such file or directory----------------------------------------------------- C++ Call Stack: (For framework developers)----------------------------------------------------mindspore/core/utils/ms_context.cc:355 SetDeviceTargetFromInner
-
相关信息:Atlas 200DK(新板VDMB)驱动:1.0.10 CANN:5.0.2alpha003 已安装的库:ffmpeg,opencv,atlasutil,Presenter Agent运行gitee上的Ascend/samples/摄像头案例,发现摄像头工作有问题,Status:3,如图:摄像头连接图:上一次很顺利就跑通了摄像头,但这次登陆不知为什么会报错,求助!!!
-
操作系统是ubuntu16.04,docker版本18.09.7参考《npu-smi命令介绍》在主机侧安装软件加载驱动后能成功复位标卡。文档中相关介绍在主机侧执行结果创建容器在容器中能够查看npu信息容器中也安装了ipmitool,加载模型也没有报错在容器中执行复位标卡的命令时报错
-
一:介绍作为一个网络工程师,熟悉多种不同的系统是有必要的,而在开发和调试中经常会用到Ubuntu来作为一个服务器端去开发 一些基本的设备信息,本次我们就来介绍下ubuntu下安装android应用和通过PPA安装oracle jdk二:安装步骤在ubuntu系统中安装新版本的openjdk和oraclejdk使用 update-alternatives 实现 Java 版本的切换。 在 Ubuntu 系统上安装 Eclipse,使用 Eclipse 创建一个 Java 项目,再创建一个 Java 类,并进行测试。 在 Ubuntu 上通过 Snap 包安装 Anroid Studio,配置管理 Android SDK,创建一个 Android项目,并配置 Android 模拟器进行测试。 代码:sudo snap install android-studio –classic 熟悉ppa安装方式 手动安装oraclejdk(*)注意 Oracle Java 11 不再能直接从 Oracle 官网上下载,必须先登录官网并手动下载 Java 包,并替换/var/cache/oracle-jdk11-installer-local 目录中的文件。 代码:执行 sudo add-apt-repository ppa:linuxuprising/java 命令添加 PPA 安装源。 将下载好的 jdk-11.0.4_linux-x64_bin.tar.gz 包(实验过程中下载的版本可能更新。)复制到/var/cache/oracle-jdk11-installer-local 目录。 执行 sudo apt-get install oracle-java11-installer-local 命令安装 Java 11。 安装完毕设置 Java 11 环境变量。PPA 库提供一个软件包用于设置环境变量,可以执行sudo apt-get install oracle-java11-set-default-local 命令来安装它。 如果要卸载 Oracle Java 11,执行 sudo apt remove oracle-java11-set-default-local 命令删除相应的安装脚本。然后打开“软件和更新”(Software & Updates)应用程序,切换到“其他软件”(Other Software)选项卡,删除以下安装源即可。 http://ppa.launchpad.net/linuxuprising/java/ubuntu bionic/main http://ppa.launchpad.net/eugenesan/java/ubuntu bionic/main 上述中我们都用到了java版本的使用 那怎么在Ubuntu下去切换java版本呢? 确认已安装多个 JDK 版本。 执行 sudo update-alternatives --install 命令为不同 JDK 版本创建候选项。 查看/var/lib/dpkg/alternatives/java 配置文件以验证 update-alternatives 实现机制。 通过 sudo update-alternatives --config java 命令手动选择候选项(要切换的版本)。
-
已经将 PC 和 MDC 设备在同一网段(192.168.30.42),MTB 310和MDC已经连接,12V供电。电脑和MTB通过网口相连。192.168.30.42可以ping通,但是SSH登录不上MDC 210,截图如下。请问是哪里出的问题
-
在跑疲劳驾驶识别的demo时,根据readme文件的步骤要求,在onnx文件转换成om文件时报如上错误,环境变量也设置了,cann版本是5.0.4,不懂出现了什么问题
上滑加载中
推荐直播
-
华为AI技术发展与挑战:集成需求分析的实战指南
2024/11/26 周二 18:20-20:20
Alex 华为云学堂技术讲师
本期直播将综合讨论华为AI技术的发展现状,技术挑战,并深入探讨华为AI应用开发过程中的需求分析过程,从理论到实践帮助开发者快速掌握华为AI应用集成需求的框架和方法。
去报名 -
华为云DataArts+DWS助力企业数据治理一站式解决方案及应用实践
2024/11/27 周三 16:30-18:00
Walter.chi 华为云数据治理DTSE技术布道师
想知道数据治理项目中,数据主题域如何合理划分?数据标准及主数据标准如何制定?数仓分层模型如何合理规划?华为云DataArts+DWS助力企业数据治理项目一站式解决方案和应用实践告诉您答案!本期将从数据趋势、数据治理方案、数据治理规划及落地,案例分享四个方面来助力企业数据治理项目合理咨询规划及顺利实施。
去报名
热门标签