1. 环境配置工作日志:第一周实战记录
刚接手新项目时,环境配置总是最让人头疼的环节。上周我负责搭建一个全栈开发环境,从零开始配置前后端联调环境,过程中踩了不少坑也积累了些实用经验。这份工作日志记录了完整的配置流程和关键问题的解决方案,特别适合需要快速搭建标准化开发环境的同行参考。
2. 基础环境准备
2.1 操作系统与基础工具链
我选择Ubuntu 22.04 LTS作为基础系统,这个长期支持版本稳定性有保障。先用apt-get update && apt-get upgrade更新系统后,安装以下基础工具包:
sudo apt install -y git curl wget build-essential特别提醒:build-essential包含gcc/g++等编译工具链,很多开发工具的安装都依赖这些基础组件。如果跳过这步,后续安装某些工具时可能会出现"command not found"的错误。
2.2 版本控制配置
配置Git全局信息时,建议使用公司邮箱而非个人邮箱:
git config --global user.name "YourName" git config --global user.email "your.name@company.com"同时设置默认分支为main(现代项目规范):
git config --global init.defaultBranch main注意:如果公司使用GitLab等平台,还需要配置SSH密钥。生成密钥后记得把公钥添加到Git托管平台。
3. 开发环境搭建
3.1 后端开发环境
选择Node.js 18.x LTS版本作为后端运行时:
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - sudo apt-get install -y nodejs验证安装时发现npm版本较旧,需要单独升级:
sudo npm install -g npm@latest数据库选用PostgreSQL 14,安装后需要配置远程访问权限:
sudo apt install postgresql postgresql-contrib sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'your_password';"3.2 前端开发环境
使用nvm管理Node版本是个好选择,可以隔离不同项目的Node环境:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash source ~/.bashrc nvm install 16安装Vue CLI时遇到权限问题,改用普通用户安装:
npm install -g @vue/cli经验:全局安装包时如果报EACCES错误,可以配置npm使用其他目录:
mkdir ~/.npm-global npm config set prefix '~/.npm-global'
4. 联调环境配置
4.1 代理服务器设置
开发时前后端分离,需要配置代理解决跨域问题。在vue.config.js中添加:
module.exports = { devServer: { proxy: { '/api': { target: 'http://localhost:3000', changeOrigin: true } } } }4.2 环境变量管理
使用dotenv管理环境变量,创建.env.development文件:
VUE_APP_API_BASE=http://localhost:3000 DB_HOST=localhost DB_PORT=5432后端读取时注意:
require('dotenv').config() console.log(process.env.DB_HOST)5. 常见问题排查
5.1 端口冲突问题
启动服务时报端口占用错误,用lsof查找占用进程:
sudo lsof -i :3000 kill -9 <PID>5.2 依赖版本冲突
删除node_modules和package-lock.json后重新安装:
rm -rf node_modules package-lock.json npm install5.3 数据库连接失败
检查pg_hba.conf配置,添加:
host all all 0.0.0.0/0 md5然后重启PostgreSQL服务:
sudo service postgresql restart6. 开发辅助工具
6.1 代码质量检查
配置ESLint+Prettier统一代码风格:
npm install eslint prettier eslint-plugin-vue --save-dev创建.eslintrc.js配置文件:
module.exports = { root: true, env: { node: true }, extends: [ 'plugin:vue/essential', 'eslint:recommended' ], rules: { 'no-console': 'off' } }6.2 接口调试工具
安装Postman并配置环境变量,建议将常用请求保存为集合。也可以使用VS Code的REST Client插件,直接在项目里保存.http文件:
GET http://localhost:3000/api/users Content-Type: application/json7. 容器化准备
7.1 Docker基础配置
安装Docker后,将当前用户加入docker组避免sudo:
sudo usermod -aG docker $USER newgrp docker7.2 编写Dockerfile
后端服务的Dockerfile示例:
FROM node:18-alpine WORKDIR /app COPY package*.json ./ RUN npm install COPY . . EXPOSE 3000 CMD ["node", "server.js"]构建和运行命令:
docker build -t backend . docker run -p 3000:3000 -d backend8. 持续集成准备
8.1 GitHub Actions配置
创建.github/workflows/ci.yml文件:
name: CI on: [push] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: node-version: 18 - run: npm install - run: npm test8.2 自动化部署脚本
编写deploy.sh脚本:
#!/bin/bash git pull npm install npm run build pm2 restart all记得给执行权限:
chmod +x deploy.sh9. 文档与知识管理
9.1 项目文档结构
建议采用如下目录结构:
/docs /architecture # 架构设计 /api # API文档 /deployment # 部署指南 /meetings # 会议记录9.2 Markdown文档规范
配置VS Code的Markdown插件,统一使用如下Front Matter:
--- title: 环境配置指南 date: 2023-07-20 tags: [环境, 配置] ---10. 效率工具推荐
10.1 命令行增强工具
安装zsh和oh-my-zsh提升终端效率:
sudo apt install zsh sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"推荐插件:
- zsh-autosuggestions
- zsh-syntax-highlighting
10.2 IDE配置同步
使用VS Code的Settings Sync功能,将配置保存在GitHub Gist。关键设置:
{ "editor.formatOnSave": true, "eslint.validate": ["javascript", "vue"], "files.autoSave": "afterDelay" }11. 安全配置要点
11.1 SSH安全加固
修改/etc/ssh/sshd_config:
PermitRootLogin no PasswordAuthentication no然后重启服务:
sudo systemctl restart sshd11.2 依赖安全扫描
使用npm audit检查漏洞:
npm audit npm audit fix对于前端项目,可以集成Snyk:
npm install -g snyk snyk auth snyk test12. 性能优化技巧
12.1 前端构建优化
配置vue.config.js中的并行构建:
const { defineConfig } = require('@vue/cli-service') module.exports = defineConfig({ parallel: require('os').cpus().length > 1, transpileDependencies: true })12.2 数据库性能
PostgreSQL配置优化(postgresql.conf):
shared_buffers = 4GB effective_cache_size = 12GB maintenance_work_mem = 1GB13. 团队协作规范
13.1 Git工作流
采用Git Flow分支模型:
main - 生产环境代码 develop - 集成测试分支 feature/* - 功能开发分支 release/* - 预发布分支 hotfix/* - 紧急修复分支13.2 代码审查要点
制定Code Review清单:
- 是否包含敏感信息
- 是否有明显的性能问题
- 是否遵循项目代码风格
- 是否有适当的单元测试
14. 监控与日志
14.1 应用日志配置
使用winston记录结构化日志:
const winston = require('winston'); const logger = winston.createLogger({ level: 'info', format: winston.format.json(), transports: [ new winston.transports.File({ filename: 'error.log', level: 'error' }), new winston.transports.File({ filename: 'combined.log' }) ] });14.2 性能监控
安装PM2并配置监控:
npm install pm2 -g pm2 start server.js pm2 monit15. 备份策略
15.1 数据库备份
设置PostgreSQL自动备份:
pg_dump -U postgres -d dbname -f backup.sql可以配置cron任务每天执行:
0 3 * * * pg_dump -U postgres dbname > /backups/dbname_$(date +\%Y\%m\%d).sql15.2 代码备份
除了Git仓库,建议定期打包重要代码:
tar -czvf code_backup_$(date +\%Y\%m\%d).tar.gz /path/to/project16. 本地测试环境
16.1 模拟第三方服务
使用Mock Service Worker拦截API请求:
import { setupWorker, rest } from 'msw' const worker = setupWorker( rest.get('/api/user', (req, res, ctx) => { return res( ctx.json({ id: 1, name: 'Test User' }) ) }) )16.2 测试数据生成
使用Faker.js创建测试数据:
const faker = require('faker'); const users = Array(10).fill().map(() => ({ name: faker.name.findName(), email: faker.internet.email() }));17. 跨平台兼容性
17.1 处理路径差异
使用path模块处理文件路径:
const path = require('path'); const filePath = path.join(__dirname, 'data', 'file.txt');17.2 换行符统一
配置Git自动转换换行符:
git config --global core.autocrlf input18. 环境差异管理
18.1 多环境配置
使用cross-env设置环境变量:
npm install cross-env --save-dev然后在package.json中:
"scripts": { "dev": "cross-env NODE_ENV=development node server.js" }18.2 条件化配置
根据环境加载不同配置:
const config = require(`./config.${process.env.NODE_ENV || 'development'}.json`);19. 开发效率提升
19.1 代码片段管理
配置VS Code用户片段(Code → Preferences → User Snippets):
{ "Console log": { "prefix": "cl", "body": ["console.log('$1', $1);"], "description": "Log output to console" } }19.2 自动化脚本
编写常用操作的Makefile:
install: npm install start: npm start test: npm test20. 知识沉淀建议
20.1 问题记录模板
建立标准化的问题记录格式:
## 问题描述 ## 环境信息 ## 重现步骤 ## 实际结果 ## 预期结果 ## 解决方案20.2 技术决策记录
重要技术选择应记录ADR(Architecture Decision Record):
# 标题 ## 状态 提议/已采纳/已弃用 ## 背景 ## 决策 ## 后果