独角数卡(PHP发卡系统) 基于LNMP环境部署安装教程

DuJiaoka 独角数卡 v2.0.6 详细安装教程(Ubuntu 20.04 / PHP 7.4)

✅ 支持 HTTPS、Redis 队列、Supervisor 守护、OPcache、Composer 2

🧩 前置环境要求

系统:Ubuntu 20.04 (x86_64 / ARM64)

PHP:7.4.x(含 OPcache)

Nginx:1.18+

MariaDB:10.3+

Redis:5.0+

Composer:2.x

Supervisor:4.x

🪜 第 1 步:更新系统

apt update && apt upgrade -y
apt install -y wget curl unzip git vim net-tools ufw

🪜 第 2 步:安装 LNMP 环境

apt install -y nginx mariadb-server php7.4 php7.4-fpm php7.4-mysql php7.4-cli \
php7.4-curl php7.4-zip php7.4-gd php7.4-mbstring php7.4-bcmath php7.4-xml \
php7.4-common php7.4-opcache

启用服务:

systemctl enable nginx mariadb php7.4-fpm
systemctl start nginx mariadb php7.4-fpm

🪜 第 3 步:配置 MariaDB

安全初始化:

mysql_secure_installation

建议选项:

Enter current password for root (enter for none): [直接回车]
Switch to unix_socket authentication? n
Change the root password? Y
New password: aaaabbbb #你的数据库root的密码
Remove anonymous users? Y
Disallow root login remotely? Y
Remove test database and access to it? Y
Reload privilege tables now? Y

🪜 第 4 步:创建数据库

mysql -uroot -paaaabbbb -e "CREATE DATABASE dujiaoka CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
mysql -uroot -paaaabbbb -e "CREATE USER 'aaaaa'@'localhost' IDENTIFIED BY 'bbbbb';"
mysql -uroot -paaaabbbb -e "GRANT ALL PRIVILEGES ON dujiaoka.* TO 'aaaaa'@'localhost';"
mysql -uroot -paaaabbbb -e "FLUSH PRIVILEGES;"

🪜 第 5 步:安装 Redis

apt install -y redis-server
systemctl enable redis-server
systemctl start redis-server
systemctl status redis-server

🪜 第 6 步:配置 PHP 环境(⚠️关键)

编辑 PHP 配置:

nano /etc/php/7.4/fpm/php.ini

改为以下内容,避免禁用必要函数

disable_functions = pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare

重启:

systemctl restart php7.4-fpm

🪜 第 7 步:安装 Composer

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php --install-dir=/usr/local/bin --filename=composer
composer -V

🪜 第 8 步:下载独角数卡源码

cd /home
git clone https://github.com/assimon/dujiaoka.git
cd dujiaoka
chown -R www-data:www-data /home/dujiaoka

🪜 第 9 步:安装 Composer 依赖

composer install --no-dev

🪜 第 10 步:创建环境配置文件

cp .env.example .env
nano .env

填写以下内容:

APP_NAME=独角数卡
APP_ENV=local
APP_KEY=
APP_DEBUG=false
APP_URL=https://xx.sss.com

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=dujiaoka
DB_USERNAME=aaaaa
DB_PASSWORD=bbbbb

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=
REDIS_PORT=6379

# 缓存配置
# file为磁盘文件  redis为内存级别
# redis为内存需要安装好redis服务端并配置
CACHE_DRIVER=redis

# 异步消息队列
# sync为同步  redis为异步
# 使用redis异步需要安装好redis服务端并配置
QUEUE_CONNECTION=redis

# 后台语言
## zh_CN 简体中文
## zh_TW 繁体中文
## en    英文
DUJIAO_ADMIN_LANGUAGE=zh_CN

# 后台登录地址
ADMIN_ROUTE_PREFIX=/admin

# 是否开启https (前端开启了后端也必须为true)
# 后台登录出现0err或者其他登录异常问题,大概率是开启了https而后台没有开启,把下面的false改为true即可
ADMIN_HTTPS=true

保存并退出。

🪜 第 11 步:生成 APP_KEY

php artisan key:generate

🪜 第 12 步:导入数据库结构

mysql -uaaaaa -pbbbbb dujiaoka < /home/dujiaoka/database/sql/install.sql

🪜 第 13 步:申请 HTTPS 证书

apt install -y socat
curl https://get.acme.sh | sh
source ~/.bashrc
~/.acme.sh/acme.sh --set-default-ca --server letsencrypt
~/.acme.sh/acme.sh --issue -d xx.sss.com -w /home/dujiaoka/public
mkdir -p /home/cert/xx.sss.com
~/.acme.sh/acme.sh --install-cert -d xx.sss.com \
--key-file /home/cert/xx.sss.com/shop.key \
--fullchain-file /home/cert/xx.sss.com/shop.crt \
--reloadcmd "systemctl reload nginx"

🪜 第 14 步:配置 Nginx

nano /etc/nginx/sites-available/xx.sss.com.conf

写入以下内容:

server {
    listen 80;
    server_name xx.sss.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name xx.sss.com;

    ssl_certificate     /home/cert/xx.sss.com/shop.crt;
    ssl_certificate_key /home/cert/xx.sss.com/shop.key;

    root /home/dujiaoka/public;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}

启用站点并检查:

ln -sf /etc/nginx/sites-available/xx.sss.com.conf /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx

🪜 第 15 步:访问安装页面

浏览器打开:

https://xx.sss.com/install

按照向导完成安装。

🪜 第 16 步:安装 Supervisor

apt install -y supervisor
systemctl enable supervisor
systemctl start supervisor

🪜 第 17 步:创建队列配置

nano /etc/supervisor/conf.d/dujiaoka_queue.conf

supervisor/conf.d/dujiaoka_queue.conf 文件夹和文件要自建

写入:

[program:dujiaoka_queue]
process_name=%(program_name)s_%(process_num)02d
command=php /home/dujiaoka/artisan queue:work redis --sleep=3 --tries=3 --timeout=90
autostart=true
autorestart=true
user=www-data
numprocs=1
redirect_stderr=true
stdout_logfile=/home/dujiaoka/storage/logs/queue.log
stopwaitsecs=3600

保存后加载:

supervisorctl reread
supervisorctl update
supervisorctl start dujiaoka_queue:*

🪜 第 18 步:检查运行状态

supervisorctl status

应看到:

dujiaoka_queue:dujiaoka_queue_00 RUNNING

🪜 第 19 步:优化与清理缓存

⚠️ 不要执行 php artisan cache:clear 会丢配置

建议只执行以下命令:

php artisan view:clear
php artisan route:clear
php artisan config:cache
systemctl restart php7.4-fpm
systemctl reload nginx

🪜 第 20 步:完成 ✅

访问:

https://xx.sss.com/admin

登录后台即可开始使用你的独角数卡系统 🎉

自动续签证书:

crontab -e
0 3 * "~/.acme.sh"/acme.sh --cron --home "~/.acme.sh" > /dev/null