news 2026/10/20 1:16:47

EspoCRM 开源 CRM 如何部署:从源码到安装完成的 5 个关键步骤

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
EspoCRM 开源 CRM 如何部署:从源码到安装完成的 5 个关键步骤

EspoCRM 开源 CRM 如何部署:从源码到安装完成的 5 个关键步骤

【免费下载链接】espocrmEspoCRM – Open Source CRM Application项目地址: https://gitcode.com/GitHub_Trending/es/espocrm

EspoCRM 是一款免费开源的客户关系管理系统(CRM),帮助团队把客户、联系人、销售机会、营销活动和支持工单集中在一个系统里管理。它适合两类人:想把客户数据从表格和邮件里搬出来的中小团队,以及希望拥有完整源码、能深度定制的开发者。本文基于仓库真实代码说明技术栈,并给出一条可落地的部署路径和装完之后的检查清单。

项目全貌:技术栈与架构

EspoCRM 是一个 Web 应用:前端是单页应用(SPA),构建在自研框架之上,核心部分使用 TypeScript;后端用 PHP 编写,基于 Slim 框架提供 REST API,ORM 层自研,邮件解析、PDF 生成(dompdf)、Excel 处理(phpspreadsheet)、OAuth(league/oauth2-server)等能力都由 Composer 管理。所有业务数据存在关系型数据库里,前端通过/api/v1与后端交互。

项目要求依据
PHP8.3 – 8.5composer.json
数据库MySQL 8.0+ / MariaDB 10.6+ / PostgreSQL 15+README
PHP 扩展openssl、json、zip、gd、mbstring、xml、dom、curl、exif、pdo、ctypecomposer.json

后端代码集中在 application/Espo/ 目录,按 Core、Entities、Controllers、Tools 分层;安装流程位于 install/;自定义扩展预留了custom/Espo/Modules/和custom/Espo/Custom/两个目录(composer.json 的 PSR-4 映射里已声明),升级源码不会覆盖它们。

部署前的环境自检

PHP 是唯一的硬性运行时。部署前先确认版本和扩展都到位,否则安装向导会在系统检查页直接卡住:

php -v php -m | grep -E '^(openssl|json|zip|gd|mbstring|xml|dom|curl|exif|pdo|pdo_mysql|ctype)$'

输出应与composer.json中require列表的扩展名一一对应。如果选择 PostgreSQL 数据库,把pdo_mysql换成pdo_pgsql。数据库侧只需确认能连通、账户具备建表权限;推荐参数(如字符集)会在安装时由系统列出,按需调整即可。

最小可行部署:四步跑起安装向导

  1. 获取源码:git clone https://gitcode.com/GitHub_Trending/es/espocrm
  2. 安装 PHP 依赖:composer install
  3. 开放写权限:chmod -R 775 data/ custom/
  4. 浏览器访问站点域名,进入安装向导,完成数据库连接、管理员账户和系统参数(时区、语言、默认货币)设置

安装向导的每一步都是独立动作,代码在install/core/actions/下(环境检查、权限检查、数据库构建、用户创建),按页面顺序走完即可。向导会逐项校验 PHP 版本、扩展、数据库版本和目录可写性,全部通过后才会执行建表。

装完先改这三处

  • 删除 install 目录。安装成功后data/config.php已生成,若保留install/,任何人都能再次触发安装流程。
  • 配置定时任务。EspoCRM 的定时作业(通知、队列清理等)由cron.php驱动,挂一条 crontab 即可:* * * * * php /path/to/espocrm/cron.php >/dev/null 2>&1。不配 cron,依赖计划任务的功能会静默失效。
  • 确认 URL 重写生效。站点根目录.htaccess会把请求转发到public/,并禁止直接访问data/、application/、custom/、vendor/;Nginx 部署时仓库在install/core/config.php中内置了完整参考配置(try_files、/api/v1/重写、deny all规则),照抄后重载服务即可。

最容易踩的三个坑:

  • 安装页空白 / 500→ 多半是 PHP 扩展缺失或版本不满足 8.3 → 看 PHP 错误日志补齐扩展。
  • 页面 404、URL 里出现 index.php→ 重写模块未启用 → Apache 执行a2enmod rewrite,Nginx 核对 location 规则。
  • 安装提示目录不可写→ Web 用户对data/无写权限 → 用chown把目录属主改为 Web 进程用户。

进阶方向:缓存、安全与扩展

  • 性能:配置默认写入data/config.php,缓存类型除文件外还支持 Redis、Memcached(composer 依赖predis/predis),生产环境建议换掉文件缓存;邮件收发依赖 IMAP,ext-ldap、ext-zmq为可选增强项。
  • 安全:启用 HTTPS;数据库账户只授业务所需权限;定期查看data/logs/下的日志,data/与application/目录已被 Web 层禁止访问,不要自行放开。
  • 扩展:REST API 位于/api/v1,OAuth 端点在/oauth/,客户门户在/portal/;自建模块放入custom/Espo/Modules/,升级时不受影响。

下一步:把备份策略跑起来——对 MySQL 定期执行mysqldump,连同data/目录一起归档,这是 CRM 部署后最不能省的一步。

【免费下载链接】espocrmEspoCRM – Open Source CRM Application项目地址: https://gitcode.com/GitHub_Trending/es/espocrm

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/20 1:15:26

DeepSeek车载本地化部署:模型压缩、量化与知识蒸馏实战指南

简介:该资源围绕DeepSeek车载智能系统边缘侧本地化部署展开,面向自动驾驶、车联网及嵌入式AI方向的研发工程师与算法人员。文档系统覆盖模型压缩、知识蒸馏、数据标注、训练优化、LoRA与Adapter微调等关键环节,结合车载场景算力、功耗与实时性…

作者头像 李华
网站建设 2026/10/20 1:15:12

Uplift Tree建模

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/20 1:12:46

StartOS服务依赖管理:如何优雅处理复杂依赖关系

StartOS服务依赖管理:如何优雅处理复杂依赖关系 在自托管服务的世界中,服务依赖管理是确保系统稳定运行的关键。StartOS作为一款专为自托管设计的图形化服务器操作系统,提供了强大的依赖关系处理机制,让用户可以轻松管理复杂的服…

作者头像 李华
网站建设 2026/10/20 1:10:57

ManiSkill3:一张 4090 并行仿真 8192 个机器人,26 万 FPS

ManiSkill3:一张 4090 并行仿真 8192 个机器人,26 万 FPS 【免费下载链接】ManiSkill Manipulation Skill Framework, an open source GPU parallelized robotics simulator and benchmark 项目地址: https://gitcode.com/GitHub_Trending/ma/ManiSkil…

作者头像 李华
网站建设 2026/10/20 1:07:39

工业电表采集网关实战:DLT645与Modbus双规约边缘计算上云

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华