1. 为什么选择Dolibarr进行本地部署?
Dolibarr作为一款开源ERP/CRM解决方案,近年来在中小企业中越来越受欢迎。我最初接触这个系统是在为一家小型贸易公司做信息化咨询时,他们需要一套既能管理客户关系又能处理进销存的系统,但预算非常有限。经过多轮选型对比,最终选择了Dolibarr,主要基于以下几个关键考量:
核心优势分析:
- 模块化设计:Dolibarr采用插件式架构,基础安装包仅包含核心功能(约50MB),用户可按需启用销售、采购、库存、项目等40+个功能模块。这种设计特别适合业务尚在发展中的企业,可以随着规模扩大逐步增加功能
- 零许可费用:作为GPL协议下的开源软件,企业无需支付任何软件授权费用。相比SAP、用友等商业ERP动辄数十万的授权费,这对初创企业极具吸引力
- 技术栈友好:基于PHP+MySQL开发,运行环境要求低(PHP 7.2+,MySQL 5.6+),市面上绝大多数Linux服务器都能满足
- 社区支持活跃:官方论坛有超过12万注册用户,GitHub上300+贡献者,遇到问题通常能在24小时内获得社区解答
典型适用场景:
- 10-50人规模的制造业企业:需要管理从销售订单到生产计划的全流程
- 跨境电商卖家:处理多平台订单、库存同步和跨境结算
- 专业服务机构:如律所、会计师事务所的客户和项目管理
- 需要高度定制化的特殊行业:通过修改源码或开发定制模块满足特殊业务流程
提示:虽然Dolibarr功能全面,但如果是超大型企业(500人以上)或需要复杂生产排程的制造企业,可能需要考虑Odoo或商业ERP系统
2. 部署前的环境准备与规划
2.1 硬件需求评估
根据我帮助20+家企业部署Dolibarr的经验,硬件配置应该根据用户并发数和数据量来决定:
| 企业规模 | 推荐CPU | 内存 | 存储 | 预估成本 |
|---|---|---|---|---|
| 5-10用户 | 2核 | 4GB | 50GB | ¥800/年 |
| 10-30用户 | 4核 | 8GB | 100GB | ¥1500/年 |
| 30+用户 | 8核 | 16GB | 200GB+ | ¥3000+/年 |
实测数据:一个30人的贸易公司使用4核8GB配置,日均处理200张单据时,CPU平均负载约30%,内存占用稳定在5GB左右。
2.2 Linux系统选择与优化
推荐使用Ubuntu Server LTS版本(当前推荐22.04),原因如下:
- 长期支持版本维护周期达5年
- 对PHP和MySQL的支持最完善
- 社区资源丰富,遇到问题容易找到解决方案
关键系统优化步骤:
bash复制# 更新系统
sudo apt update && sudo apt upgrade -y
# 安装常用工具
sudo apt install -y htop tmux curl wget git unzip
# 调整SWAP分区(如果内存小于8GB)
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
# 修改文件描述符限制
echo 'fs.file-max = 65535' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
2.3 网络环境规划
本地部署要实现外网访问,需要特别注意网络安全:
-
端口规划:
- 80/443:Web服务
- 3306:MySQL(建议仅本地访问)
- 22:SSH(建议修改默认端口)
-
域名准备:
- 建议购买独立域名(如erp.yourcompany.com)
- 提前做好DNS解析到服务器IP
-
SSL证书:
- 使用Let's Encrypt免费证书
- 或者购买商业证书(如DigiCert)
3. 分步安装Dolibarr
3.1 基础环境安装
bash复制# 安装Apache
sudo apt install -y apache2
sudo systemctl enable apache2
sudo systemctl start apache2
# 安装MySQL
sudo apt install -y mysql-server
sudo mysql_secure_installation
# 这里会提示设置root密码等信息
# 安装PHP及扩展
sudo apt install -y php libapache2-mod-php php-mysql php-gd php-curl php-zip php-xml php-mbstring php-bcmath
sudo phpenmod mbstring
sudo systemctl restart apache2
3.2 创建数据库
bash复制# 登录MySQL
sudo mysql -u root -p
# 执行以下SQL语句
CREATE DATABASE dolibarr DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
CREATE USER 'doliuser'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON dolibarr.* TO 'doliuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
3.3 下载并配置Dolibarr
bash复制# 下载最新稳定版(请检查官网获取最新版本号)
wget https://github.com/Dolibarr/dolibarr/archive/refs/tags/18.0.3.tar.gz
tar -xzvf 18.0.3.tar.gz
sudo mv dolibarr-18.0.3 /var/www/html/dolibarr
# 设置权限
sudo chown -R www-data:www-data /var/www/html/dolibarr
sudo chmod -R 755 /var/www/html/dolibarr
# 创建配置文件目录
sudo mkdir /var/www/html/dolibarr/documents
sudo chown www-data:www-data /var/www/html/dolibarr/documents
3.4 完成Web安装向导
- 浏览器访问 http://your-server-ip/dolibarr/install/
- 按照向导步骤:
- 选择语言(建议英文安装,完成后可切换中文)
- 配置数据库连接(使用前面创建的doliuser账号)
- 设置管理员账号(务必使用强密码)
- 选择需要安装的模块(初次建议只选基础模块)
常见问题:如果安装时出现"目录不可写"错误,检查/var/www/html/dolibarr/htdocs/conf/conf.php文件权限应为www-data可写
4. 安全加固与性能优化
4.1 基础安全配置
apache复制# 在Apache配置中添加安全头(/etc/apache2/conf-available/security.conf)
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-XSS-Protection "1; mode=block"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
# 禁用目录浏览
<Directory /var/www/html>
Options -Indexes
</Directory>
关键安全措施:
- 修改默认后台路径:将/var/www/html/dolibarr/htdocs/admin重命名为不易猜测的名称
- 启用登录验证码:在Dolibarr后台→设置→安全→启用图形验证码
- 配置IP白名单:对/admin目录限制访问IP(适用于固定办公场所)
4.2 性能优化技巧
数据库优化:
sql复制-- 为常用查询字段添加索引
ALTER TABLE llx_societe ADD INDEX idx_name (nom);
ALTER TABLE llx_facture ADD INDEX idx_date (datef);
-- 定期优化表(可加入crontab)
mysqlcheck -o dolibarr -u doliuser -p
PHP优化:
ini复制; /etc/php/8.1/apache2/php.ini
memory_limit = 256M
max_execution_time = 120
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
前端优化:
bash复制# 启用Apache压缩
sudo a2enmod deflate
sudo systemctl restart apache2
5. 实现安全的外部访问
5.1 配置Apache虚拟主机
apache复制<VirtualHost *:80>
ServerName erp.yourdomain.com
DocumentRoot /var/www/html/dolibarr/htdocs
<Directory /var/www/html/dolibarr/htdocs>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/dolibarr_error.log
CustomLog ${APACHE_LOG_DIR}/dolibarr_access.log combined
</VirtualHost>
5.2 配置SSL证书(以Let's Encrypt为例)
bash复制# 安装Certbot
sudo apt install -y certbot python3-certbot-apache
# 获取证书
sudo certbot --apache -d erp.yourdomain.com
# 设置自动续期
sudo certbot renew --dry-run
5.3 防火墙配置
bash复制# 允许HTTP/HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# 限制SSH访问(修改默认22端口)
sudo ufw allow 2222/tcp
sudo ufw deny 22/tcp
# 启用防火墙
sudo ufw enable
5.4 动态DNS方案(适用于无固定IP)
如果企业没有固定公网IP,可以考虑:
- 使用DDNS服务(如花生壳)
- 配置路由器定时更新IP解析
- 或者使用Cloudflare API自动更新DNS记录
6. 日常维护与故障排查
6.1 备份策略
数据库自动备份:
bash复制# 创建备份脚本 /usr/local/bin/dolibarr_backup.sh
#!/bin/bash
DATE=$(date +%Y%m%d)
mysqldump -u doliuser -p'password' dolibarr > /backup/dolibarr_$DATE.sql
find /backup -type f -name "*.sql" -mtime +30 -delete
# 添加到crontab
0 2 * * * /usr/local/bin/dolibarr_backup.sh
文件备份:
bash复制# 每周全量备份
0 3 * * 0 tar -czvf /backup/dolibarr_files_$(date +\%Y\%m\%d).tar.gz /var/www/html/dolibarr
6.2 常见问题解决
问题1:登录后空白页
- 检查PHP错误日志:/var/log/apache2/error.log
- 常见原因:内存不足或权限问题
- 解决方案:
bash复制sudo chown -R www-data:www-data /var/www/html/dolibarr sudo systemctl restart apache2
问题2:导入数据时报错
- 临时调整PHP限制:
ini复制upload_max_filesize = 20M post_max_size = 25M max_execution_time = 300
问题3:外网访问速度慢
- 优化方案:
- 启用CDN加速静态资源
- 对海外用户可考虑香港/新加坡服务器
- 压缩JS/CSS文件
6.3 升级注意事项
Dolibarr小版本升级(如18.0.1→18.0.2)通常直接覆盖即可,但大版本升级(如17.0→18.0)需要特别注意:
- 先在生产环境的克隆测试
- 检查所有定制模块的兼容性
- 备份数据库和代码
- 查看官方升级文档的特殊说明
升级命令示例:
bash复制wget https://github.com/Dolibarr/dolibarr/archive/refs/tags/18.0.3.tar.gz
tar -xzvf 18.0.3.tar.gz
sudo rm -rf /var/www/html/dolibarr_bak
sudo mv /var/www/html/dolibarr /var/www/html/dolibarr_bak
sudo mv dolibarr-18.0.3 /var/www/html/dolibarr
sudo cp /var/www/html/dolibarr_bak/htdocs/conf/conf.php /var/www/html/dolibarr/htdocs/conf/
sudo chown -R www-data:www-data /var/www/html/dolibarr
7. 高级配置与扩展
7.1 邮件服务器集成
配置SMTP发送业务邮件(以Postfix为例):
- 安装Postfix:
bash复制sudo apt install -y postfix - 在Dolibarr后台→设置→邮件中配置:
- 发送方式:SMTP
- 服务器:localhost
- 端口:25
- 加密:无(本地连接)
7.2 移动端访问优化
Dolibarr默认界面在手机上体验不佳,推荐解决方案:
- 安装响应式主题模块
- 使用官方移动应用(需订阅)
- 开发PWA渐进式Web应用
7.3 与第三方系统集成
常见集成方案:
- 电商平台对接:通过Dolibarr的REST API连接Shopify/WooCommerce
- 支付网关:配置Stripe/PayPal模块
- 电子发票:集成Comfino或其他本地化税务软件
- LDAP/AD集成:统一企业账号体系
API调用示例(创建客户):
php复制$url = "https://erp.yourdomain.com/api/index.php/thirdparties";
$api_key = "your_api_key";
$data = [
"name" => "示例客户",
"client" => 1,
"code_client" => "CUST001"
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"DOLAPIKEY: ".$api_key,
"Content-Type: application/json"
]);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
$response = curl_exec($ch);
curl_close($ch);
经过3年的Dolibarr实施经验,我强烈建议在正式使用前做好两件事:一是完整测试所有业务流程在系统中的流转,二是对关键用户进行系统培训。曾经有个客户因为仓管员不熟悉库存模块操作,导致系统上线第一个月库存数据全部混乱,不得不停用两周重新盘点。
