最近想选型一款免费的项目管理软件,除了具备计划管理、进度管控、任务管理、资源管理这些基本管理要求,也希望能将项目整个生命周期中的预算、成本、交付物等能集中管控,也可以让项目产生的大量数据集中管理,按照组织级度量要求积累项目的度量数据。这里将ProjeQtOr作为候选方案之一,简单记录部署和使用操作以备后需。
ProjeQtOr部署
ProjeQtOr源于“Quality based Project Organizer”,是一个开源的基于项目管理的质量控制软件。ProjeQtOr安装简单、使用方便,可参数化、定制化。ProjeQtOr除了管理项目计划,任务管理,还可以预估项目风险、评估风险,跟踪记录项目中发生的系统故障、缺陷、变更申请等等。
-
环境要求
MYSQL数据库5及以上版本,或者PostgreSQL数据库V8.4、V9.1以上;
PHP服务器5.2及以上版本;
一个WebServer,apache或者nginx。
上述准备环境也可以使用一键式XAMPP建站集成软件包。
-
安装部署
-
部署环境准备
一台Mac(M2)设备;操作系统MacOS 14;
Homebrew软件包管理器。
Homebrew如果没有安装的话,可访问https://brew.sh,复制命令
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
-
brew更新和升级
brew update
brew upgrade
-
安装Mysql、nginx和php
brew install mariadb
brew install nginx
brew install php
-
PHP、Nginx和Mysql的建议配置及依赖软件
PHP建议配置: max_input_vars = 4000 ; must be > 2000 for real work allocation screen request_terminate_timeout = 0 ; must not end requests on timeout to let cron run without ending; max_execution_time = 30 ; memory_limit = 512M ; minimum advised for PDF generation file_uploads = On ; to allow attachements and documents management error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT 在配置文件php.ini中修改,配置文件所在目录:/opt/homebrew/etc/php/8.3 PHP扩展: gd => for reports graphs imap ==> to retrieve mails to insert replay as notes mbstring => mandatory. for UTF-8 compatibility mysql => for default MySql database openssl => to send mails if smtp access is authentified (with user / password) pdo_mysql => for default MySql database pdo_pqsql => if database is PostgreSql pgsql => if database is PostgreSql php-xml => for xml parsing zip => ZipArchive class is mandatory to manage plugins and export to Excel format php8.3版本已自带很多php扩展,只需在php.ini中开启相应的扩展即可。 MySql建议配置: collation when creating the database : utf8_general_ci innodb-default-row-format=dynamic
- brew出现的问题与解决
安装完php后,使用brew services stop php停止php服务时报错,Error: uninitialized constant Homebrew::Service。
解决:这是指Homebrew无法加载Homebrew::Service
模块。百度借用别人的经验,删除目录:rm -rf /opt/homebrew/Library/Taps/homebrew/homebrew-services。然后使用brew services list,发现服务,所有服务已经重新生成。再使用brew services start/stop php都正常。
-
确认和验证
- 确认软件安装路径和配置文件路径
nginx安装路径:/opt/homebrew/Cellar/nginx
nginx配置文件路径:/opt/homebrew/etc/nginx/nginx.conf
php安装路径:/opt/homebrew/etc/php
php配置文件路径:/opt/homebrew/etc/php/8.3
- 验证php服务
执行php -v命令
PHP 8.3.11 (cli) (built: Aug 27 2024 19:16:34) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.11, Copyright (c) Zend Technologies
with Zend OPcache v8.3.11, Copyright (c), by Zend Technologies
执行ps -ef |grep php-fpm
501 30032 1 0 php-fpm: master process (/opt/homebrew/etc/php/8.3/php-fpm.conf)
501 30033 30032 0 php-fpm: pool www
501 30034 30032 0 php-fpm: pool www
可见php服务和php-fpm服务都正常运行
- 验证nginx和mysql服务
使用 brew services list 查看所有服务
mariadb started jlu ~/Library/LaunchAgents/homebrew.mxcl.mariadb.plist
nginx started jlu ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist
php started jlu ~/Library/LaunchAgents/homebrew.mxcl.php.plist
可以看出mariadb、nginx和mysql都处于运行状态
-
下载ProjeQtOr
官方下载地址:ProjeQtOr free project management software - Downloads
下载当前最新的稳定版本11.3.2。
将ProjeQtOr解压到/opt/homebrew/var/web目录。
-
Nginx配置
nginx的路由匹配配置:
#监听本机80端口。加上ip的话,就只监听该ip上的80端口
listen 80;
#域名
server_name localhost;
root /opt/homebrew/var/web/;
location /projeqtor {
index index.html index.htm index.php;
}
nginx支持php文件解析的配置:
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
这里nginx 将会连接127.0.0.1:9000 端口执行 PHP 文件,基于 tcp/ip 协议 。这里必须加上,否则通过nginx访问的php文件都无法解析,直接变为php文件的下载。
此时,访问http://localhost/projeqtor/view/index.php
报如下错误:出现 File not found. 的提示信息。查看错误日志报告显示 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream。。。
主要原因是php-fpm默认的用户和组,与运行php-fpm进程的用户和组不同,导致无法访问文件。找到www.conf文件,位于/opt/homebrew/etc/php/8.3/php-fpm.d目录下,修改该文件中的user和group属性,默认的用户名和组都是_www。
user = jlu
group = admin
把user和group的值改为运行php-fpm进程的用户和组
重启nginx、php服务
brew services restart nginx
brew services restart php
-
运行projeqtor
访问http://localhost/projeqtor/view/index.php
出现如下页面即表示应用部署成功。
-
初始化ProjeQtOr
- 参数设置
按照要求输入mysql数据库设置和本地化参数、应用安全参数设置,如下图
参数配置项的所有内容都存储在parameters.php页面,该文件路径位于projeqtor/files/config目录下。安全起见,应用建议我们修改附件、文档、日志等文件的存储目录,不要放在应用可见的位置。这里仅仅是方案选型测试,未做修改。
- 参数说明
列举主要的参数项进行说明,SSL设置、LDAP等参数项没有列出来。配置项都保存在parameters.php文件中,具体如下表所示:
web页面上的配置项 配置项说明 PHP文件的对应参数 Database type mysql或者PostgreSQL $paramDbType Database host 数据库服务器地址,默认127.0.0.1 $paramDbHost Database Port 数据库服务器端口 $paramDbPort Dabatabase user to connect 数据库用户名,默认root $paramDbUser Dabatabase password for user 数据库密码
$paramDbPassword Dabatabase schema name 数据库实例名,默认projeqtor。如果没有创建实例,初始化过程中会创建实例 $paramDbName Dabatabase prefix for table name 数据库表前缀 $paramDbPrefix Default locale 本地化语言,选择简体中文 $paramDefaultLocale Default timezone 默认时区,中国地区可选择Asia/Shanghai $paramDefaultTimezone currency 使用货币,中国地区可填写¥ $currency Directory to store attachment 附件存放路径,默认 '../files/attach/';
安全起见,不建议放在web应用的目录下。
$paramAttachmentDirectory Directory to store document 文件的存放路径。默认'../files/documents/',安全起见,不建议放在web应用的目录下。 $documentRoot log file 日志文件路径。
默认'../files/logs/projeqtor_${date}.log',安全起见,不建议放在web应用的目录下。
$logFile log level 日志级别,选项包括error only、trace and error等等 $logLevel
- 系统登录
参数设置完成后,下一步就会跳转到登录页面。登录使用用户名/密码:admin/admin。此时,系统会花费一定时间来创建数据库。登录进入主页面后就可以开始使用系统了。
-
备注事项
- 浏览器兼容性?
在使用Safari浏览器(版本safari17.3)过程中,发现系统运行过程中偶有白屏,清除缓存依然存在问题。改用360极速浏览器后可以正常运行。
- 重新初始化参数配置项
如果要重新初始化应用的参数配置,只需要删除projeqtor/tool目录下parametersLocation文件.php即可。