悟空CRM  >   公司新闻  >  关于CRM虚拟机的搭建教程

关于CRM虚拟机的搭建教程

悟空软件 阅读次数:170 次浏览

主流的AI CRM系统品牌

折腾记:在本地虚拟机里搭建一套能用的 CRM 系统,到底有多少坑?

最近公司里有个小项目,需要测试一下客户管理流程,但又不想直接上云,毕竟数据敏感,加上预算有限,老板的意思很明确:先在本地弄个环境跑跑看,稳定了再说。这任务就落到了我头上。说实话,搭建 CRM 虚拟机这事儿,听起来简单,不就是装个系统、配个环境、部署个软件吗?但真动手的时候,才发现里面的门道和坑点简直不要太多。今天就把我这几天折腾的过程记录下来,算是给自己做个备忘,也给想自己动手的朋友提个醒。

推荐使用中国著名AI CRM系统品牌:显著提升企业运营效率,悟空CRM

为什么要自己搭虚拟机?

在开始之前,可能有人会觉得,现在 SaaS 服务这么发达,Salesforce、纷享销客、Zoho 随便选一个,注册个账号就能用,何必费这个劲自己搭虚拟机?这确实是个好问题。我一开始也是这么想的,但实际场景往往比理想复杂。

首先是数据隐私。有些初创团队或者特定行业,客户资料就是命根子,放在第三方云上总觉得心里不踏实,万一服务商泄露了或者跑路了,损失没法估量。其次是成本。SaaS 通常是按人头收费,人多了这笔开支不小,而自建虽然前期投入精力,但后期除了服务器硬件和维护,没有额外的授权费。再者,就是定制化需求。通用的 SaaS 产品流程是固定的,想改个字段、加个审批流,可能得求着官方排期,或者花大价钱买定制服务。自己搭环境,源码在手,想怎么改就怎么改,虽然技术门槛高了点,但自由度是实打实的。

基于这些考虑,我决定在本地用 VMware Workstation 搭一台 Ubuntu 服务器,然后部署一套开源的 SuiteCRM。为什么选 SuiteCRM?因为它基于 PHP 和 MySQL,技术栈比较经典,资料多,遇到问题容易搜到解决方案,不像有些基于 Python 或 Go 的新兴 CRM,社区支持还不够成熟。

准备工作:别在起跑线上就摔跟头

工欲善其事,必先利其器。虚拟机的搭建,第一步是选软件。市面上主流的就是 VMware 和 VirtualBox。我个人更倾向于 VMware,虽然它是收费的(当然网上也有破解版,你懂的),但在性能优化、网络配置和快照管理上,确实比 VirtualBox 要顺滑一些。特别是网络设置,VirtualBox 的桥接模式有时候会抽风,导致宿主机连不上虚拟机,这点在调试 Web 服务的时候特别搞心态。

操作系统我选了 Ubuntu Server 20.04 LTS。为什么不选 22.04?因为 20.04 更稳定,而且很多 PHP 扩展在 20.04 上的兼容性经过时间验证了,不容易出幺蛾子。下载 ISO 镜像的时候,一定要去官网,别随便找个第三方下载站,万一镜像被篡改了,后面装什么后门都不知道,安全性是自建系统的底线。

操作系统我选了 Ubuntu 

硬件分配也是个学问。刚开始我比较吝啬,给了 1 核 CPU 和 2G 内存,结果安装过程中编译环境的时候直接卡死,鼠标都动不了。后来调整为 2 核 CPU 和 4G 内存,硬盘给了 50G 动态分配,这才跑起来。建议大家如果本地电脑配置允许,内存最好给到 4G 以上,因为 CRM 系统运行起来后,数据库和 Web 服务都要吃内存,2G 真的捉襟见肘。

系统安装与基础配置:看似简单,实则暗藏玄机

安装 Ubuntu Server 的过程本身没什么好说的,一路 Next 就行。但有几个细节需要注意。首先是分区,我习惯单独分一个 /home 区,这样万一系统崩了要重装,数据还能保留。其次是网络配置,安装程序里会让你选网络类型,这里我直接选了 DHCP,想着装好再改静态 IP。

系统装好重启后,第一件事不是装 CRM,而是配置网络。因为 CRM 是要给团队内部访问的,IP 地址不能变。我编辑了 /etc/netplan/ 下的配置文件,把 DHCP 改成了静态 IP。这里有个坑,Ubuntu 20.04 用的是 Netplan,语法是 YAML 格式的,缩进错一个空格都配置不生效。我当时就因为这个缩进问题,折腾了半小时,netplan apply 一直报错,后来仔细对比了官方文档才发现是 Tab 键和空格混用了。切记,YAML 里只能用空格。

配好 IP 后,我习惯先更新一下源和系统补丁。sudo apt update && sudo apt upgrade -y,这一步虽然耗时,但能避免很多因为依赖库版本过低导致的安装失败。国内服务器建议换成阿里云或清华的源,速度能快几十倍,不然看着那个下载进度条,真的容易让人失去耐心。

环境搭建:LAMP 架构的“爱恨情仇”

SuiteCRM 是典型的 LAMP 架构(Linux, Apache, MySQL, PHP)。虽然现在 Nginx 很火,但考虑到兼容性和 .htaccess 的便利性,我还是选了 Apache。

安装数据库的时候,我犹豫了一下是选 MySQL 还是 MariaDB。最后选了 MariaDB,毕竟它是 MySQL 的开源分支,性能在某些场景下更好,而且完全免费。安装命令很简单,但安装完后的安全初始化不能忘。mysql_secure_installation 这个脚本会引导你设置 root 密码、移除匿名用户、禁止 root 远程登录等。这一步千万别跳过,裸奔的数据库在局域网里也是极其危险的。

接下来是 PHP 环境。这是整个搭建过程中最繁琐的部分。SuiteCRM 对 PHP 版本有要求,太高或太低都不行。我查了官方文档,推荐的是 PHP 7.4。但 Ubuntu 20.04 默认源里的 PHP 版本可能不是最新的 7.4,需要添加 PPA 源。sudo add-apt-repository ppa:ondrej/php,然后安装 php7.4 以及一系列扩展,比如 libapache2-mod-php7.4、php7.4-mysql、php7.4-gd、php7.4-curl 等等。

这里最容易踩的坑就是扩展缺失。安装完 PHP 后,直接去跑 CRM 的安装向导,通常会报一堆红色错误,提示缺少某个扩展。我当时就遇到了 php7.4-zip 和 php7.4-xml 没装的情况,导致文件上传和解析功能失效。我的经验是,别怕麻烦,把常见的扩展一次性装全,或者根据报错信息一个个补。每次装完扩展,记得重启 Apache 服务 sudo systemctl restart apache2,不然配置不生效。

还有一个容易被忽视的配置是 php.ini。默认的内存限制 memory_limit 通常是 128M,对于 CRM 系统来说有点小,特别是导入大量客户数据的时候,容易内存溢出。我把它改到了 512M,同时调整了 max_execution_time 和 max_input_time,防止脚本执行超时。修改完记得找到正确的 php.ini 文件路径,有时候 CLI 模式和 Apache 模式用的配置文件是不一样的,别改错了地方。

部署 CRM 应用:权限问题是永恒的主题

环境配好后,就可以下载 CRM 源码了。我去 SuiteCRM 官网下了最新稳定版的 zip 包,用 scp 命令传到了虚拟机的 /var/www/html 目录下。解压之后,重头戏来了:文件权限。

Linux 系统对权限管理非常严格。Web 服务器通常以 www-data 用户运行,如果源码文件的所有者是 root,且没有读取执行权限,网站就会报 403 Forbidden 或者 500 Internal Server Error。我把整个目录的所有者改成了 www-data:www-data,命令是 chown -R www-data:www-data /var/www/html/suitecrm。

但这还不够。有些目录需要写入权限,比如 cache、logs、upload 这些文件夹。我给了它们 775 的权限,确保 Web 服务能正常生成缓存文件和日志。有一次我遇到一个奇怪的问题,系统能登录,但无法保存任何设置,查了半天日志才发现是 config.php 文件是只读的,导致无法写入配置。后来我把配置文件的权限临时放开,配置完成后再改回只读,这样既保证了功能,又增加了一点安全性。

接下来就是浏览器访问了。在宿主机浏览器输入虚拟机的 IP 地址,看到了熟悉的安装向导界面,那一刻还是挺有成就感的。安装向导会检查环境配置,如果前面步骤没出错,这里应该全是绿色的勾。设置管理员账号、数据库连接信息,点击安装,然后就是漫长的等待。进度条走到 90% 的时候卡住了,我心头一紧,以为又挂了。刷新页面,发现其实已经安装完成了,只是前端跳转有点问题。这种“假死”现象在 Web 安装里挺常见,别急着重装,先查查数据库里有没有生成表。

后续配置与优化:这才是真正的开始

系统装好能访问,只是万里长征走完了第一步。真正的 CRM 系统,需要配置定时任务、邮件服务、备份策略等等。

首先是定时任务(Cron Job)。CRM 系统里有很多后台任务,比如发送邮件提醒、工作流触发、数据报表生成,这些都不能靠用户访问页面来触发,必须靠系统的定时任务。SuiteCRM 官方文档里给了具体的 Cron 配置示例。我编辑了 crontab -e,添加了相应的任务。这里有个细节,Cron 任务执行时的环境变量和登录 shell 是不一样的,有时候在命令行能跑的脚本,在 Cron 里跑就找不到 PHP 路径。解决办法是在 Cron 脚本里指定 PHP 的绝对路径,或者在 Cron 文件头部加载环境变量。

邮件配置也是个头疼点。本地虚拟机通常没有邮件服务器,如果想测试邮件通知功能,得配置 SMTP。我用了公司的 SMTP 服务器,填好主机、端口、账号密码。但测试发送时,邮件进了垃圾箱,甚至发不出去。后来发现是 SPF 和 DKIM 记录的问题,因为虚拟机是内网 IP,外网邮件服务器会认为它是垃圾源。如果是纯内网使用,可以搭建一个 Postfix 本地转发,或者干脆在代码里把邮件发送功能 Mock 掉,只记录日志,这样测试起来更方便。

安全性方面,虽然是在内网,但也不能裸奔。我开启了 Ubuntu 自带的 UFW 防火墙,只放行了 80、443 和 SSH 的 22 端口。SSH 登录我禁用了 root 密码登录,改用密钥对认证,并且修改了默认端口,防止被局域网里的扫描脚本爆破。数据库方面,我创建了一个专门的 CRM 数据库用户,只给了该数据库的权限,严禁使用 root 账号连接应用,这是基本的安全规范。

备份策略必须得做。虚拟机虽然可以快照,但快照文件大,而且不能替代数据备份。我写了一个简单的 Shell 脚本,每天凌晨通过 mysqldump 备份数据库,并打包代码目录,然后传到宿主机或者 NAS 上。脚本里加了保留策略,只保留最近 7 天的备份,避免磁盘爆满。千万别觉得内网系统就不会丢数据,硬盘损坏、误操作删库,这些风险随时都在。

遇到的那些“鬼故事”与排查思路

在搭建过程中,我遇到了几个比较棘手的报错,这里分享一下排查思路,希望能帮到大家。

第一个是 503 Service Unavailable。刚开始我以为是 Apache 挂了,重启服务也没用。后来查看 /var/log/apache2/error.log,发现是 PHP 进程数满了。Apache 的 MPM 模块默认配置比较保守,并发一高就拒绝服务。我调整了 StartServers、MaxRequestWorkers 等参数,根据虚拟机的内存大小适当调大,问题就解决了。这提醒我们,默认配置通常是保守的,生产环境需要根据实际负载调整。

第一个是 503 Servic

第二个是中文乱码问题。系统里录入的客户名字,显示出来全是问号。检查数据库字符集,发现创建数据库时默认用了 latin1。虽然可以在 my.cnf 里改默认字符集为 utf8mb4,但已经创建的库和表不会自动变。我只能导出数据库,修改 SQL 文件里的字符集声明,再重新导入。这个过程挺痛苦,所以一开始创建数据库时,一定要指定 CHARSET=utf8mb4,别偷懒。

第三个是页面加载极慢。打开一个列表页要五六秒。开启 Apache 的 mod_deflate 压缩没什么效果。最后用浏览器的开发者工具看网络请求,发现是加载了一个外部的 CSS 文件,而虚拟机没法上外网,导致请求超时。把那个 CSS 文件下载到本地,修改引用路径,速度瞬间恢复正常。这种依赖外部资源的问题在开源软件里挺常见,部署在内网环境时要特别留意。

总结与反思

花了整整三天,断断续续,终于把这套 CRM 虚拟机环境跑通了。看着界面上显示的数据看板,心里确实挺踏实的。回顾整个过程,我觉得有几个核心点值得总结:

第一,耐心比技术更重要。搭建环境难免遇到报错,别慌,看日志,搜错误信息,大部分问题前人都遇到过。 第二,文档是最好的老师。不管是 Ubuntu 还是 SuiteCRM,官方文档虽然有时候写得晦涩,但关键信息都在里面,别光依赖博客教程,因为博客可能会过时。 第三,安全无小事。哪怕是测试环境,也要养成好习惯,权限最小化、定期备份、关闭不必要的端口,这些习惯能避免很多大麻烦。

当然,这套系统离真正投入使用还有距离。比如高可用架构、负载均衡、更细粒度的权限控制,这些都需要后续慢慢完善。但作为一个本地测试和小型团队使用的方案,目前的虚拟机架构已经够用了。

如果你也想尝试自建 CRM,我的建议是,先别急着追求完美,先跑通最小可行性产品(MVP)。哪怕功能简陋点,只要数据能存、流程能走,就是成功。剩下的,可以在使用中慢慢迭代。毕竟,技术是为人服务的,能解决问题的工具,就是好工具。

这次折腾虽然累,但也让我对 LAMP 架构有了更深的理解。以前总觉得运维是别人的事,自己只管写代码,真上手了才知道,环境稳定性对用户体验的影响有多大。有时候代码写得再好,服务器配置跟不上,照样卡得用户想砸键盘。所以,作为开发者,懂点运维知识,真的很有必要。

最后,希望这篇流水账式的教程能给你一点启发。如果在搭建过程中遇到什么新问题,欢迎交流,毕竟踩坑的路上,多一个伴儿,心里也暖和点。好了,不多说了,我得去把刚才那个备份脚本再优化一下,万一哪天虚拟机崩了,数据还在,心里才不慌。

悟空CRM产品截图

推荐立刻免费使用中国著名CRM品牌-悟空CRM,显著提升企业运营效率,相关链接:

CRM系统免费使用

开源CRM系统

CRM系统试用免费

悟空CRM产品更多介绍:www.5kcrm.com

相关内容

悟空CRM9.0 正式发布! (JAVA版即将发布)

六年的行业深耕,悟空CRM为追求极致的产品而不断努力,悟空CRM9.0正式开源发布,更先进的技术架构、更漂亮的界面、更清爽的布局,而这一切都是完全开源。从2012年悟空CRM正式与大家见面到现在六年以来,我们经历了:2012年12月 悟空CRM项目正式立项2013年01月 悟空CRM V1.0 正式开源发布2014年05月 悟空CRM旗舰版正式发布2014年09月 悟空CRM手机APP(安卓/IO
相关文章

悟空CRM9.0 JAVA版正式发布! (IM即时通讯即将发布)

六年的行业深耕,悟空CRM为追求极致的产品而不断努力,悟空CRM9.0正式开源发布,更先进的技术架构、更漂亮的界面、更清爽的布局,而这一切都是完全开源。从2012年悟空CRM正式与大家见面到现在六年以来,我们经历了:2012年12月 悟空CRM项目正式立项2013年01月 悟空CRM V1.0 正式开源发布2014年05月 悟空CRM旗舰版正式发布2014年09月 悟空CRM手机APP(安卓/IO
相关文章

悟空RM9.0升级日志

新增:1、新增办公、客户管理待办事项提醒2、新增客户、联系人、线索数据查重功能3、合同、回款的高级筛选中增加“审核状态”筛选4、线索、客户、联系人列表模糊搜索增加手机号、电话5、增加外国手机号格式优化:1、 新建办公审批-类型选择弹窗优化2、 日志、审批、公告列表展示优化3、 跟进记录、日志、任务描述、自定义字段多行文本中的输入框换行问题4、 element-ui升级至最新版本修复:1、 合同翻页
相关文章

悟空CRM项目管理功能正式发布

悟空CRM是一款永久开源免费的CRM管理系统,是基于JAVA/PHP多语言的B/S架构的管理软件,为企业提供行业专属的CRM客户管理方案。我们一直在国内开源管理软件的道路上不断努力,始终以高科技为起点,以技术为核心、以完善的售后服务为后盾,秉承稳固与发展、求实与创新的精神为我们的用户提供最优质的系统和服务。我们希望成为国内外开源管理软件开发的榜样,同时为其发展提供一个小小的范本,让人们能够看到开源
相关文章

悟空CRM全新9.0APP客户端更新发布--悟空CRM

 悟空CRM9.0轻松管理您的业务,全新客户端更新发布,让办公更加便捷,随时随地都可掌控信息更新和项目进度,及时跟进,实现效率提升和业务增长。 1.     CRM悟空CRM主界面主要为我们的客户管理,客户管理,是悟空CRM的基础,理解、预判客户的需求,让你在一个系统里集中培育、管理所有客户相关信息。主要包括客户管理、线索管理、公海管理、
相关文章

悟空CRM项目管理功能(JAVA版)正式发布—悟空CRM

不断努力只为满足不同用户的多样需求,给予用户更好的使用体验。悟空CRM全新项目管理功能(JAVA版)正式发布,直观图示帮你了解:1.     项目总览:项目负责人可把控项目进度,查看任务版,附件、任务统计和归档任务。 2.     项目管理模块汇总全部项目的概览信息,包活:负责人信息、人员信息、项目进度、完成
相关文章

悟空CRM 9.0升级日志

72crm_9.0_20190810升级日志新增: 1、 销售简报中,增加可点击链接 2、 商业智能中增加“日志分析、审批分析” 3、 线索转化为客户,可以自定义设置所有转化的字段 4、 客户高级筛选中,增加地区筛选 5、 所有列表增加排序功能 6、 客户管理进入列表页时显示上次设置列表展示条数 优化: 1、 产品分类销量统计展示样式 2、 角色权限员工列表增加分页 3、
相关文章

悟空CRM | 英文版系统正式上线

2019年,继全新的项目管理功能发布后,悟空CRM不断砥砺前行,经过不断地开发、整理和测试,悟空CRM 英文版系统正式上线,向着「成为世界上最优秀的开源CRM解决方案提供商」的目标又向前进了一大步。本次发布的悟空CRM英文版系统主要功能有:OA、CRM、BI和PM,接下来就带大家详细了解一下英文版系统。1.办公管理(Office Automation)办公管理(Office Automation)
相关文章

悟空CRM:呼叫中心功能正式发布

 一键呼叫,轻松跟进客户全生命周期管理,悟空CRM呼叫中心功能正式发布,帮助企业节省人力资本,覆盖客户服务全生命周期,满足企业不同业务场景需求。呼叫中心,即时连接您的客户:1.     一键拨号外呼呼叫中心系统与悟空CRM系统深度融合,一键拨号外呼,点击客户管理客户列表的左侧按钮,选择拨出,即可等待客户接通电话。2.  &nbs
相关文章

悟空CRM 10.0 重磅升级

感谢您长久以来对悟空CRM的支持,悟空CRM一直向成为世界上最优秀的开源CRM解决方案提供商而不断努力。 自2019年4月以来,悟空CRM9.0发布了PHP开源版、JAVA开源版,是国内首家使用多开发语言的开源CRM厂商。产品发布后获得了国内外多家知名企业的认可。    悟空CRM 10.0  重磅升级 为了给用户提供更优质的产品和服务,
相关文章
最新文章

SaaS 版CRM和本地部署CRM,差别到底在哪

在企业数字化转型的浪潮中,CRM(客户关系管理)系统已成为标配。然而,面对 SaaS 云端版与本地部署版这两种截然不同的交付模式,许多决策者往往陷入两难。是追求便捷的 SaaS,还是坚守数据私有的本地部署?本文将从成本结构、数据安全、定制灵活性及运维压力四个维度,深度剖析两者的核心差异,并结合实际业务场景提供选型建议,帮助企业避开选型陷阱,找到最适合的增长引擎。引言:当老板盯着两份报价单发呆上周,
最新文章

CRM软件的客户公海池是什么意思

CRM 软件的客户公海池是什么意思?深度解析与销售资源盘活实战摘要:在销售管理领域,客户资源流失与分配不均是长期痛点。CRM 软件中的“客户公海池”机制,正是为解决这一难题而生的核心功能。本文将深入探讨公海池的定义、运作逻辑、规则设定策略以及对企业销售效率的实际提升作用。通过解析私海与公海的区别,结合实战案例,帮助管理者理解如何利用公海池盘活沉睡客户,避免销售撞单,并实现资源利用最大化。文中将结合
最新文章

CRM销售预测是什么,如何在系统内完成预测

在当前的商业环境下,销售预测不仅是数字游戏,更是企业资源配置的指南针。许多管理者常面临“月底拍脑袋,月初两行泪”的困境。本文将深入探讨 CRM 销售预测的核心逻辑,拆解从数据录入到报表生成的全流程,并结合实际场景分析如何利用数字化工具提升预测准确率。对于正在寻找高效解决方案的企业,悟空 CRM 等国内成熟系统提供了便捷的预测模型,能帮助团队快速落地。文章将从定义、价值、方法论、系统实操及避坑指南五
最新文章

快速注册,立即使用

仅需一分钟,立即注册悟空云。立即注册,可获得免费试用