部署PHP开源项目SuiteCRM

news2024/11/23 13:18:51

部署PHP开源项目SuiteCRM

  • 前言
  • 部署PHP项目
    • 创建站点
    • 上传PHP源码
    • 安装依赖
  • SuiteCRM安装
    • 安装向导
    • 中文语言
    • 修改数据库密码

前言

因人力资源部想要开发一套适用于他们方便管理的系统,但无整体构思,在网络中找到了开源企业管理软件SuiteCRM,想要作为参考,因此委托我们研发中心,部署系统。这个任务恰好被我接手,很惊讶是一个PHP项目,初次接触PHP项目的部署,特此记录、分享。

GitHub地址:https://github.com/salesagility/SuiteCRM

发现一份 企业管理软件:镜像部署与使用实战手册,很不错: https://www.kancloud.cn/websoft9/enterprise-software-practice

部署PHP项目

曾使用宝塔,发现其软件商店有PHP项目,且能傻瓜式的部署,印象深刻,故借助宝塔进行部署PHP项目。

创建站点

在宝塔面板,网站项,添加一个站点,填写如下内容:

在这里插入图片描述
查看网站目录,确定网站文件数据存放位置
在这里插入图片描述
由于创建站点,默认站点监听80端口,但其已被使用,故修改站点端口
在这里插入图片描述

上传PHP源码

进入网站目录
在这里插入图片描述
上传PHP源码,然后解压内容到根目录
在这里插入图片描述

安装依赖

接着访问:IP:8081,会提示执行命令:composer install
在这里插入图片描述
回到站点设置,若Composer版本显示非版本号,则升级Composer,然后执行如图所示设置
在这里插入图片描述
在执行过程中遇到了如下异常:

Reading ./composer.lock (/www/wwwroot/abc.com/composer.lock)
Installing dependencies from lock file (including require-dev)
Verifying lock file contents can be installed on current platform.
Reading ./composer.lock (/www/wwwroot/abc.com/composer.lock)
Built pool.
Generating rules
Resolving dependencies through SAT

Dependency resolution completed in 0.001 seconds
Your lock file does not contain a compatible set of packages. Please run composer update.

  Problem 1
    - Root composer.json requires PHP extension ext-zip * but it is missing from your system. Install or enable PHP's zip extension.
  Problem 2
    - league/uri is locked to version 4.2.3 and an update of this package was not requested.
    - league/uri 4.2.3 requires ext-fileinfo * -> it is missing from your system. Install or enable PHP's fileinfo extension.
  Problem 3
    - php-webdriver/webdriver is locked to version 1.13.1 and an update of this package was not requested.
    - php-webdriver/webdriver 1.13.1 requires ext-zip * -> it is missing from your system. Install or enable PHP's zip extension.
  Problem 4
    - php-webdriver/webdriver 1.13.1 requires ext-zip * -> it is missing from your system. Install or enable PHP's zip extension.
    - codeception/module-webdriver 1.4.1 requires php-webdriver/webdriver ^1.8.0 -> satisfiable by php-webdriver/webdriver[1.13.1].
    - codeception/module-webdriver is locked to version 1.4.1 and an update of this package was not requested.

按提示:Please run composer update,执行 composer update,发现任然报错:

Reading /home/www/.cache/composer/repo/https---mirrors.aliyun.com-composer/provider-masterminds~html5~dev.json from cache
Downloading https://mirrors.aliyun.com/composer/p2/masterminds/html5~dev.json if modified
Reading /home/www/.cache/composer/repo/https---mirrors.aliyun.com-composer/provider-phpdocumentor~reflection-common~dev.json from cache
[304] https://mirrors.aliyun.com/composer/p2/masterminds/html5~dev.json
[304] https://mirrors.aliyun.com/composer/p2/masterminds/html5.json
Built pool.
Running pool optimizer.
Pool optimizer completed in 1.154 seconds
Found 8,136 package versions referenced in your dependency graph. 6,937 (85%) were optimized away.
Updating dependencies
Generating rules
Resolving dependencies through SAT

Dependency resolution completed in 0.002 seconds
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Root composer.json requires PHP extension ext-zip * but it is missing from your system. Install or enable PHP's zip extension.
  Problem 2
    - Root composer.json requires league/uri ^4.2.3 -> satisfiable by league/uri[4.2.3].
    - league/uri 4.2.3 requires ext-fileinfo * -> it is missing from your system. Install or enable PHP's fileinfo extension.
  Problem 3
    - php-webdriver/webdriver[1.8.0, 1.8.1, 1.8.2, 1.8.3, 1.9.0, 1.10.0, 1.11.0, 1.11.1, 1.12.0, 1.12.1, 1.13.0, 1.13.1, 1.13.x-dev, 1.14.0, 1.14.1] require ext-zip * -> it is missing from your system. Install or enable PHP's zip extension.
    - codeception/module-webdriver[1.2.0, 1.2.1, 1.2.2, 1.3.0, 1.4.0, 1.4.1, 1.x-dev] require php-webdriver/webdriver ^1.8.0 -> satisfiable by php-webdriver/webdriver[1.8.0, 1.8.1, 1.8.2, 1.8.3, 1.9.0, 1.10.0, 1.11.0, 1.11.1, 1.12.0, 1.12.1, 1.13.0, 1.13.1, 1.13.x-dev, 1.14.0, 1.14.1].
    - Root composer.json requires codeception/module-webdriver ^1.2 -> satisfiable by codeception/module-webdriver[1.2.0, 1.2.1, 1.2.2, 1.3.0, 1.4.0, 1.4.1, 1.x-dev].

经过一番折腾得以解决,只需要执行命令时,添加额外参数:

 composer install  --ignore-platform-req=ext-fileinfo

同时,使用root用户执行该命令
在这里插入图片描述
当执行成功会有如下提示:

在这里插入图片描述

注意:可以直接进入项目源代码目录执行以上操作相关命令,效果等同于上述界面操作。

SuiteCRM安装

安装向导

浏览器访问:http://域名http://公网IP ,进入安装向导,然后选择接受协议,进入下一步
在这里插入图片描述
环境检测会自动通过,选择Next进入下一步,进入配置数据库界面(默认数据库为:suitecrm)。然后设置管理员账号,点击“安装”
在这里插入图片描述
注意:在创建站点时,有创建数据库,这里需要修改其访问权限
在这里插入图片描述
系统进入安装过程,耐心等待,安装成功后系统会进行提示
在这里插入图片描述
至此,PHP项目安装完毕。
在这里插入图片描述

中文语言

SuiteCRM默认安装只有英文,需要中文或其他语言,需要下载语言包,然后通过后台进行安装

下载中文语言包: https://crowdin.com/project/suitecrmtranslations/zh-CN
在这里插入图片描述
以Admin身份进入SuiteCRM,然后在所示位置进入系统管理界面
在这里插入图片描述
在这里插入图片描述
在进入Module Loader过程中,可能出现跨站请求伪造 (XSRF) 攻击异常
在这里插入图片描述
只需要在项目根目录的config_override.php文件中进行配置即可,如果它不存在,请创建它
在这里插入图片描述

$sugar_config['http_referer']['list'][] = 'IP';

上传中文语言包
在这里插入图片描述
开始安装
在这里插入图片描述
提交安装
在这里插入图片描述
中文简体语言包安装完成之后,回到SuiteCRM界面登录时,会发现默认的语言是英文,只有通过下拉列表选择才可以选择中文简体。
在这里插入图片描述
在系统管理项,设置中文简体为默认语言
在这里插入图片描述
使用管理员帐户登录到SuiteCRM后台,进入系统管理——区域界面,找到语言,选择中文简体即可。
在这里插入图片描述
进入管理员帐号,系统管理 ——语言,通过拖拽把英文语言禁用。
在这里插入图片描述
再次回到登录界面,发现默认语言已设置为中文
在这里插入图片描述

修改数据库密码

因为SuiteCRM在安装的时候已经将数据库账号信息写到配置文件中,若后续修改数据库密码,配置文件不会自动更新

只需要修改配置文件/www/wwwroot/abc.com/config.php对应的db_password参数即可:

  'dbconfig' => 
  array (
    'db_host_name' => 'IP',
    'db_host_instance' => 'SQLEXPRESS',
    'db_user_name' => 'abc_com',
    'db_password' => 'sD83K4HZFx7Hibkn',
    'db_name' => 'abc_com',
    'db_type' => 'mysql',
    'db_port' => '',
    'db_manager' => 'MysqliManager',
    'collation' => 'utf8mb4_general_ci',
    'charset' => 'utf8mb4',
  ),

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/494759.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于SSM框架疫情之下社区管理系统(spring+springmvc+mybatis+jsp+jquery+bootstrap)

一、项目简介 本项目是一套基于SSM框架疫情之下社区管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c…

Java8新特性—Lambda表达式

Java 8是Java编程语言的一个版本,于2014年发布。它引入了许多新的特性和改进。 Lambda表达式是Java 8中引入的一个重要的新特性,它提供了一种更加简洁、灵活的方式来编写函数式接口的实现,从而提高了代码的可读性和简洁性。 在本文中&#…

什么是FPGA?关于FPGA基础知识 一起来了解FPGA lattice 深力科 MachXO3系列 LCMXO3LF-9400C-5BG256C

什么是FPGA?关于FPGA基础知识 一起来了解FPGA lattice 深力科 MachXO3系列 LCMXO3LF-9400C-5BG256C FPGA基础知识:FPGA是英文Field-Programmable Gate Array的缩写,即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器…

golang web学习随便记2

在前一篇中,我们直接在 index 这个 handler func 中解析了模板,定义了数据,然后执行模板显示“拼合”了数据的网页。这是一个客户被动看的页面。实际的应用显然需要能够处理用户的请求。对于浏览器客户端的请求,我们先要来了解和请…

pytorch——损失函数之nn.BCELoss二进制交叉熵和 nn.BCEWithLogitsLoss

文章目录 1、pytorch损失函数之nn.BCELoss()(二进制交叉熵)1.1 是什么?1.2 怎么代码实现和代码使用?1.3 推导过程分析交叉熵作为损失函数的梯度情况:举一个sigmoid导致的梯度消失的MSE损失的例子 1.3 应用场景1.3.1 二分类1.3.2 多…

java版工程项目管理系统平台,助力工程企业实现数字化管理系统源代码

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下: 首页 工作台:待办工作、消息通知、预警信息,点击可进入相应的列表 项目进度图表:选择(总体或单个)项目显示1…

一文讲透TCP/IP协议 | 图解+秒懂+史上最全

目录 🙋‍♂️ TCP/IP协议详解 🙋‍♂️ TCP/IP协议的分层模型 OSI模型的七层框架 TCP/IP协议与七层ISO模型的对应关系 (一)TCP/IP协议的应用层 (二)TCP/IP协议的传输层 (三)…

Vuex从了解到实际运用(二)——获取vuex中的全局状态(state getters)

vuex从了解到实际运用——获取vuex中的全局状态state getters 知识回调(不懂就看这儿!)场景复现项目实战vuex定义一个store实例在store中定义数据在组件中获取值vuex的计算属性通过getters获取全局状态state和getters获取全局状态的区别 知识…

Windows安装Docker 容器教程

Windows安装Docker 容器教程 什么是docker I. 简介 什么是 Docker 容器 Docker 容器是一种轻量级、可移植、自包含的软件打包和部署技术。它可以将应用程序和依赖项打包在一个可移植的容器中,并提供一个一致的运行环境,无论在哪个计算机上运行都能够…

Copyleaks:AI抄袭和内容检测工具

【产品介绍】 Copyleaks是一个基于AI人工智能的抄袭和内容检测工具,可以帮助用户在互联网上发现和防止内容被盗用。支持检测各种类型的文本,包括学术论文、网站内容、商业文件、法律合同、创意作品等,并提供详细的相似度报告和原始来源链接。…

基于R语言APSIM模型应用

随着数字农业和智慧农业的发展,基于过程的农业生产系统模型在模拟作物对气候变化的响应与适应、农田管理优化、作物品种和株型筛选、农田固碳和温室气体排放等领域扮演着越来越重要的作用。APSIM (Agricultural Production Systems sIMulator)模型是世界知名的作物生…

【Hello Network】TCP协议

作者:小萌新 专栏:网络 作者简介:大二学生 希望能和大家一起进步 本篇博客简介:较为详细的介绍TCP协议 TCP协议 TCP协议可靠性TCP的协议格式序号与确认序号窗口大小六个标志位 确认应答机制 (ACK)超时重传机…

Spring整合Swagger自动生成API文档

认识Swagger Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。 作用: …

【LeetCode】数据结构题解(6)[回文链表]

回文链表 1.题目来源2.题目描述3.解题思路4.代码展示 所属专栏:玩转数据结构题型 博主首页:初阳785 代码托管:chuyang785 感谢大家的支持,您的点赞和关注是对我最大的支持!!! 博主也会更加的努力…

C++入门2(缺省参数 inline函数 函数重载 函数模板)

C入门2 缺省参数结合优先级 inline函数vs中的测试实例inline函数要点内联函数与宏定义区别: 函数重载定义名字粉碎技术C编译时函数名修饰约定规则 函数模板 缺省参数 函数定义时,缺省值赋值是从右向左依次赋值 调用函数时,从左向右依次给实参值&#xf…

【HTTP/1.1、HTTP/2、HTTP/3】

文章目录 HTTP/1.1 如何优化?避免发送HTTP请求减少HTTP次数减少 HTTP 响应的数据大小 HTTP/2HTTP/1.1性能问题HTTP/2的性能优化头部压缩二进制帧(重点)并发传输服务器主动推送资源 HTTP/2问题总结 HTTP/3HTTP/2的性能问题队头阻塞TCP 与 TLS …

跟着我学 AI丨打败李世石和柯洁的 AlphaGo

强化学习是一种人工智能的方法,它模仿了人类学习的方式。通过试错来学习,实现从经验中提取知识的目的。强化学习的核心思想是基于奖励的学习,它的目标是通过在环境中采取行动,并根据行动结果获得奖励,从而学会最优的行…

CNNs: AlexNet补充

CNNs: AlexNet的补充 导言对AlexNet模型进行调整模型不同层的表征其他探索总结 导言 上上篇和上一篇我们详细地讲述了AlexNet的网络结构和不同超参数对同一数据集的不同实验现象。 本节,我们就AlexNet的一些其他相关问题进行解剖,如修改AlexNet参数量调…

JVM内存模型基础

大家好,我是易安! 我们知道运行一个Java应用程序,我们必须要先安装JDK或者JRE包。这是因为Java应用在编译后会变成字节码,然后通过字节码运行在JVM中,而JVM是JRE的核心组成部分。 JVM不仅承担了Java字节码的分析&#…

JavaWeb ( 五 ) Servlet

2.3.Servlet Servlet(Server Applet)是Java Servlet的简称。 是在服务器端执行的 , 用于响应客户端请求的Java类。HttpServlet 是使用java语言对http通信的实现。 2.3.1.Servlet声明 在 web.xml 中声明Servlet的请求url及对应的类路径 , 3.0版本后可以…