附录 C 默认端口与配置文件路径
安装位置因安装方式而异,这里给最常见的。Docker 列指官方镜像内的路径。“—“表示没有或不适用。
| 工具 | 默认端口 | 配置文件(Linux) | 配置文件(Windows) | 配置文件(Docker 镜像内) | 数据与日志 |
|---|---|---|---|---|---|
| VS Code | — | ~/.config/Code/User/settings.json |
%APPDATA%\Code\User\settings.json |
— | 工作区 .vscode/settings.json |
| Git | — | ~/.gitconfig,仓库 .git/config |
%USERPROFILE%\.gitconfig |
— | — |
| SSH | 22 | ~/.ssh/config,/etc/ssh/sshd_config;自己的改动放 /etc/ssh/sshd_config.d/ |
%USERPROFILE%\.ssh\config |
— | ~/.ssh/known_hosts;服务端登录日志 /var/log/auth.log |
| Docker | 2375/2376(远程 API,默认不开) | /etc/docker/daemon.json;Docker Desktop:~/.docker/daemon.json |
Docker Desktop 设置,或 %USERPROFILE%\.docker\daemon.json |
— | /var/lib/docker |
| Nginx | 80、443 | /etc/nginx/nginx.conf,/etc/nginx/conf.d/;Ubuntu 包另有 /etc/nginx/sites-enabled/ |
conf\nginx.conf |
/etc/nginx/conf.d/default.conf |
日志 /var/log/nginx/;网站根目录,镜像:/usr/share/nginx/html;Ubuntu 包:/var/www/html |
| Caddy | 80、443、2019(管理 API) | /etc/caddy/Caddyfile |
同目录 Caddyfile |
/etc/caddy/Caddyfile |
镜像:/data,/config;Ubuntu 包:/var/lib/caddy/.local/share/caddy,/var/lib/caddy/.config/caddy |
| PostgreSQL | 5432 | /etc/postgresql/<版本>/main/postgresql.conf |
data\postgresql.conf |
/var/lib/postgresql/data/postgresql.conf |
Linux 包:/var/lib/postgresql/<版本>/main,日志 /var/log/postgresql/;Windows:data\,日志 data\log\;镜像:/var/lib/postgresql/data,日志到标准错误(docker compose logs postgres) |
| MySQL | 3306 | /etc/mysql/my.cnf |
my.ini |
/etc/my.cnf |
/var/lib/mysql |
| SQLite | — | 无服务,单文件;命令行读 ~/.sqliterc |
%USERPROFILE%\.sqliterc |
— | 数据库就是那个文件,WAL 模式下旁边另有 -wal、-shm 两个文件 |
| MongoDB | 27017 | /etc/mongod.conf |
bin\mongod.cfg |
用启动参数 | Linux 包:/var/lib/mongodb,日志 /var/log/mongodb/;镜像和直接运行 mongod:/data/db |
| Redis | 6379 | /etc/redis/redis.conf |
— | 默认无配置文件,用启动参数 | /data(RDB、AOF) |
| RabbitMQ | 5672、15672(管理界面) | /etc/rabbitmq/rabbitmq.conf |
%APPDATA%\RabbitMQ\ |
/etc/rabbitmq/conf.d/ |
/var/lib/rabbitmq(随书 compose:卷 rabbitmqdata) |
| Kafka | 9092(容器之间 19092,随书 compose) | config/server.properties |
同 | /etc/kafka/docker/ |
默认 /tmp/kraft-combined-logs;随书 compose 改为 /var/lib/kafka/data(卷 kafkadata) |
| ufw | — | /etc/default/ufw(默认策略);/etc/ufw/(ufw allow 写进 user.rules,用命令改) |
— | — | 日志 /var/log/ufw.log(Ubuntu) |
| cron | — | /etc/crontab,/etc/cron.d/;用户的 /var/spool/cron/crontabs/<用户>(只用 crontab -e 改) |
— | — | journalctl -u cron |
| systemd | — | 自己写的 /etc/systemd/system/<服务>.service;包装的 /usr/lib/systemd/system/;覆盖 /etc/systemd/system/<服务>.service.d/override.conf |
— | — | 服务输出进 journald,见下一行 |
| journald | — | /etc/systemd/journald.conf |
— | — | /var/log/journal/(Ubuntu 默认持久保存),用 journalctl 看 |
随书 compose 文件全文
Section titled “随书 compose 文件全文”把下面四个文件按这个目录结构放进同一个文件夹,在 compose/ 目录下运行 docker compose --profile <组> up -d 即可,各组的用法见第 13 章。
compose/├── compose.yaml├── nginx/│ └── default.conf├── caddy/│ └── Caddyfile└── html/ └── index.htmlcompose/compose.yaml:
# 本书全部服务类工具。按组启动:# docker compose --profile cache up -d 只起 Redis# docker compose --profile db up -d PostgreSQL、MySQL、MongoDB# docker compose --profile mq up -d RabbitMQ、Kafka# docker compose --profile web up -d Nginx、Caddy# docker compose --profile all up -d 全部# PostgreSQL、MySQL 口令 dev,Redis、MongoDB、Kafka 不设口令,RabbitMQ 为 guest/guest,只在本机用。# 数据在命名卷里,docker compose --profile all down -v 会删掉。# 端口只绑定 127.0.0.1,局域网里的其他机器连不上;要开放就去掉前缀。name: devtools
services: postgres: image: postgres:17 profiles: [db, all] environment: POSTGRES_PASSWORD: dev ports: ["127.0.0.1:5432:5432"] volumes: ["pgdata:/var/lib/postgresql/data"]
mysql: image: mysql:8.4 profiles: [db, all] environment: MYSQL_ROOT_PASSWORD: dev ports: ["127.0.0.1:3306:3306"] volumes: ["mysqldata:/var/lib/mysql"]
mongo: image: mongo:8 profiles: [db, all] ports: ["127.0.0.1:27017:27017"] volumes: ["mongodata:/data/db"]
redis: image: redis:8 profiles: [cache, all] command: ["redis-server", "--appendonly", "yes", "--maxmemory", "256mb", "--maxmemory-policy", "allkeys-lru"] ports: ["127.0.0.1:6379:6379"] volumes: ["redisdata:/data"]
rabbitmq: image: rabbitmq:4-management profiles: [mq, all] hostname: rabbitmq # 数据目录按节点名区分,主机名固定,重建容器后才找得到原来的数据 ports: ["127.0.0.1:5672:5672", "127.0.0.1:15672:15672"] # 15672 是管理界面,guest/guest volumes: ["rabbitmqdata:/var/lib/rabbitmq"]
kafka: image: apache/kafka:4.0.0 profiles: [mq, all] # 单节点 KRaft(同一进程既是 broker 又是 controller)。两个地址: # 容器之间连 kafka:19092,宿主机连 localhost:9092 environment: KAFKA_NODE_ID: 1 KAFKA_PROCESS_ROLES: broker,controller KAFKA_LISTENERS: PLAINTEXT://:19092,HOST://:9092,CONTROLLER://:9093 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:19092,HOST://localhost:9092 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,HOST:PLAINTEXT KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER KAFKA_CONTROLLER_QUORUM_VOTERS: 1@localhost:9093 KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1 KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1 KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0 KAFKA_LOG_DIRS: /var/lib/kafka/data ports: ["127.0.0.1:9092:9092"] volumes: ["kafkadata:/var/lib/kafka/data"]
nginx: image: nginx:stable-alpine profiles: [web, all] ports: ["127.0.0.1:8080:80"] volumes: - ./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro - ./html:/usr/share/nginx/html:ro
caddy: image: caddy:2 profiles: [web, all] ports: ["127.0.0.1:8081:80"] volumes: - ./caddy/Caddyfile:/etc/caddy/Caddyfile:ro - ./html:/srv:ro
volumes: pgdata: mysqldata: mongodata: redisdata: rabbitmqdata: kafkadata:compose/nginx/default.conf:
server { listen 80; root /usr/share/nginx/html; # 静态文件目录 index index.html;}compose/caddy/Caddyfile:
:80 { root * /srv file_server}compose/html/index.html:
<!doctype html><meta charset="utf-8"><title>常见开发工具速查 · 随书服务</title><p>看到这一页,说明 Web 服务器已经跑起来了。</p>