EspoCRM部署实战:从克隆代码到正式上线,开源CRM系统一步步跑通 📅 2026/8/18 18:16:59 EspoCRM部署实战从克隆代码到正式上线开源CRM系统一步步跑通【免费下载链接】espocrmEspoCRM – Open Source CRM Application项目地址: https://gitcode.com/GitHub_Trending/es/espocrmEspoCRM 是一款免费开源的客户关系管理CRM系统它把线索、联系人、销售机会和客户沟通记录集中到一套界面里解决企业客户信息散落、跟进全凭人工记的痛点。这篇 EspoCRM 部署实战会按真实操作顺序走一遍从环境检查、拉代码、配服务器到跑通安装向导、上线收尾每步都能照做。动工之前先弄清三件事很多人装开源系统失败不是命令敲错而是没想清楚我要装的东西长什么样、装到哪一层。开工前先花两分钟对齐三件事。第一件EspoCRM 是什么形态的程序它不是一个静态网站而是典型的 Web 应用组合组成部分技术形态在本仓库里的位置后端 APIPHP 8.3REST 风格application/Espo/Core、application/Espo/Controllers前端界面SPA 单页应用TypeScript/JavaScriptclient/src数据库MySQL 8.0 / MariaDB 10.3 / PostgreSQL 15安装向导负责建表元数据配置JSON 描述实体、字段、界面application/Espo/Resources/metadata这意味着你需要的不是一个能显示页面的服务器而是一台同时跑得动 PHP 解释器 数据库的机器。第二件要准备多少时间按下面的步骤走熟练的话 40 分钟新手第一次摸 1~2 小时也足够。比想象中快的很大一个原因是EspoCRM 自带网页版安装向导建库建表、初始化数据这些脏活它全包了不需要手工写 SQL。第三件装完大概是什么样装完登录后你会看到类似下面的销售看板——不同阶段的销售机会一目了然。这也是我第一次看到它时觉得值了的地方接下来开始动手。我以 Ubuntu 22.04 Nginx MySQL 为例其他发行版命令大同小异。第一步体检环境别让服务器拖后腿EspoCRM 对版本很挑剔尤其是 PHP。先把环境测一遍避免装到一半才发现版本不兼容。1. 检查 PHP 版本项目要求 PHP 8.3 ~ 8.5详见仓库根目录 composer.json 中的 require 段过高过低都会报错php -v # 期望输出中 PHP 版本号在 8.3.x ~ 8.5.x 之间 # 如果版本不对先升级sudo add-apt-repository ppa:ondrej/php sudo apt update sudo apt install php8.32. 检查必备扩展php -m | grep -E pdo|pdo_mysql|pdo_pgsql|gd|zip|intl|mbstring|xml|dom|curl|exif|ctype|openssl对照上表逐项确认。缺哪个装哪个比如sudo apt install php8.3-gd php8.3-mysql php8.3-zip php8.3-intl php8.3-mbstring php8.3-xml php8.3-curl php8.3-exif容易忽略的坑gd、exif、zip这三个扩展经常被默认环境漏掉而它们直接影响安装向导能否通过系统检查这一步。安装后记得sudo systemctl restart php8.3-fpm让扩展生效。3. 准备数据库建一个专用库和专用账号别用 root 裸奔-- 在 MySQL/MariaDB 里执行 CREATE DATABASE espocrm CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER espocrm_userlocalhost IDENTIFIED BY 换成强密码; GRANT ALL PRIVILEGES ON espocrm.* TO espocrm_userlocalhost; FLUSH PRIVILEGES;这里utf8mb4字符集建议直接沿用后面导入中文数据不会出现乱码。如果你用的是 PostgreSQL把CREATE USER换成CREATE USER espocrm_user WITH PASSWORD ...;即可其余交给安装向导。第二步把代码请回家并把依赖装齐环境合格后克隆代码并安装 PHP 依赖。这一步也是新手最容易卡住的地方——光有源码跑不起来还必须有vendor目录composer 自动生成的依赖包。# 克隆项目源码EspoCRM 官方仓库镜像 git clone https://gitcode.com/GitHub_Trending/es/espocrm # 进入项目目录 cd espocrm # 安装 PHP 依赖会生成 vendor/ 目录 composer install --no-dev --optimize-autoloader说明一下第三条命令的两个参数--no-dev跳过开发依赖PHPUnit、PHPStan 等生产环境不需要还能省不少磁盘--optimize-autoloader生成优化后的自动加载映射首次访问页面会明显更快。装完后可以顺手验证一下目录结构是否齐全ls -d application client public data custom vendor # 期望六个目录都存在第三步让 Nginx 认识这个项目含权限设置这是全程最容易踩坑的一步核心就两点站点根目录指对 目录权限给对。3.1 站点根目录指向 publicEspoCRM 采用了公开目录与业务代码分离的结构浏览器只能访问public/目录业务代码在application/、data/等目录里不直接暴露给外网。所以 Nginx 的root要指向public别指向项目根目录项目根目录那个 index.php 只是提示页会提醒你去配置服务器。新建一个站点配置文件例如/etc/nginx/sites-available/espocrmserver { listen 80; server_name crm.example.com; # 改成你自己的域名或 IP root /var/www/espocrm/public; # 关键根目录指向 public index index.php; client_max_body_size 50M; # 允许上传大附件邮件、文件字段用 # 前端 SPA 与静态资源找不到文件就交给 index.php 处理 location / { try_files $uri $uri/ /index.php?$query_string; } # PHP 请求统一交给 php-fpm 处理 location ~ \.php$ { include fastcgi_params; fastcgi_pass unix:/var/run/php/php8.3-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } # 防止访问敏感目录即便配错了根目录也有兜底防护 location ^~ /data/ { deny all; } location ^~ /application/ { deny all; } location ^~ /custom/ { deny all; } location ^~ /vendor/ { deny all; } }启用站点并重载sudo ln -s /etc/nginx/sites-available/espocrm /etc/nginx/sites-enabled/ sudo nginx -t # 先做配置语法检查报错会提示具体行号 sudo systemctl reload nginx如果你用 Apache 2.4等价做法是AllowOverride All开启并启用 rewrite 模块sudo a2enmod rewrite。项目自带的安装配置参考在 install/core/config.php 里两种服务器的推荐配置都能找到值得一看。3.2 目录权限只把该写的目录放开EspoCRM 运行期需要写缓存、日志和用户自定义数据需要把这些目录交给 Web 用户cd /var/www/espocrm # 目录属主交给 www-data方便 php-fpm 读写 sudo chown -R www-data:www-data data custom client/custom # 文件权限收紧目录 755、普通文件 644 是安全基线 sudo find data custom client/custom -type d -exec chmod 755 {} \; sudo find data custom client/custom -type f -exec chmod 644 {} \;这里有个易错点只给data授权不够custom和client/custom也要放开。不少人在安装向导最后一步报目录不可写就是漏了后两个。第四步跟着安装向导走完五步一切就绪后浏览器访问安装入口http://crm.example.com/install/EspoCRM 的安装向导是分步完成的每一步对应的源码都在 install/core/actions 目录下step1.php ~ step5.php好奇的话可以翻一翻理解它每一步到底在做什么步骤界面要你做什么背后做了什么对应源码第 1 步接受 AGPLv3 许可证协议step1.php 记录协议确认第 2 步查看系统环境检查结果step2.php checkPermission.php 检测 PHP 扩展、目录权限第 3 步填写数据库连接信息step3.php settingsTest.php 先测试连接再入库第 4 步创建管理员账号step4.php createUser.php 建首个管理员第 5 步配置基础站点信息step5.php saveSettings.php 写入站点配置几个操作要点第 2 步如果有红叉通常是扩展缺失或目录权限问题把上面第一步、第三步的检查再做一遍第 3 步填数据库时host填localhost、port填3306PostgreSQL 则填5432用户名密码用我们第一步建的那个专用账号第 5 步会让你填站点名称和默认语言这里可以直接选简体中文装完界面就是中文的。最后点完成向导会自动建表、写入初始化数据并生成配置文件。看到安装成功的提示后记得立刻去删除或保护安装目录——这是很多人忽略的安全隐患# 强烈建议装完后把安装目录移走或改名防止他人重跑安装向导 sudo mv /var/www/espocrm/public/install /var/www/espocrm/public/install.bak第五步装完别急着用三件收尾事必做安装向导结束 ≠ 上线完成。EspoCRM 依赖后台定时任务驱动大量功能邮件收发、工作流、提醒、报表刷新这三件事不做系统会看起来活着但功能是瘫的。收尾一配置定时任务cron# 编辑当前用户的 crontab crontab -e加入下面这一行让系统每分钟跑一次后台任务# 每分钟执行一次 EspoCRM 后台任务cron.php 是任务入口 * * * * * /usr/bin/php /var/www/espocrm/cron.php /dev/null 21这条命令是 EspoCRM 的心脏。邮件账户收信、工作流触发、定期报表都靠它推进。配完后可以到后台系统 → 系统设置里看到上次运行时间在持续刷新就说明生效了。收尾二启动 WebSocket 守护进程可选但推荐如果你要用流Stream实时动态、系统通知的实时推送需要让 daemon.php 常驻# 用 nohup 或 systemd 常驻运行 WebSocket 服务 nohup php /var/www/espocrm/daemon.php /dev/null 21 生产环境更推荐写成 systemd 服务保证服务器重启后自动拉起。收尾三重建缓存并做首次登录验证# 重建系统缓存与元数据缓存让配置彻底生效 php /var/www/espocrm/rebuild.php然后访问http://crm.example.com用第 4 步创建的管理员账号登录。能看到主界面、能新建一条联系人记录就说明整个 EspoCRM 部署链路已经打通。进阶让它在低配服务器上跑得更顺系统跑通只是及格线。很多团队把 EspoCRM 装在 1 核 1G 的廉价 VPS 上这里给三个性价比最高的优化手段。优化一打开 OPcache这是投入产出比最高的一项; php.ini 中开启 OPcache opcache.enable1 opcache.memory_consumption128 opcache.interned_strings_buffer8 opcache.max_accelerated_files10000 opcache.revalidate_freq60EspoCRM 后端类文件很多仅 application/Espo/Core 下就有几百个类没有 OPcache 时每次请求都要重新解析一遍 PHP 文件打开后首屏速度提升非常明显。优化二改用 Redis 缓存项目默认用文件缓存在并发不高时完全够用。如果并发上来了可以把缓存切到 Redis——composer.json 里已经内置了 predis 依赖不需要额外装扩展// data/config.php 中添加文件默认在 data/config.php安装后自动生成 cache [ handler \Espo\Core\Utils\Cache\RedisCache::class, redis [ host 127.0.0.1, port 6379, ], ],改完执行php rebuild.php重建缓存即可生效。优化三给数据库减压安装完第一时间开启 MySQL 慢查询日志观察哪些查询慢常用筛选字段如status、assignedUserId如果数据量大在后台实体管理器里给它们建索引定期清理历史日志和过期的导入数据后台清理功能里有对应任务。实战避坑速查表最后把我自己踩过、以及社区里高频出现的坑汇总成一张表遇到报错先来这里对号入座报错现象根因解决办法安装向导第 2 步红色警告PHP 扩展缺失对照本文第一步安装 gd/zip/exif/intl 等扩展并重启 fpm提示目录不可写data/custom/client-custom 权限不足重新执行第三步的 chown/chmod 命令页面一直转圈或 404Nginx root 指到了项目根目录把 root 改为指向 public 目录登录后提示上次运行时间很久cron 未配置执行收尾一的 crontab 配置上传大附件失败Nginx 上传大小限制检查 client_max_body_size 是否设为 50M安装完成后别人能重装未移除安装目录把 public/install 改名或删除数据库连接失败账号权限不足或字符集不对确认 utf8mb4 字符集与 GRANT 权限已执行装完之后的下一步到这里你的 EspoCRM 已经从一段代码变成了可用的客户管理系统。接下来值得做三件事去后台管理 → 实体管理器转一圈——这是 EspoCRM 的核心能力可以零代码新增字段、新建实体界面元数据都来自 application/Espo/Resources/metadata 下的 JSON 文件把邮件账户接进来邮箱 → 个人邮箱/群组邮箱让邮件收发在系统内闭环自定义业务逻辑放对地方后端扩展代码放在 custom/Espo/Custom 与 custom/Espo/Modules前端自定义放在 client/custom/modules——升级时不会互相覆盖。部署只是开始后面怎么用起来才是真正拉开差距的地方。祝你上线顺利【免费下载链接】espocrmEspoCRM – Open Source CRM Application项目地址: https://gitcode.com/GitHub_Trending/es/espocrm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考