Hugo ʕ•ᴥ•ʔ Bear Blog

前言


鸦鸦的博客通过 wp 框架开发 rss 友链框架,好棒!好心动 🥰!

偶然间看到时雨开发的 moment,也可以实现同样的功能,更心动 😋!

后面也借助 Navidrome 搭建了之前想要实现的云音乐。

效果如下,也在首页添加了导航:

简明教程


这部分介绍我的踩坑经历和经验回顾,时间有限,有些地方会省略。

1.云服务器的选择


第一次选择了 AWS 的服务器,但是我感觉不是很稳定。

第二次选择了 Azure,有时不稳定,但用起来感觉还可以。

服务器相关的准备,参考这篇教程

2.Moments 教程之 Docker 部署


这是时雨大大的教程,我再次基础上做一些补充

3.Navidrome


关于 Navidrome 的介绍和部署您可以参考这篇文章,非常详细,我对我遇到的问题做一些补充。

4.问题补充


要查看 Ubuntu 上的目录列表,可以使用ls命令。ls命令用于列出当前目录下的文件和子目录。

在终端中打开一个新的命令行窗口,并输入以下命令:

ls

按下回车键后,将显示当前目录下的文件和子目录的列表。

如果要查看特定目录的列表,可以在ls命令后面加上目录的路径。例如,要查看/home/user/Documents目录的列表,可以输入以下命令:

ls /home/user/Documents

这将显示/home/user/Documents目录下的文件和子目录的列表。

ls命令还有一些有用的选项,可以根据需要使用。例如,ls -l命令将以长格式显示目录列表,包括文件的权限、所有者、大小等详细信息。ls -a命令将显示所有文件,包括隐藏文件。要了解更多选项,可以使用man ls命令查看ls命令的手册页。

希望这可以帮助到你!

如果 Ubuntu 命令行卡住了,你可以尝试以下几种方法来解决问题:

  1. 检查命令是否仍在运行:有时候,一个命令可能需要更长的时间才能完成。在等待一段时间后,可以检查命令是否仍在运行。按下键盘上的Ctrl + C组合键可以尝试中止当前运行的命令。
  2. 检查系统资源:卡顿可能是由于系统资源不足引起的。可以使用top命令或者htop命令来查看系统资源的使用情况,包括 CPU、内存和磁盘等。如果发现某个进程占用了大量资源,可以尝试终止该进程或者释放资源。
  3. 重启终端:如果命令行完全无响应,可以尝试关闭当前终端窗口,然后重新打开一个新的终端窗口。
  4. 重启系统:如果上述方法都没有解决问题,可以尝试重启整个系统。可以使用reboot命令或者点击系统菜单中的关机选项来重启 Ubuntu。
  5. 检查系统日志:如果问题仍然存在,可以查看系统日志以获取更多信息。系统日志通常位于/var/log目录下,可以使用less命令或者其他文本编辑器来打开并查看日志文件。

要在 Ubuntu 上删除多个文件,可以使用rm命令。以下是几种常见的方法:

  1. 删除指定文件列表:

    rm file1.txt file2.txt file3.txt
    
  2. 删除指定目录下的所有文件:

    rm /path/to/directory/*
    

    请注意,上述命令将删除目录中的所有文件,但不会删除目录本身。

  3. 删除指定目录及其所有内容:

    rm -r /path/to/directory
    

    使用-r选项会递归地删除目录及其所有内容,包括子目录和文件。

  4. 删除指定文件类型的所有文件:

    rm *.txt
    

    上述命令将删除当前目录下所有以.txt为扩展名的文件。

在使用rm命令时,请务必小心,因为删除的文件将无法恢复。请确保在执行命令之前确认要删除的文件列表,并确保不会误删重要文件。

在 Linux 中,你可以使用  mv  命令来移动文件或目录。mv  命令的基本语法如下:

mv [选项] 源文件或目录 目标文件或目录

以下是一些常用的  mv  命令选项:

下面是一些示例用法:

  1. 移动文件到目标目录:

    mv file.txt /path/to/destination/
    

    这将把名为  file.txt  的文件移动到  /path/to/destination/  目录中。

  2. 重命名文件:

    mv oldname.txt newname.txt
    

    这将把名为  oldname.txt  的文件重命名为  newname.txt

  3. 移动目录到目标位置:

    mv directory /path/to/destination/
    

    这将把名为  directory  的目录移动到  /path/to/destination/  目录中。

  4. 移动多个文件到目标目录:

    mv file1.txt file2.txt /path/to/destination/
    

    这将同时移动  file1.txt  和  file2.txt  到  /path/to/destination/  目录中。

请注意,如果目标位置已经存在同名的文件或目录,mv  命令将覆盖它。如果你想要保留原始文件或目录,可以使用  -i  选项来进行确认提示,或者使用  -u  选项来只移动更新或更改了的文件。

要删除文件夹(目录)及其内容,你可以使用  rm  命令。请注意,删除文件夹是一个潜在的危险操作,请谨慎使用,并确保你要删除的是正确的目录。

以下是删除文件夹的一些常见用法:

  1. 删除空文件夹:

    rm -d empty_directory
    

    这将删除名为  empty_directory  的空文件夹。

  2. 删除非空文件夹:

    rm -r directory
    

    这将递归地删除名为  directory  的文件夹及其所有内容。请注意,这是一个危险操作,因为它会永久删除文件夹及其内容,无法恢复。在使用  -r  选项时要特别小心,确保你要删除的是正确的目录。

  3. 删除文件夹并强制删除:

    rm -rf directory
    

    这将递归地删除名为  directory  的文件夹及其所有内容,并强制删除,无需确认提示。这是一个非常危险的操作,请确保你要删除的是正确的目录,并且你真正想要永久删除它及其内容。

请记住,在使用  rm  命令时要小心,确保你要删除的是正确的文件夹。删除操作无法撤消,并且会永久删除文件夹及其内容。

要退出 Vim 编辑器,可以按照以下步骤进行操作:

  1. 确保你处于"命令模式"(Command mode)。如果你处于"插入模式"(Insert mode)或"编辑模式"(Edit mode),可以按下键盘上的 Esc 键返回命令模式。
  2. 在命令模式下,输入冒号(:)字符,然后输入以下命令之一:
    • q:退出 Vim。如果没有做任何更改,Vim 将立即退出。如果有未保存的更改,Vim 将显示错误消息并拒绝退出。你可以使用:q!命令来强制退出 Vim,丢弃未保存的更改。
    • wq:保存更改并退出 Vim。
    • x:保存更改并退出 Vim 的简写形式。
  3. 按下回车键执行命令。Vim 将执行相应的操作并退出编辑器。

请注意,Vim 有许多其他命令和选项可用于编辑和保存文件。上述命令是最基本和常用的命令。如果你对 Vim 的使用不熟悉,可以参考 Vim 的文档或教程以了解更多详细信息。

使用 VS Code 进行远程 SSH 连接非常方便,以下是连接到远程服务器的一般步骤:

  1. 安装 VS Code 插件:打开 VS Code,点击左侧的扩展图标(或按下Ctrl+Shift+X),搜索并安装名为"Remote - SSH"的插件。

  2. 配置 SSH 配置文件:在 VS Code 中,点击左下角的"Remote Explorer"图标,然后选择"SSH Targets"。在弹出的菜单中,选择"Configure SSH Hosts"。这将打开一个 SSH 配置文件,你可以在其中添加远程服务器的连接信息。

    在配置文件中,你可以添加类似以下的条目:

    Host my-remote-server
        HostName <远程服务器IP或域名>
        User <远程服务器用户名>
        IdentityFile <私钥文件路径>
    

    替换<远程服务器IP或域名><远程服务器用户名><私钥文件路径>为实际的值。如果你使用密码进行身份验证,可以省略IdentityFile行。

  3. 连接到远程服务器:在 VS Code 的"Remote Explorer"中,点击左上角的"SSH Targets"图标,然后选择你配置的远程服务器。VS Code 将自动连接到远程服务器,并在新的窗口中打开一个远程终端。

  4. 在远程服务器上使用 VS Code:一旦连接成功,你可以像在本地使用 VS Code 一样,在远程服务器上编辑文件、运行终端命令等。

请注意,为了进行远程 SSH 连接,你需要确保本地计算机可以访问远程服务器的 SSH 端口(默认为 22)。如果你的服务器有安全组或防火墙设置,确保允许 SSH 流量通过。

如果你已经将 Nginx 配置为反向代理到自己的域名,但仍然无法访问,请检查以下几个可能的原因和解决方法:

  1. 检查域名解析是否正确:确保你的域名已正确解析到你的服务器的公共 IP 地址。你可以通过运行  ping your-domain.com  命令来验证域名是否解析到正确的 IP 地址。如果解析不正确,你需要在域名注册商或 DNS 服务提供商的控制面板中进行相应的修改。

  2. 防火墙设置:检查服务器上的防火墙设置,确保端口 80(HTTP)和/或 443(HTTPS)是打开的。你可以使用以下命令来检查防火墙规则:

    sudo ufw status
    

    如果防火墙是启用的,并且端口被阻止,你可以使用  ufw  命令打开相应的端口。例如,要打开 HTTP 端口 80,可以运行:

    sudo ufw allow 80
    
  3. 检查 Nginx 配置是否正确:确保你的 Nginx 配置文件中的反向代理设置正确无误。检查以下几个方面:

    • server_name  是否设置为你的域名。
    • proxy_pass  是否指向正确的后端服务器地址和端口。
    • 其他相关的代理设置是否正确,如  proxy_set_header  等。
  4. 检查后端服务器是否正常工作:确保你的后端服务器正常运行并且可以通过指定的地址和端口访问。你可以尝试直接访问后端服务器的地址和端口来验证是否正常工作。

  5. 检查 Nginx 日志:查看 Nginx 的错误日志文件,通常位于  /var/log/nginx/error.log。检查是否有与访问问题相关的错误或警告消息。

在云服务器中,您可以使用以下方法之一来使进程持续运行:

  1. 使用终端后台运行:您可以在终端中运行命令,并使用&符号将其放在后台运行。例如:

    command &
    

    这将使命令在后台运行,并且即使您关闭终端或断开与服务器的连接,该进程也会继续运行。

  2. 使用 nohup 命令:nohup命令可让您在断开与服务器连接后继续运行进程。例如:

    nohup command &
    

    这将使用nohup命令将进程放在后台运行,并将输出重定向到一个名为nohup.out的文件中。

  3. 使用系统服务(systemd):对于长期运行的进程,建议将其配置为系统服务。使用 systemd 可以管理进程的启动、停止和自动重启。以下是一个简单的示例:

    • 创建一个名为your-service.service的服务配置文件,例如:

      sudo nano /etc/systemd/system/your-service.service
      
    • 在文件中添加以下内容(根据您的进程和需求进行修改):

      [Unit]
      Description=Your Service
      After=network.target
      
      [Service]
      ExecStart=/path/to/your/command
      Restart=always
      
      [Install]
      WantedBy=multi-user.target
      
    • 保存并关闭文件。

    • 启用和启动服务:

      sudo systemctl enable your-service
      sudo systemctl start your-service
      

      这将使服务在系统启动时自动启动,并且可以使用systemctl命令来管理服务。

使用上述方法之一,您可以确保进程在云服务器中持续运行,并且不会受到终端连接断开的影响。请根据您的需求和具体情况选择适合的方法。

要停止并重新运行一个进程,您可以使用以下步骤:

  1. 查找进程 ID(PID):首先,您需要找到要停止的进程的 PID。您可以使用ps命令或pgrep命令来查找进程的 PID。例如,假设您要停止名为your-process的进程,可以运行以下命令:

    ps aux | grep your-process
    

    这将显示与your-process相关的进程列表,包括其 PID。

  2. 停止进程:一旦您找到了进程的 PID,您可以使用kill命令来停止它。例如,假设进程的 PID 为12345,您可以运行以下命令来停止进程:

    kill 12345
    

    如果进程不会立即停止,您可以尝试使用kill -9命令来强制终止进程:

    kill -9 12345
    

    请注意,使用kill -9命令会强制终止进程,可能会导致数据丢失或其他不良影响。请谨慎使用。

  3. 重新运行进程:一旦您停止了进程,您可以根据需要重新启动它。具体的方法取决于您的进程类型和启动方式。您可以使用命令行或其他启动脚本来重新启动进程。

    • 如果您的进程是通过命令行启动的,您可以再次运行启动命令来重新启动进程。

    • 如果您的进程是通过系统服务(如 systemd)管理的,您可以使用相应的命令来重新启动服务。例如,使用 systemd 管理的服务可以使用以下命令重新启动:

      sudo systemctl restart your-service
      
    • 如果您使用其他工具或方法来管理进程,请参考相应的文档或说明来重新启动进程。

通过以上步骤,您可以停止并重新运行一个进程。请确保在重新运行进程之前,您已经停止了该进程,以避免冲突或其他问题。

要建立远程服务器对本机的信任,你可以使用 SSH 密钥进行身份验证。以下是建立信任的一般步骤:

  1. 生成 SSH 密钥对:在本机上生成 SSH 密钥对,包括公钥和私钥。如果你已经有 SSH 密钥对,请跳过此步骤。要生成 SSH 密钥对,请在终端上运行以下命令:

    ssh-keygen -t rsa -b 4096
    

    这将生成一个 RSA 密钥对,密钥将保存在  ~/.ssh/id_rsa(私钥)和  ~/.ssh/id_rsa.pub(公钥)文件中。

  2. 将公钥复制到远程服务器:使用以下命令将公钥复制到远程服务器上的  authorized_keys  文件中:

    ssh-copy-id matrixcore@20.243.81.174
    

    这将将本机上的公钥复制到远程服务器的  ~/.ssh/authorized_keys  文件中。你需要提供远程服务器的用户名和密码。

    如果  ssh-copy-id  命令不可用,你可以手动将公钥内容复制到远程服务器的  ~/.ssh/authorized_keys  文件中。

  3. 验证连接:现在,你应该能够通过 SSH 连接到远程服务器而无需输入密码。尝试使用以下命令连接到服务器:

    ssh matrixcore@20.243.81.174
    

    如果一切设置正确,你将能够无需密码直接登录到远程服务器。

这样,你就建立了远程服务器对本机的信任关系,可以在进行 SSH 连接时无需输入密码。请注意,这种信任建立是基于公钥加密的身份验证,因此确保你的私钥保密,并采取适当的安全措施来保护它。

重新部署虚拟机

要重启 Docker 中的特定进程并将其设置为系统守护进程,你可以执行以下步骤:

  1. 首先,使用以下命令查找要重启的 Docker 容器的 ID 或名称:

    docker ps
    

    这将列出当前正在运行的 Docker 容器,找到你要重启的容器并记下其 ID 或名称。

  2. 使用以下命令重启 Docker 容器:

    docker restart <容器ID或名称>
    

    将  <容器ID或名称>  替换为你要重启的容器的实际 ID 或名称。

  3. 确保 Docker 容器在系统启动时自动启动并作为守护进程运行,可以使用以下命令:

    docker update --restart=unless-stopped <容器ID或名称>
    

    这将将容器的重启策略设置为除非手动停止,否则在系统启动时自动重启。

现在,你的 Docker 容器将被重启,并且在系统启动时将自动作为守护进程运行。请确保在命令中替换  <容器ID或名称>  为实际的容器标识符。

总结


用热情去做好自己喜欢的事情 😊

#实用教程