自动售货系统-独角数卡 dujiaoka
有什么用 自动售货系统-独角数卡;佰阅发卡kamifaka 尝试按教材和视频搭建失败了(详见章节:搭建失败的历史记录), 鼓起勇气,重新选用新的方案:https://blog.dov.moe/posts/49102/
举个🌰例子:https://dovshop.net/ https://ayangshop.com/buy/38
实现方法 1 2 3 4 5 6 7 8 9 cd /www/server/panel/data/compose/dujiaoka/template mkdir Shop && cd Shop mkdir storage uploads chmod 777 storage uploads ❗注意此处文件夹权限一定要给! chmod -R 777 env.conf # 重要步骤
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 version: "3" services: faka: image: ghcr.io/apocalypsor/dujiaoka:latest container_name: faka environment: - INSTALL =true volumes: - ./env.conf:/dujiaoka/.env - ./uploads:/dujiaoka/public/uploads - ./storage:/dujiaoka/storage - ./start-hook.sh:/dujiaoka/start-hook.sh ports: - 4444:80 restart: always db: image: mariadb:focal container_name: faka-data restart: always environment: - MYSQL_ROOT_PASSWORD =mariadb - MYSQL_DATABASE =dujiaoka - MYSQL_USER =dujiaoka - MYSQL_PASSWORD =dujiaokapassword volumes: - ./data:/var/lib/mysql redis: image: redis:alpine container_name: faka-redis restart: always volumes: - ./redis:/data
编辑 .env 文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 APP_NAME =Carl的小店APP_ENV =localAPP_KEY =base64:hDVkYhfkUjaePiaI1tcBT7G8bh2A8RQxwWIGkq7BO18=APP_DEBUG =false APP_URL =http://192.168 .6.116 :4444 LOG_CHANNEL =stackDB_CONNECTION =mysqlDB_HOST =dbDB_PORT =3306 DB_DATABASE =dujiaokaDB_USERNAME =dujiaokaDB_PASSWORD =dujiaokapasswordREDIS_HOST =redisREDIS_PASSWORD =REDIS_PORT =6379 BROADCAST_DRIVER =logSESSION_DRIVER =fileSESSION_LIFETIME =120 CACHE_DRIVER =redisQUEUE_CONNECTION =redisDUJIAO_ADMIN_LANGUAGE =zh_CNADMIN_ROUTE_PREFIX =/admin
一直无法下载成功…… 修改使用:stilleshan/dujiaoka
1 2 3 docker-compose+如何使用代理提速 https://neucrack.com/p/286 workaournd:手动让OpenClash不停在线(不在线就重新刷新取获取最新节点信息)
终于下载成功后,启动失败
1 Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error mounting "/www/server/panel/data/compose/dujiaoka/template/Shop/favicon.ico" to rootfs at "/dujiaoka/public/favicon.ico": mount /www/server/panel/data/compose/dujiaoka/template/Shop/favicon.ico:/dujiaoka/public/favicon.ico (via /proc/self/fd/6), flags: 0x5001: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type
注释掉那几个自定义的文件映射,就好了
1 2 faka | The environment file is invalid! faka | Failed to parse dotenv file due to unexpected whitespace. Failed at [Carl Shop].
返回修改把前后加上引号。
修改了端口映射出4444后,错误: 500 Server Error
❗注意环境变量如果写的不对可能导致 500,可以开 APP_DEBUG=true 看看具体是哪里写错了。
1 2 3 4 5 6 7 8 throw new RuntimeException('The only supported ciphers are AES-128-CBC and AES-256-CBC with the correct key lengths.'); 解决办法:修改APP_KEY=base64:hDVkYhfkUjaePiaI1tcBT7G8bh2A8RQxwWIGkq7BO18= -------------- file_put_contents(/dujiaoka/.env): failed to open stream: Permission denied
本地访问成功:http://192.168.6.116:4444
参考资料 https://hub.docker.com/r/stilleshan/dujiaoka https://hub.docker.com/r/jiangjuhong/dujiaoka
搭配frpc 20231203 NPM反代失败,几周后;终于找到解决方案了:发现可以用frpc反代出去就好
配置完成frpc -c frpc.ini, 可是依旧是点击的链接没有携带端口号;非常郁闷
踩坑记录及解决办法 独角数卡 开源式站长自动化售货解决方案、高效、稳定、快速!
徒手搭建独角数发卡网站 经营自己的小店! - 六月 26, 2023https://kejilion.blogspot.com/2023/06/blog-post_26.html
配置docker-composehttps://github.com/kejilion/docker/blob/main/LNMP-docker-compose.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 version: '3.8' services: nginx: image: nginx:1.22 container_name: nginx restart: always ports: - 882:80 - 4444:443 volumes: - ./nginx.conf:/etc/nginx/nginx.conf - ./certs:/etc/nginx/certs - ./html:/var/www/html php: image: php:7.4.33-fpm container_name: php restart: always volumes: - ./html:/var/www/html mysql: image: mysql:5.7.42 container_name: mysql restart: always volumes: - ./mysql:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD =webroot - MYSQL_DATABASE =web - MYSQL_USER =carlZeng - MYSQL_PASSWORD =carlZengYYDS redis: image: redis:latest container_name: redis restart: always volumes: - ./redis:/data
修改了独角数卡的端口
申请证书, 下载证书;
1 2 3 4 5 直接去NPM中下载证书解压缩后重命名放到debian的目录: /home/web/certs key.pem cert.pem
继续配置nginx.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 events { worker_connections 1024 } http { include /etc/nginx/mime.types default_type application/octet-stream sendfile on keepalive_timeout 65 client_max_body_size 1000m server { listen 80 server_name shop.carlzeng.top return 301 https://$host$request_uri } server { listen 443 ssl http2 server_name shop.carlzeng.top ssl_certificate /etc/nginx/certs/cert.pem ssl_certificate_key /etc/nginx/certs/key.pem root /var/www/html/dujiaoka/public/ index index.php try_files $uri $uri/ /index.php?$query_string location ~ \.php$ { fastcgi_pass php:9000 fastcgi_index index.php fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name include fastcgi_params } } }
cd /home/web/html && wget https://ghproxy.com/https://github.com/assimon/dujiaoka/releases/download/2.0.6/2.0.6-antibody.tar.gz && apt install -y tar && tar -zxvf 2.0.6-antibody.tar.gz && rm 2.0.6-antibody.tar.gz
安装PHP扩展
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 docker exec php apt update && docker exec php apt install -y libmariadb-dev-compat libmariadb-dev libzip-dev libmagickwand-dev imagemagick 卡死在这一步,分解如下: docker exec php apt install -y libmariadb-dev-compat docker exec php apt install -y libmariadb-dev docker exec php apt install -y libzip-dev docker exec php apt install -y libmagickwand-dev libmagickwand-dev is already the newest version (8:6.9.11.60+dfsg-1.3+deb11u1). docker exec php apt install -y imagemagick Build process completed successfully Installing '/usr/local/lib/php/extensions/no-debug-non-zts-20190902/redis.so' install ok: channel://pecl.php.net/redis-6.0.2 configuration option "php_ini" is not set to php.ini location You should add "extension=redis.so" to php.ini docker exec php docker-php-ext-install pdo_mysql zip bcmath gd intl opcache && docker exec php pecl install redis && docker exec php sh -c 'echo "extension=redis.so" > /usr/local/etc/php/conf.d/docker-php-ext-redis.ini'
如果登录时报错再使用该命令,解除HTTPS限制
sed -i ‘s/ADMIN_HTTPS=false/ADMIN_HTTPS=true/g’ /home/web/html/dujiaoka/.env
错误以及解决办法 不同时期再网页页面,点击安装后出现的错误
数据库配置错误 :could not find driver (SQL: select 1 limit 1) 解决:修改了nginx.conf,确保80和443端口(docker中的端口占用,默认即可)
确认了php docker中的PHP扩展,确保所有插件都安装成功
Redis配置错误 :php_network_getaddresses: getaddrinfo failed: Name or service not known 解决:sed -i 's/ADMIN_HTTPS=false/ADMIN_HTTPS=true/g' /home/web/html/dujiaoka/.env
核查了php docker中 安装PHP拓展部分于redis相关的;
docker-php-ext-redis.ini(已包含内容:extension=redis.so)
原来是redis 写成了radis,纠正后重试
数据库配置错误 :SQLSTATE[HY000] [1045] Access denied for user ‘carlZEng‘@’172.24.0.5’ (using password: YES) (SQL: select 1 limit 1) 解决:MySQL用户名填写错误,纠正后重试
数据库配置错误 :could not find driver (SQL: select 1 limit 1) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 解决: 检测:docker exec -it php php -i |grep mysqlnd 排查是否启用了mysql驱动 mysqlnd mysqlnd => enabled Version => mysqlnd 7.4.3 docker exec -it php /bin/bash docker-php-ext-install pdo pdo_mysql docker-compose restart php 这个好像没有被永久保存住,这导致每次docker-compose restart php都会出现这个错误, 按照上面解决好以后,紧接着就是下面这个Redis错误 这次是修正后,最后是通过docker restart php 解决了错误 测试 docker-compose restart 会不会把数据在继续破坏了,重新拉取? 也是正常的! 那下一次怎么办?继续如此修复即可
Please make sure the PHP Redis extension is installed and enabled. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 docker exec -it php /bin/bash pecl install redis checking for igbinary includes... configure: error: Cannot find igbinary.h ERROR: `/tmp/pear/temp/redis/configure --with-php-config=/usr/local/bin/php-config --enable-redis-igbinary=yes --enable-redis-lzf=yes --enable-redis-zstd=yes --enable-redis-msgpack=yes --enable-redis-lz4=yes --with-liblz4' failed Build process completed successfully Installing '/usr/local/lib/php/extensions/no-debug-non-zts-20190902/redis.so' install ok: channel://pecl.php.net/redis-6.0.2 configuration option "php_ini" is not set to php.ini location You should add "extension=redis.so" to php.ini 解决:docker exec php docker-php-ext-install pdo_mysql zip bcmath gd intl opcache && docker exec php pecl install redis && docker exec php sh -c 'echo "extension=redis.so" > /usr/local/etc/php/conf.d/docker-php-ext-redis.ini' 解决分解,并逐一确认执行成功 docker exec -it php /bin/bash docker-php-ext-install pdo_mysql zip bcmath gd intl opcache pecl install redis sh -c 'echo "extension=redis.so" > /usr/local/etc/php/conf.d/docker-php-ext-redis.ini' 在 bash 下,一一执行,检查结果 最后,需要docker-compose restart 之前都是重启php容器docker restart php 无法解决问题。需要的是:docker-compose restart
0 error 1 2 3 4 5 6 7 安装成功后 redirect https://192.168.6.116:4444/admin/auth/login # 后台登录出现0err或者其他登录异常问题,大概率是开启了https而后台没有开启,把下面的false 改为true 即可 ADMIN_HTTPS=false 解决:sed -i 's/ADMIN_HTTPS=false/ADMIN_HTTPS=true/g' /home/web/html/dujiaoka/.env 成功了,本地局域网可访问。 下一步是为何无法NPM反代https://192.168.6.116:4444
[outstanding]创建订单出错 Symfony\Component\Debug\Exception\FatalThrowableError Call to undefined function App\Service\bcmul()
https://192.168.6.116:4444/create-order
[outstanding]npm更换二级域名后反代成功 https://buy.carlzeng.top:4443/ 导致问题:所有的图片那些指向的链接 没有加端口号,导致图片全部失效, buy链接也没有端口号… 重命名install.lock 重装
重装后数据重新配置,导致设置的商品等等全部清零;上面问题待测试
URL自动携带端口,没有解决。
NEXT: 参见文章:搭建图床 切换本站图片至自建服务 的解决方案:
* 静态资源加载失败 #317
* https+域名+端口的访问问题,NginxProxyManager反代 #607
Debian Manual 手动安装步骤 写在前面
此教程专为有洁癖的宝宝们准备。不使用任何一键安装脚本。面板党可以退散了!!
本人测试环境是 Debian 11 其他的没测试。
手动安装lnmp
安装Nginx
安装Mariadb1 apt install mariadb-server
配置Mariadb1 mysql_secure_installation
根据提示操作即可。
创建数据库
之后会显示1 2 3 4 5 6 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 74 Server version: 10.3.15-MariaDB-1 Debian 10 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help . Type '\c' to clear the current input statement. MariaDB [(none)]>
接下来输入命令 1 2 3 4 CREATE DATABASE [这里替换为数据库名] ;GRANT ALL ON [这里替换为数据库名].* TO '[这里替换为用户名]' @'localhost' IDENTIFIED BY '[这里替换为密码]' WITH GRANT OPTION;FLUSH PRIVILEGES; EXIT
安装PHP7.41 apt install php php-fpm php-mysql php-gd php-zip php-opcache php-curl php-mbstring php-intl php-dom php-bcmath php-redis php-fileinfo
安装redis
启用函数nano /etc/php/7.4/fpm/php.ini
,ctrl+w
搜索 putenv
,proc_open
,pcntl_signal
,pcntl_alarm
在disable_functions
一行 有就去掉。 之后 /etc/init.d/php7.4-fpm reload
下载源代码 1 2 3 4 cd /var/www/dujiaokaapt install git git clone https://github.com/assimon/dujiaoka.git chmod 777 -R /var/www/dujiaoka
配置 nginx
假设你的域名是:domain.com
假设你的网站目录是:/home/wwwroot/dujiaoka
配置文件的存放目录是:/usr/local/nginx/conf/vhost
按下文教程配置时,注意修改演示配置中的域名和目录
1 nano /etc/nginx/sites-enabled/dujiaoka
你可以参考我的配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 server { listen 80; listen [::]:80; server_name domain.com ; return 301 https://$server_name$request_uri ; } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name domain.com ; index index.html index.htm index.php default.html default.htm default.php; root /var/www/dujiaoka/public; ssl_certificate /etc/nginx/sslcert/cert.crt; ssl_certificate_key /etc/nginx/sslcert/key.key; location / { try_files $uri $uri / /index.php?$query_string ; } location ~ [^/]\.php(/|$) { fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; include snippets/fastcgi-php.conf; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 12h; } location ~ /.well-known { allow all; } location ~ /\. { deny all; } access_log off; }
在 /etc/nginx/sslcert/
上传你的https证书 之后 nginx -t
没有报错就重启nginx /etc/init.d/nginx restart
composer 安装 1 2 3 4 5 6 7 8 9 10 cd /var/www/dujiaokaphp -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php composer-setup.php php -r "unlink('composer-setup.php');" mv composer.phar /usr/local/bin/composeradduser user su user composer install composer update su
访问安装页面 访问你的域名,进行安装
MySQL 数据库名:dujiaoka
MySQl 密码:你设置的密码
Redis 密码:无需填写
网站URL:你的域名,如 https://domain.com
##编辑配置文件
编辑 /var/www/dujiaoka/.env
将 APP_DEBUG=true
改为 APP_DEBUG=false
另起一行,添加 ADMIN_HTTPS=true
尝试登入后台。如果提示 0 error
,刷新页面即可
配置 Supervisor 先安装
创建配置文件
1 nano /etc/supervisor/conf.d/dujiaoka.conf
写入配置文件
注意修改网站目录1 2 3 4 5 6 7 8 9 [program:laravel-worker] process_name=%(program_name)s_%(process_num)02d command =php /home/wwwroot/dujiaoka/artisan queue:workautostart=true autorestart=true user=www numprocs=1 redirect_stderr=true stdout_logfile=/home/wwwlogs/worker.log
启动1 2 3 supervisorctl reread supervisorctl update supervisorctl start laravel-worker:*
参考来源 https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mariadb-php-lemp-stack-on-debian-10 https://github.com/assimon/dujiaoka/wiki/2.x_linux_install
docker部署佰阅发卡kamifaka 1 docker run --name kmfaka -itd -v /volume1/docker/kamifaka:/usr/src/app/public -p 9200:8000 baiyuetribe/kamifaka:latest
1 2 3 4 5 6 7 8 9 10 11 12 13 version: "3" services: kamifaka: container_name: kmfaka stdin_open: true tty: true volumes: - ./:/usr/src/app/public ports: - 4445 :8000 image: baiyuetribe/kamifaka:latest restart: always
后台地址ip地址:4445/admin。默认管理员账号admin@qq.com ,密码:123456。
NEXT:
支付设置,支付接口设置(已完成)
邮件通知,SMTP服务器地址或搭建
支付设置之支付宝当面付
开通:点击 立即开通 ,按要求填写并提交产品开通申请,点此查询 产品开通情况 。
开发:点此查询 开发文档 。
申请成功以后,填写APPID, alipay_public_key, app_private_key
APPID, 提交启用‘当面付’产品(应用状态:审核中 您的应用审核已提交,平台将在1天内完成审核)。第二天获得成功的状态,应用状态:已上线 ;图标下方复制APPID即可
alipay_public_key,容易获取,每个人都是一样的
app_private_key,使用“支付宝开放平台密钥工具”,生成用户公钥和私钥(就是这个app private key)
成功,可正常使用支付宝的方式支付:https://bestbuy.carlzeng.top:3/#/1/detail
从容器中拷贝文件到宿主机 1 docker cp kmfaka:/usr/src/app/dist/static/user/js/ ./user/
Reference NAS用docker部署佰阅发卡卡密发卡系统kamifaka
球推荐一个发卡程序,除了独角风铃荔枝