土豆ヽ山药蛋 - yingkai.dai
type: channel
link: https://blog.dyk.xyz/index.php/author/1/
description: yingkai.dai
items: Nginx
items: 常见 Linux 命令详细解释
items: Docker 使用手册
items: Mac 应用工具分类整理
items: 服务器配置-SSH
items: 搭建自己的博客平台-Typecho平台搭建
items: 大模型 Reply：服务器Web目录
items: 搭建自己的博客平台-平台选择

Nginx
type: item
date: 2025-01-18T14:04:34+00:00
description: 1. Nginx 简介Nginx 是一个高性能、轻量级的 HTTP 服务器和反向代理服务器，常用于静态文件服务、负载均衡、反向代理、SSL/TLS 加密等场景。它支持高并发，具有模块化设计和灵活的配置。2. 通过 Docker-Compose 启动 Nginxversion: '3.8' services: nginx: image: nginx:latest container_name: nginx restart: always ports: - "80:80" - "443:443" volumes: - ./nginx/logs:/var/log/nginx:rw - ./nginx/cert:/etc/nginx/cert:ro - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro - ./nginx/conf.d:/etc/nginx/conf.d:rw healthcheck: test: ["CMD", "curl", "-f", "http://localhost"] interval: 10s timeout: 5s retries: 3 start_period: 30s3. Nginx 配置详解主配置文件（nginx.conf）# 全局配置 user nginx; worker_processes auto; error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; # 日志配置 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; # 压缩与缓存 gzip on; gzip_types text/plain application/json; # 包含子配置文件 include /etc/nginx/conf.d/*.conf; }子配置文件（conf.d/*.conf）http { server { listen 443 ssl; server_name _; } upstream backend { server backend1.example.com; server backend2.example.com; } location / { proxy_pass http://backend; } } # Stream 转发（TCP/UDP） stream { upstream db_backend { server db1.example.com:3306; server db2.example.com:3306; } server { listen 3306; proxy_pass db_backend; } }常见的HTTP模块配置# 传递请求头和用户信息 proxy_set_header Host $host; # 保留原始 Host 请求头 proxy_set_header X-Real-IP $remote_addr; # 保留客户端真实 IP proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 保留转发链 proxy_set_header X-Forwarded-Proto $scheme; # 保留请求协议 (http/https) # 支持 WebSocket 等长连接 proxy_http_version 1.1; # 使用 HTTP/1.1 支持长连接 proxy_set_header Upgrade $http_upgrade; # 支持 WebSocket 升级 proxy_set_header Connection "upgrade"; # 保持长连接 # 配置传递下划线 Header underscores_in_headers on; # 允许传递下划线头部 # 增加连接和读写超时 (HTTP CODE 5…

常见 Linux 命令详细解释
type: item
date: 2025-01-17T18:05:48+00:00
description: 常见 Linux 命令详细解释以下是常见 Linux 命令及其参数的详细解释，按照使用频率排序，并附带了使用示例。1. scp（安全复制）scp（Secure Copy Protocol）用于在本地和远程主机之间进行加密传输文件。它基于 SSH 协议，因此数据传输过程中是安全的，适合在不安全的网络中传输敏感文件。语法：scp [选项] 源文件 目标文件常用选项：-r：递归复制整个目录。使用时，源文件应为目录。-P：指定远程主机的端口号（注意是大写 P）。例如，远程主机使用 2222 端口时，使用 -P 2222。-i：指定用于身份验证的私钥文件。例如，-i /path/to/private_key。-v：启用详细模式，显示 SCP 执行过程的详细信息。-C：启用压缩，在传输大量数据时有助于提高传输效率。-q：启用静默模式，不显示任何输出。-l：限制传输的带宽，单位为 Kbit/s。例如，-l 500 限制带宽为 500 Kbit/s。-B：禁止启用密码验证，强制使用密钥认证。-o：传递 SSH 配置选项，如 -o StrictHostKeyChecking=no 可以跳过 SSH 主机密钥检查。示例：scp -v -P 2222 -l 500 -i ~/.ssh/id_rsa -r ./myfolder deployer@127.0.0.1:/data使用 -l 选项限制传输带宽为 500 Kbit/s。注意事项：权限问题：如果目标路径的权限不足，可以通过 sudo 来提升权限，但是需要确保自己有远程 sudo 权限。密钥认证：使用 -i 选项时，确保私钥文件的权限是 600，否则 SSH 会拒绝使用该密钥进行连接。2. sshpass（自动输入密码的 SSH）sshpass -p "password" ssh -o StrictHostKeyChecking=no root@127.0.0.1 sh /data/custom.sh使用 sshpass 自动输入密码，登录并执行远程脚本。3. ssh（连接服务器/开启隧道-端口转发）常用选项：-L：本地端口转发。-i：指定私钥文件。ssh -L 0:3307:remote_ip:3306 user@host通过 SSH 创建本地端口转发。4. vim（文本编辑器）vim 是 Linux 系统中功能强大的文本编辑器，广泛用于文件编辑、编程和系统管理。其分为三种模式：普通模式：启动后默认进入普通模式，执行导航、删除、复制等操作。插入模式：用于文本输入，按 i 进入，按 Esc 退出。命令行模式：执行保存、退出、查找替换等命令，按 : 进入。插入模式i：在当前光标前插入。a：在当前光标后插入。o：在当前行下方新建一行并进入插入模式。保存和退出:w：保存文件。:q：退出 Vim。:wq 或 ZZ：保存并退出。:q!：强制退出（不保存修改）。:x：保存并退出（等价于 :wq）。文本操作复制、粘贴yy：复制当前行。nyy：复制当前行及其后 n 行。p：在光标后粘贴。P：在光标前粘贴。删除dd：删除当前行。ndd：删除当前行及其后 n 行。x：删除光标所在的字符。撤销和重做u：撤销上一步操作。Ctrl + r：重做上一步撤销。查找/pattern：向下查找 pattern。?pattern：向上查找 pattern。n：重复上一次查找（同方向）。N：反向重复上一次查找。替换:%s/old/new/g：将文件中所有的 old 替换为 new。:n,m s/old/new/g：将第 n 到第 m 行的 old 替换为 new。:%s/old/new/gc：替换时逐个确认。窗口操作分屏:split 或 :sp：水平分屏。:vsplit 或 :vsp：垂直分屏。Ctrl + w + w：在分屏间切换。Ctrl + w + h/j/k/l：移动到左/下/上/右的窗口。关闭窗口:q：关闭当前窗口。:only：关闭其他窗口，保留当前窗口。代码编辑功能缩进>>：将当前行向右缩进。<<：将当前行向左缩进。n>> 或 n<<：缩进当前行及其后 n 行。高亮匹配括号将光标放在括号上，按 % 可跳转到匹配的括号。代码折叠zf：根据选定范围折叠。zo：打开折叠。zc：关闭折叠。配置文件Vim 的行为可以通过配置文件 .vimrc 进行定制。以下是一个简单示例：set number " 显示行号 syntax on " 开启语法高亮 set tabstop=4 " 设置制表符宽度为 4 个空格 set expandtab " 使用空格替代 Tab set autoindent " 自动缩进高级用法打开多个文件vim file1 file2使用 :n 切换到下一个文件，:prev 切换到上一个文件。宏操作q<regist…

Docker 使用手册
type: item
date: 2025-01-03T11:55:00+00:00
description: Docker 使用手册Docker 基础命令镜像管理查找镜像docker search image_name--filter / -f：按条件过滤（如 stars=100）。--limit：限制返回结果数量。拉取镜像docker pull image_name:tag--all-tags / -a：拉取镜像的所有标签。查看本地镜像docker images--all / -a：列出所有镜像，包括中间层。--digests：显示镜像摘要信息。--filter / -f：按条件过滤。删除镜像docker rmi image_name:tag--force / -f：强制删除。docker image prune -a：删除未使用的镜像。保存与加载镜像docker save image_name:tag | gzip > image.tar.gz gunzip -c image.tar.gz | docker load查看镜像历史docker history image_name:tag--no-trunc：显示完整信息。--quiet / -q：只显示层 ID。根据容器提交镜像docker commit -a "nathan" -m "create new img" <container_id> image_name:tag-a：设置作者信息。-m：描述信息。--change / -c：对镜像进行配置更改。重命名镜像docker tag old-repo/myimage:tag new-repo/myimage:new-tag容器管理运行容器docker run -it --entrypoint sh image_name:tag-i：保持标准输入打开。-t：分配伪终端。--name：为容器命名。-d：后台运行。--rm：退出后自动删除。-p：端口映射（如 8080:80）。-v：挂载数据卷（如 /host/path:/container/path）。查看容器日志docker logs <container_id> docker logs --since 10m container_id-f：实时查看日志。--tail：显示最新日志行数（如 100）。--since：从指定时间开始显示日志（支持 10m、1h、具体时间戳等）。--until：设置日志显示结束时间。查看容器状态docker ps docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}"-a / --all：列出所有容器。-q：只显示容器 ID。--filter / -f：按条件过滤。--format：以指定格式显示容器信息，可用占位符包括：{{.ID}}：容器 ID{{.Names}}：容器名称{{.Status}}：容器状态{{.Ports}}：容器端口--latest / -l：只显示最近创建的容器。--size / -s：显示容器的文件大小。删除容器docker rm $(docker ps -aq)-f / --force：强制删除。-v：同时删除挂载的卷。停止/启动/重启容器docker stop/start/restart container_id--time / -t：设置停止超时时间（默认 10 秒）。检查容器信息docker inspect container_id docker inspect --format='{{.State.Running}}' container_id使用 --format 提取特定信息：{{.State.Status}}：容器状态{{.Config.Image}}：镜像名称进入容器docker exec -it container_id /bin/bash网络管理查看网络docker network ls--filter / -f：按条件过滤。创建网络docker network create my-network--driver：指定网络驱动类型（如 bridge、host）。--subnet：指定子网（如 192.168.1.0/24）。指定网络运行容器docker run --network my-network --name nginx -d nginx删除网络docker network rm network_name查看详细信息docker network inspect network_name创建带驱动配置的网络docker network create \ --driver bridge \ --subnet=192.168.1.0/24 \ custom-network删除未使用的网络docker network prune清理无用资源清…

Mac 应用工具分类整理
type: item
date: 2024-12-02T13:12:00+00:00
description: Mac 应用工具分类整理本文整理了一系列常用的 Mac 应用程序，按照不同类别进行了分类，并标注了其主要作用及官方网站。开发工具应用名称主要作用官方网站ApifoxAPI 文档管理、接口调试和测试工具Apifox 官网PostmanAPI 开发与测试Postman 官网IntelliJ IDEA CEJava IDEIntelliJ IDEA 官网PyCharm CEPython IDEPyCharm 官网DBeaver数据库管理工具DBeaver 官网Sublime Text文本编辑器Sublime Text 官网TyporaMarkdown 文档编辑器Typora 官网VS Code轻量级代码编辑器VS Code 官网Git版本控制工具Git 官网SoapUIWeb 服务测试工具SoapUI 官网SourcetreeGit 图形化管理工具Sourcetree 官网JProfilerJava 性能分析工具JProfiler 官网ZenTermLite轻量化终端工具无官方网站，基于社区开发。网络与运维工具应用名称主要作用官方网站Docker容器化工具Docker 官网SecureCRTSSH 远程连接SecureCRT 官网Wireshark网络抓包工具Wireshark 官网Apache JMeter性能测试工具JMeter 官网TunnelblickVPN 客户端Tunnelblick 官网Tabby终端模拟器Tabby 官网SwitchHosts快速切换 Hosts 文件SwitchHosts 官网FinalShellSSH 连接与管理工具FinalShell 官网XmanagerWindows 系统下的图形化远程桌面管理Xmanager 官网数据分析工具应用名称主要作用官方网站Navicat Premium数据库管理与开发Navicat 官网Memory Analyzer (MAT)Java 堆分析工具MAT 官网Offset Explorer 2Kafka 数据流监控Offset Explorer 官网通信与远程协作应用名称主要作用官方网站TeamViewer远程桌面连接工具TeamViewer 官网Zoom视频会议Zoom 官网Microsoft Remote Desktop Beta微软远程桌面连接Microsoft 官网ToDesk远程协作工具ToDesk 官网Linphone开源 VoIP 通信工具Linphone 官网浏览器与办公工具应用名称主要作用官方网站Google Chrome浏览器Chrome 官网Microsoft Edge浏览器Edge 官网Adobe Acrobat ReaderPDF 阅读器Adobe 官网Microsoft Office办公套件（Word、Excel、PowerPoint）Office 官网Anaconda Navigator数据科学与 Python 开发环境管理工具Anaconda 官网文件管理与效率工具应用名称主要作用官方网站TransmitFTP 文件传输工具Transmit 官网ClashX Pro网络代理客户端ClashX 官网EasyConnect企业 VPN 工具EasyConnect 官网Cursor提升工作效率的快捷工具Cursor 官网Quantumult X网络代理与规则配置Quantumult 官网V2rayU网络代理客户端V2rayU 官网Maccy剪贴板管理工具Maccy 官网Snipaste截图小工具（可钉在桌面）Snipaste 官网uTools高效工具集插件平台uTools 官网Draw.io绘图与流程图工具Draw.io 官网说明： 以上分类及应用整理基于实际功能划分，帮助您快速找到所需工具。根据需求选择最适合的应用！

服务器配置-SSH
type: item
date: 2024-10-28T17:21:00+00:00
description: 购买服务器后，首先需要配置的是 SSH。频繁登录云供应商平台、输入授权码等操作相当繁琐，因此 SSH 配置能大大简化登录流程。SSH（Secure Shell）是一种用于安全远程登录和其他网络服务（如安全文件传输）的协议，支持多种登录方式，每种方式都有其优缺点。以下是 SSH 中常见的两种登录方式的分析（此外还有基于证书和双因素认证等其他方式，它们通常提供更高的安全性，但对于个人开发者而言，过于繁琐且成本较高，本文不作讨论）：1. 基于密码的登录描述用户通过输入用户名和密码进行身份验证。优点简单易用：用户只需记住密码，设置过程相对简单。广泛支持：几乎所有 SSH 客户端和服务器都支持此方式。缺点安全性较低：如果密码被破解（如暴力攻击、社交工程等），攻击者可以轻易获得访问权限。管理复杂：需要定期更改密码以增强安全性，用户可能会使用弱密码。2. 基于公钥的登录描述使用 SSH 密钥对（公钥和私钥）进行身份验证。用户在服务器上放置公钥，而在本地计算机上保留私钥。优点安全性高：密钥对的安全性远高于简单密码，攻击者难以猜测私钥。便捷性：一旦设置，用户可以在不输入密码的情况下轻松登录。支持多种认证机制：可以为不同服务器设置不同的密钥。缺点初始设置复杂：需要生成密钥对并将公钥传输到服务器。私钥管理：用户需妥善保管私钥，避免丢失或被盗。每种 SSH 登录方式都有其独特的优势和不足。通常推荐使用 基于公钥的登录，因为它在安全性和便捷性之间取得了良好的平衡。1. 如何获取密钥对？物理机使用以下命令生成 SSH 密钥对：ssh-keygen -t rsa -b 4096将公钥复制到远程服务器：ssh-copy-id username@hostname云服务器几乎所有云服务供应商都提供了密钥管理功能，支持密钥生成及下载。以下是在腾讯云轻量云服务器上生成密钥的步骤：选择产品-轻量云服务。在左侧菜单中选择 SSH 密钥，点击创建密钥。选择与服务器相同的地域，填写信息以生成 SSH-Key（还可以一键关联至服务器上）。通过以上操作，可以轻松创建密钥对，使用 ssh-copy-id 或云服务商的一键关联功能将公钥配置到服务器上。请妥善保存好私钥（丢失不可恢复）。接下来进行以下操作：2. 修改 SSH 端口自定义 SSH 端口号不仅可以增加安全性，还能减少自动化攻击的潜在风险。选择一个不常用的端口，可以有效地隐藏 SSH 服务，从而降低被攻击的可能性。如何修改 SSH 端口：服务器端的 SSH 配置文件通常位于 /etc/ssh/sshd_config，该文件用于控制服务器端的行为、允许的认证方式和安全策略等。可以通过 Port 指令指定 SSH 的监听端口号，例如：# /etc/ssh/sshd_config Port 2222上述配置将 SSH 服务的端口从默认的 22 改为 2222。完成配置后，重启 SSH 服务以应用更改：sudo systemctl restart sshd这样，服务器将开始在端口 2222 上监听 SSH 连接。3. 配置网络防火墙对于物理服务器，可以配置防火墙以开放相应的 SSH 端口（如 2222）。云服务器则可通过云平台管理网络策略，根据页面配置开放对应的 SSH 端口。例如，腾讯云的配置示例：4. 配置客户端免密登录注意： 仅建议在个人电脑上配置免密登录。在公共网络或多用户共享的设备上，使用免密登录可能导致严重的安全风险，请谨慎选择。客户端的配置文件通常位于用户目录下的 .ssh/config 中，用户可以为不同的主机设定各自的 SSH 参数。客户端配置文件示例：# ~/.ssh/config Host myserver HostName example.com User myuser Port 2222 IdentityFile ~/.ssh/myserver_key密钥认证：确保私钥文件的权限是 600，否则 SSH 会拒绝使用该密钥进行连接。通过以上配置，连接服务器时只需执行以下命令，操作便捷且安全（仅限私人电脑）：ssh myserver常见配置项Host: 定义服务器的别名，可用 * 通配符配置多个主机。HostName: 指定服务器的实际地址或域名。User: 指定默认登录用户名。Port: 指定连接时使用的端口号。IdentityFile: 指定用于身份验证的私钥文件路径，可为不同主机指定不同的密钥。5. 命令行连接对于不常用或公共环境，建议使用云厂商平台登录，或使用以下临时登录命令：ssh -p 2222 myuser@example.com -i ~/.ssh/myserver_key该命令可临时指定端口号和私钥文件，避免修改配置文件，适合短期使用。通过这些 SSH 配置，您可以显著提高登录过程的效率与安…

搭建自己的博客平台-Typecho平台搭建
type: item
date: 2024-10-27T15:59:00+00:00
description: 快速搭建 Typecho 博客平台指南要快速搭建一个博客平台其实并不难。借助腾讯云的轻量应用服务器，可以轻松部署 Typecho 博客平台。只需购买轻量应用服务器后选择 Typecho 网站模板，即可实现一键安装的体验。轻量云服务预配置了 LAMP 或 LNMP 环境，让我们不必手动设置服务器环境，十分适合快速启动和试用。在轻量云环境中快速搭建好博客平台后，我们可以简单浏览页面风格及系统配置，以确认是否符合需求。至此，一个可用的私有化部署的博客平台已经搭建完成。但这只是开始……使用轻量云服务搭建博客固然简便快捷，尤其对小白用户来说，仅需几步点击即可轻松完成配置。然而，作为开发者，我希望更深入了解 Typecho 的底层架构和安装过程。因此，我登录到已部署的博客服务器，准备研究这款应用的安装路径。同时，查阅了 Typecho 官方安装指南，希望进一步理解 Typecho 的构成与部署需求。根据文档，Typecho 的依赖环境包括以下几个主要组件：PHP 7.2及以上版本（如果使用 PHP 8，建议确保 Typecho 版本支持兼容）。数据库支持：MySQL、PostgreSQL、SQLite 其中任意一种（需在 PHP 中安装相关扩展）。CURL 或者 Socket 扩展。mbstring 或者 iconv 扩展。在检查云服务器配置时，发现已预装以下组件：PHP：世界上最受欢迎的后端开发语言MariaDB：兼容 MySQL 的数据库替代方案Nginx：用于安装 Typecho 平台，并且 腾讯云支持一键配置 HTTPS 证书这些程序被安装在用户目录下的 softwares 文件夹中，便于管理。手动部署 Typecho接下来，我需要下载安装包，并将文件上传至服务器的 Web 目录。这时可能会遇到一些常见问题，比如：什么是 Web 目录？服务器 Web 目录是专为 Web 应用配置的根目录，一般情况下在 Ubuntu 系统中，路径为 /var/www/html。这里是放置 Web 应用代码的默认位置，可以通过 Nginx 或 Apache 等 Web 服务器访问。GAE/SAE/BAE/ACE 是什么？GAE（Google App Engine）、SAE（新浪应用引擎）、BAE（百度应用引擎）、ACE（阿里云应用引擎）是几大厂商提供的 PaaS 平台，为 Web 应用提供预配置的运行环境，也适合快速部署 Typecho 等应用（目前阿里云上我已经找不到该服务了）。Docker 部署 Typecho为什么使用Docker为了更灵活地管理应用，我决定使用 Docker 部署。首先，从 DockerHub 中搜索 php 基础镜像：Docker PHP。常见的镜像版本包括：php-cliphp-fpmphp-apachephp-alpine我的需求是基于 php-fpm 或 php-apache 镜像来部署 Typecho。如果追求更简单的流程，直接选择 php-apache 作为基础镜像，并挂载 /var/www/html 目录，即可快速运行 Typecho。但是为了更高的性能，我选择了 php-fpm，这样需要引入 Nginx 来处理静态资源并对接 FastCGI 协议。使用 Nginx 和 php-fpm 协同工作接下来，我决定将所有服务整合至 php-fpm，并前置 Nginx 以对接 FastCGI 服务。然而，经过多次测试后，我发现单独使用 php-fpm 无法直接访问应用静态资源，必须配合 Nginx 才能正常工作。因此，我在 php-fpm 镜像中安装了 Nginx，以实现完整的 PHP Web 应用环境。在 Docker 中，推荐将 Nginx 和 php-fpm 放在不同容器中。这种做法能够实现模块化管理，便于维护和扩展。通过 Docker Compose 管理这两个容器时，可以让 Nginx 处理静态资源请求，并将动态请求反向代理到 php-fpm 容器，从而既保持了良好的性能，又确保了环境的稳定性。尽管可以将 Nginx 安装在 php-fpm 镜像中以形成单一容器，但这种方法并不符合容器化的最佳实践。我选择将 Nginx 与 php-fpm 整合的原因在于，虽然 Nginx 可以被分离，但将 Web 应用的根目录配置到 php-fpm 所在的根目录上会导致两者共用同一个目录。这限制了 Nginx 的用途，因此我决定单独安装一个 Nginx，专门用于支持 Typecho 的运行。Dockerfile# 使用更新的 PHP 基础镜像 FROM php:7.4-fpm # 更新包管理器并安装依赖 RUN apt-get update && apt-get install -y --no-install-recommen…

大模型 Reply：服务器Web目录
type: item
date: 2024-10-27T15:50:00+00:00
description: 服务器Web目录通常是指Web服务器（如Apache、Nginx等）用于存放和提供网站文件的根目录。这个目录被配置为提供静态文件或动态内容，并对外部用户开放访问。理解服务器Web目录的概念、设置方法和最佳实践有助于确保Web应用程序的安全性、性能和可维护性。1. Web目录的定义和作用服务器Web目录是一个指定的文件系统路径，Web服务器会从这里开始根据请求路径查找并提供资源。例如，当用户请求网站的首页时，Web服务器会在Web目录中寻找并返回默认的主页文件（如 index.html 或 index.php）。Web目录通常包含各种网站资源，例如HTML文件、CSS、JavaScript、图像、音频、视频文件，以及服务器端脚本（如PHP文件）。Web目录的核心作用包括：资源管理和共享：Web目录集中存放网站文件，使得管理和分享资源变得更简单。文件访问的标准化路径：通过URL路径与文件系统路径的映射，用户可以方便地通过统一的URL访问资源。基于访问权限的文件控制：Web服务器通常通过配置文件对Web目录的访问进行权限控制，防止未经授权的访问。2. 配置Web目录在不同的Web服务器中，Web目录的配置方式略有不同。下面是常见服务器的配置方法：Apache在Apache中，Web目录的根路径通过 DocumentRoot 指令指定。在配置文件中可以设置类似如下内容：DocumentRoot "/var/www/html"配置之后，所有请求将从 /var/www/html 目录开始查找文件。如果你设置了虚拟主机，可以为每个虚拟主机指定不同的Web目录：<VirtualHost *:80> ServerName example.com DocumentRoot "/var/www/example.com/public" </VirtualHost>Nginx在Nginx中，Web目录由 root 指令指定，通常在 server 块中配置：server { listen 80; server_name example.com; root /var/www/example.com/public; index index.html index.htm; }Nginx会在该目录中查找并返回客户端请求的文件资源。3. Web目录的结构和常见文件Web目录结构通常由以下文件和子目录组成：HTML 文件：存放网页内容文件，例如 index.html、about.html。CSS 文件：存放样式表文件，一般放在 css 文件夹中。JavaScript 文件：存放脚本文件，一般放在 js 文件夹中。图像文件：存放站点所需图像，一般放在 images 文件夹中。动态内容文件：例如 .php、.asp、.jsp 文件，用于生成动态内容。配置文件：例如 .htaccess（在Apache中用于设置目录权限、重定向等配置）。一个典型的Web目录结构如下：/var/www/example.com/public ├── index.html ├── css/ │ └── style.css ├── js/ │ └── app.js ├── images/ │ └── logo.png └── .htaccess4. Web目录的安全性为了防止未经授权的访问和文件泄露，建议在配置Web目录时注意以下安全措施：限制访问权限：设置适当的文件和目录权限，避免不必要的读写权限，防止用户上传和访问不应公开的文件。屏蔽目录列表：防止用户通过URL直接访问目录而显示文件列表。可以通过 Options -Indexes（在Apache中）或 autoindex off（在Nginx中）来关闭目录列表功能。配置防护规则：限制对敏感文件的访问，例如 .env、.htaccess、配置文件等，防止这些文件被公开访问。防止跨站脚本和注入攻击：在Web应用程序中实现输入过滤和验证，避免攻击者利用漏洞获取文件系统中的敏感信息。5. Web目录的常见位置在不同的操作系统和Web服务器上，默认Web目录位置可能会有所不同，以下为常见位置：Linux 系统：通常放在 /var/www/ 或 /usr/share/nginx/html 目录下。Windows 系统：可以设置在 C:\inetpub\wwwroot\（IIS服务器）或任何自定义路径。Web目录的路径可以根据需要进行调整，以便更好地组织网站文件和提高可维护性。6. Web目录的访问控制可以通过在Web服务器配置文件中使用以下指令或模块来控制访问：（Apache）：对指定目录设置访问控制。例如：<Directory "/var/www/html"> AllowOverride None Require all granted </Direc…

搭建自己的博客平台-平台选择
type: item
date: 2024-10-25T18:56:00+00:00
description: 我已经酝酿搭建一个博客很久了。机缘巧合之下，我尝试用 WordPress 来创建网站，并由此正式踏上了博客搭建的选型之路。鉴于当今大模型的知识面极其广泛，我首先通过大模型获取了相关资讯，并结合自身需求，最终选择了 Typecho 作为我的博客平台。为什么选择 Typecho？结合大模型的反馈，我了解到几种常见的博客平台，它们各有特色和独特优势。下面是一些平台及其特点的简要概述：WordPress - 官方网站Ghost - 官方网站Hexo - 官方文档Hugo - 官方文档Jekyll - 官方文档Medium - 官方文档Typecho - 官方文档Vercel + Next.js - 官方文档Halo - 官方文档平台选择简析Halo Halo 是国内知名的开源博客平台，页面设计美观大方，是很多用户搭建博客的不二之选。功能强大且易用，适合多数人的需求。WordPress 我最初接触建站工具时就是从 WordPress 开始的。它功能非常强大，支持多种插件和主题，适合多文章、多站点的需求。然而，WordPress 不支持 Markdown 语法，我认为它更适合搭建官方展示类网站。对于个人博客来说，WordPress 功能略显复杂，而我更倾向于简洁的开发者风格。Ghost / Medium 这两个平台都是国外知名的建站工具，动画特效酷炫，并且支持云托管等特性。不过，由于它们对中文支持不够友好，我没有选择它们。Hexo / Hugo Hexo 基于 Node.js，Hugo 基于 Go 语言。这两个平台主要面向开发者，并且对部署有一定要求。Hugo 主要为英文用户设计，Hexo 虽支持中文，但我更倾向于使用后端技术处理博客需求。Jekyll Jekyll 是基于 Ruby 语言的静态网站生成器。我对 Ruby 有一定兴趣，但发现 Jekyll 已经多年未更新维护，遂放弃了这一选择。Next.js 大模型的建议中提到 Next.js，但我认为它更适合应用搭建，而非博客平台。虽然用 Next.js 搭建博客也可行，但并非我的优先选择。最终选择：Typecho最终，我选择了 Typecho 作为博客平台。Typecho 原生支持 Markdown，界面简洁，风格类似于我常用的 Markdown 编辑器 Typora，这符合我对简单、直观的需求。接下来，我会进一步研究和探索该平台的使用，敬请期待后续文章更新！附件：大模型的回复内容常见的博客搭建平台有很多，不同平台各有优缺点，适合不同用户需求。以下是一些常见的博客平台以及它们的优劣分析，特别是对Markdown支持的情况。1. WordPress概述：WordPress 是目前全球最受欢迎的博客平台，分为 WordPress.com（托管版本）和 WordPress.org（自托管版本）。优点：插件丰富：有大量插件可以扩展功能，适合定制需求多的用户。SEO友好：内置SEO工具和大量SEO插件。社区活跃：有广泛的用户社区，资源丰富，问题容易找到解决方法。缺点：维护成本：自托管版本需要服务器、域名以及对技术的了解，维护成本较高。性能瓶颈：功能多的插件组合可能导致网站变慢。Markdown支持：原生不支持Markdown，但可以通过插件（如 Jetpack）实现。2. Ghost概述：Ghost 是一个基于 Node.js 的博客平台，界面简洁，专注于写作体验。优点：性能优越：基于 Node.js 构建，性能高效，适合对速度要求高的用户。Markdown支持好：原生支持Markdown，编写体验非常流畅。SEO和社交分享优化：内置SEO和社交分享功能，不需要额外插件。缺点：部署难度较高：自托管版本的安装配置较复杂，需要一定的Node.js环境经验。成本较高：托管版价格偏高，不适合个人和预算有限的用户。Markdown支持：原生支持，写作体验流畅。3. Hexo概述：Hexo 是一个基于 Node.js 的静态博客生成器，适合程序员使用。优点：静态文件：生成的博客是静态文件，加载速度快且安全。自定义强大：可以使用主题和插件，支持高度定制。免费使用：作为开源项目，Hexo 是免费的，可以部署在 GitHub Pages 等免费平台上。缺点：学习成本高：对技术要求较高，初学者上手较难。需要手动部署：每次更新内容都需要重新生成并部署。Markdown支持：原生支持Markdown，编写体验很好。4. Hugo概述：Hugo 是一个使用 Go 语言编写的静态博客生成器，以构建速度著称。优点：生成速度快：编译速度非常快，即使是大型博客也能瞬间生成。支持多语言：内置多语言支持，适合多语种博客。主题丰富：提供了很多主题，易于切换和定制。缺点：学习曲线：对于非技术人员来说，上手有难度。需要部署平台：需要服务器…