1. 项目背景

拥有属于自己的支付平台是很多浪迹于电报和vps的小伙伴们一直想拥有的,但是目前能看到的大多是基于宝塔面板的搭建方式,这种方式虽然也很方便,但是对于某些小伙们来说可能觉得有些繁杂,因此在此基础上诞生了今天这个基于docker部署易支付平台的项目

特点

支持docker一键部署
本地文件映射方便修改

2. 搭建环境

安装好 Docker、Docker-compose(相关脚本)
【非必需但建议】域名一枚,并做好解析到服务器上(域名购买、域名解析 视频教程)
【非必需】提前安装好宝塔面板海外版本 aapanel,并安装好 Nginx(安装地址)
【非必需本教程选用】安装好 Nginx Proxy Manager(相关教程)
服务器要求:内存建议1G以上

3. 安装 Docker 与 Nginx Proxy Manager

可以直接参考这篇内容:

https://blog.laoda.de/archives/nginxproxymanager/

1. 创建安装目录

创建一下安装的目录:

sudo -i

mkdir -p /root/data/docker_data/epay

cd /root/data/docker_data/epay

mkdir config && mkdir html

2. 创建相关文件

#1、将易支付php静态文件解压到html文件夹中

#2、创建nginx.conf文件
cd config && vi nginx.conf

#3、复制以下内容, 英文输入法下,按 i

以下是博主修改的

http {
    server {
        listen 80;
        
        root /var/www/html;  # 这里应该是你的 PHP 项目的根目录路径
        index index.php index.html;
        
        server_name localhost;
        error_log  /var/log/nginx/error.log;
        access_log /var/log/nginx/access.log;


        location / {
            try_files $uri $uri/ /index.php?$query_string;
        }
        location ~ \.php$ {
            include fastcgi_params;
            fastcgi_pass php:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_path_info;
        }

    }
}

修改好之后,注意切换成英文输入法,然后按一下 esc,然后 :wq 保存退出。

#创建部署文件
vim docker-compose.yml

英文输入法下,按 i

以下是博主修改的

version: '3.8'

services:
  webserver:
    image: nginx:latest
    ports:
      - "8080:80"
    volumes:
      - ./config/nginx.conf:/etc/nginx/nginx.conf
      - ./html:/var/www/html
      - ./logs:/var/log/nginx
    depends_on:
      - php
      - mysql

  php:
    image: php:7.4-fpm
    volumes:
      - ./html:/var/www/html
    depends_on:
      - mysql

  mysql:
    image: mysql:5.7
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: your_root_password
      MYSQL_DATABASE: your_database_name
      MYSQL_USER: your_mysql_user
      MYSQL_PASSWORD: your_mysql_password
    volumes:
      - ./mysql-data:/var/lib/mysql

volumes:
  html:
  logs:
  mysql-data:

自行更改数据库相关账户密码等信息。
修改好之后,注意切换成英文输入法,然后按一下 esc,然后 :wq 保存退出。

提前配置php数据库配置文件,找到html文件夹下的

#修改/root/data/docker_data/epay/html下的config.php配置
<?php
/*数据库配置*/
$dbconfig=array(
	'host' => '当前服务器的公网ip', //数据库服务器
	'port' => 3306, //数据库端口
	'user' => 'your_mysql_user', //数据库用户名
	'pwd' => 'your_mysql_password', //数据库密码
	'dbname' => 'your_database_name', //数据库名
	'dbqz' => 'pay' //数据表前缀
);

修改好之后,注意切换成英文输入法,然后按一下 esc,然后 :wq 保存退出。

#部署项目
docker-compose up -d 
#给予html文件目录权限
 chmod -R 777 /root/data/docker_data/epay/html/*

查看php拓展

#进入 PHP 容器
docker-compose exec php /bin/bash
#在 PHP 容器内,使用以下命令列出所有已经安装的扩展:
php -m
#可安装拓展,如下
docker-php-ext-install pdo_mysql

#退出容器,重启docker-compose
docker-compose restart

4、 打开服务器防火墙(非必需)并访问网页

image
image
image

打开防火墙的端口 8080

查看端口是否被占用(以 8080为例),输入:

lsof -i:8080  #查看 8080 端口是否被占用,如果被占用,重新自定义一个端口

如果啥也没出现,表示端口未被占用,我们可以继续下面的操作了~

如果出现:


-bash: lsof: command not found

运行:

yum install -y lsof  #安装 lsof

如果端口没有被占用(被占用了就修改一下端口,比如改成 8081,注意 docker 命令行里和防火墙都要改)

理论上我们就可以输入 http://ip:8080 访问了。

5. 反向代理

我们要用域名而不是IP+端口的方式来访问我们的服务!

5.1 利用 Nginx Proxy Manager

在添加反向代理之前,确保你已经完成了域名解析,不会的可以看这个:域名一枚,并做好解析到服务器上

部署过程参考油管教程