Posts PartKeepr(库存管理软件)安装
Post
Cancel

PartKeepr(库存管理软件)安装

1. PartKeepr 介绍

Parkeepr 是一款开源的库存管理软件(主要是为电子元器件管理设计的),用来管理手中的电子元器件、开发板是非常不错的。

2. 安装

(1) 安装环境

Ubuntu 20.04.1 LTS, WSL

(2) 下载安装包

下载安装包:partkeepr-1.4.0.tbz2

1
2
3
4
5
6
sudo apt-get install php
tar -xvjf partkeepr-1.4.0.tbz2
sudo cp partkeepr-1.4.0 /var/www/partkeepr -r
sudo chown www-data:www-data /var/www/partkeepr -R
# 将当前用户添加到 www-data 组(可能需要重启):
sudo adduser [username] www-data

(3) 安装依赖软件

安装依赖软件:

1
2
# 可以查看安装包内 documentation/Installation.md 中的说明
sudo apt install mysql-server nginx php-fpm php-curl php-ldap php-bcmath php-gd php-dom php-intl

(4) 配置依赖软件

启动 php-fpm:

1
sudo service php-fpm start

php-fpm 启动后,可以看到 php-fpm 套接字:

1
ls /var/run/php/php*-fpm.sock

根据这个链接配置 nginx 服务器。

根据实际情况修改 nginx 配置中的套接字名称,例如:

1
fastcgi_pass unix://var/run/php/php7.4-fpm.sock;

设置 php 时区((需要参照 https://www.php.net/manual/zh/timezones.php):

1
2
# 修改 /etc/php/7.4/fpm/php.ini 文件
date.timezone = Asia/Shanghai

之后启动 nginx 以及 mysql,重启 php-fpm

1
2
3
sudo service nginx start
sudo service mysql start
sudo service php-fpm restart

数据库配置:

1
2
3
4
5
6
7
8
9
10
11
12
sudo mysql -u root mysql

# 创建数据库用户
create user 'partkeepr'@'localhost' identified by 'partkeepr';

# 创建数据库
CREATE DATABASE partkeepr CHARACTER SET UTF8;

# 将数据库授权给创建好的用户
GRANT ALL PRIVILEGES ON partkeepr.* TO partkeepr@localhost;
GRANT USAGE ON *.* TO `partkeepr`@`localhost` IDENTIFIED BY 'partkeepr';
FLUSH PRIVILEGES;

将相关服务设置为开机启动:

1
2
3
sudo systemctl enable nginx
sudo systemctl enable mysql
sudo systemctl enable php7.0-fpm

查看设置结果:

1
2
3
systemctl is-enabled nginx
systemctl is-enabled mysql
systemctl is-enabled php7.0-fpm

(5) 安装 PartKeepr

在浏览器访问安装页面,例如:http://127.0.0.1/setup/index.html,按照页面呈现的安装步骤操作。如果遇到问题,参见“故障解决”。

安装完成后,根据提示添加定期执行任务:

1
crontab -e

添加如下内容:

1
0 0,6,12,18 * * * /usr/bin/php /var/www/partkeepr/app/console partkeepr:cron:run

上述操作是为当前用户创建定时任务,为了使上述任务顺利运行,需要确保当前用户在 www-data 组中。

3. 故障解决

安装 PartKeepr的过程中,可以查看 nginx 错误日志,有助于发现问题:

1
tail -f /var/log/nginx/error.log

(1) Web 服务器配置错误

Web Server misconfiguration

很可能时时区配置错了(需要参照 https://www.php.net/manual/zh/timezones.php),如果时区写错了,可以在 nginx 的错误日志中看到。

(2) 无效的认证码

Invalid Authentication Key

安装 php7.0(php7.4 版本下,安装 partkeepr 过程中,安装认证无法通过,换成 php7.0 就可以):

1
2
3
4
5
sudo apt install software-properties-common
sudo apt update
sudo LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php 
sudo apt update
sudo apt install php7.0 php7.0-fpm php7.0-curl php7.0-ldap php7.0-bcmath php7.0-gd php7.0-dom php7.0-intl

修改 fpm 相关配置以及启动 fpm 时,也需要在相关命令中带上版本号,例如:

1
2
sudo vim /etc/php/7.0/fpm/php.ini
sudo service php7.0-fpm start

修改 nginx 配置中的套接字名称

1
fastcgi_pass unix://var/run/php/php7.0-fpm.sock;

(3) 客户端无法识别服务器要求的认证方法

SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client

这个错可能是 mysql8.0 默认使用 caching_sha2_password 作为默认的身份验证插件,而不再是 mysql_native_password,但是客户端暂时不支持这个插件导致的。

解决方法:

在 /etc/mysql/my.cnf 文件的结尾新增

1
2
[mysqld] 
default_authentication_plugin= mysql_native_password

重启 mysql:

1
sudo service mysql restart

修改密码认证方式:

1
2
3
sudo mysql -u root mysql
# 假定用户名为 partkeepr,密码为 partkeepr
ALTER USER 'partkeepr'@'localhost' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY 'partkeepr';

(4) 没有数据库驱动

启用 pdo_mysql 扩展:

1
2
# 修改 /etc/php/7.4/fpm/php.ini 文件
extension=pdo_mysql

重启 mysql 服务,重启后可以用如下命令看到 pdo_mysql

1
php7.0 -m

参考

[1] https://www.sunzhongwei.com/ubuntu-2004-apt-to-install-php-70

[2] https://askubuntu.com/questions/999999/php-with-pdo-mysql-in-ubuntu-16-04

[3] https://www.jb51.net/article/202399.htm

[4] https://github.com/partkeepr/PartKeepr/issues/905

[5] https://wiki.partkeepr.org/wiki/PartKeepr_1.4.0_installation_on_a_Raspberry_Pi

This post is licensed under CC BY 4.0 by the author.

使用 cmocka 进行单元测试

在树莓派上安装 PartKeepr