架设yiimp矿池并不是运行一个程序,而是安装一堆东西,整个过程非常复杂,先看一眼下面的表格,如果你还没放弃,那我们再继续。
必选项:
程序 | 运行数量 | 简介 |
---|---|---|
Wallet | n | 全节点钱包,每币种一个 |
MySQL | 1 | 数据库 |
Nginx | 1 | 网站服务器 |
PHP-FPM | 1 | PHP运行环境 |
Memcached | 1 | 缓存服务器 |
Stratum | n | 矿池接连器,每币种需要一个实例 |
可选项:
程序 | 运行数量 | 简介 |
---|---|---|
PhpMyAdmin | 1 | 数据库管理 |
sendmail | 1 | 邮件发送服务 |
fail2ban | 1 | 服务器入侵检测 |
Let's Encrypt | 1 | SSL证书 |
没错,我知道你当然不会肯放弃,但不急,那只是早晚的事而已,我们先往下看。
服务器配置:
原则上来讲,如果只为跑通,那1核2G内存的服务器就够用了,如果是小币种那硬盘有个几十G也就够,如果你想上主流币(比如ETH),那每个币种至少要准备1TB硬盘来同步区块数据。
开始说正题了,对,认真点(虽然认真也没什么用).....
环境说明
1.为了便于跑通,我们会把所有运行需要的文件都放在/yiimp目录下,但实际生产环境推荐使用NAS保存数据
2.我们会为docker创建一个名为"pool"网桥,所有yiimp相关的通信都会通过此网桥处理
3.有些服务端环境(如Nginx)你可能已经有了,但我仍极力推荐使用新的独立环境
基础环境配置
Docker怎么安装我就不说了,搞不定请现在就放弃吧...
//创建项目基础目录
mkdir /yiimp
mkdir /yiimp/backup
mkdir /yiimp/logs
mkdir /yiimp/nginx
mkdir /yiimp/nginx/vhost
mkdir /yiimp/mysql
mkdir /yiimp/config
sudo touch /yiimp/logs/debug.log
sudo chown -R www-data:www-data /yiimp/logs/debug.log
sudo chmod -R 644 /yiimp/logs/debug.log
sudo chmod -R 664 /root/backup/
//创建网桥
docker network create -d bridge pool
安装PHP-FPM
(Docker提供的PHP官方境像所带功能不足,我们需要自己扩展一下)
Dockerfile-fpm
FROM php:7-fpm-alpine3.10
ADD https://raw.githubusercontent.com/mlocati/docker-php-extension-installer/master/install-php-extensions /usr/local/bin/
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories \
&& apk update \
&& chmod uga+x /usr/local/bin/install-php-extensions \
&& sync \
&& install-php-extensions imagick memcached mysqli pdo_mysql mcrypt gettext \
&& apk add --no-cache mysql-client shadow \
&& usermod -u 1000 www-data
CMD ["php-fpm"]
//编译php-fpm(可能会碰到连不上网的问题,多试几次即可)
docker build -t yiimp-fpm -f Dockerfile-fpm .
//运行php-fpm
docker run -d \
--name yiimp-fpm \
--net pool \
--restart unless-stopped \
-e TZ=Asia/Shanghai \
-v /yiimp/web:/var/web \
-v /yiimp/logs:/var/log \
yiimp-fpm
//开放端口可添加 -p 9000:9000
运行Memcached
docker run -d \
--name yiimp-memcached \
--net pool \
--restart unless-stopped \
memcached:alpine
//开放端口可添加 -p 11211:11211
安装Nginx
准备pool.conf参数文件并放至/yiimp/nginx/vhost目录中
pool.conf
server{
listen 80;
server_name pool.domain.com;
root /var/web;
index index.html index.htm index.php;
charset utf-8;
# allow larger file uploads and longer script runtimes
client_body_buffer_size 50k;
client_header_buffer_size 50k;
client_max_body_size 50k;
large_client_header_buffers 2 50k;
sendfile off;
location / {
try_files $uri $uri/ /index.php?$args;
}
location @rewrite {
rewrite ^/(.*)$ /index.php?r=$1;
}
location ~ ^/index\.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass yiimp-fpm:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
try_files $uri $uri/ =404;
}
location ~ \.php$ {
return 404;
}
location ~ \.sh {
return 404;
}
location ~ /\.ht {
deny all;
}
location ~ /.well-known {
allow all;
}
}
//启动Nginx
docker run -d \
--name nginx \
--restart unless-stopped \
--net pool \
-e TZ=Asia/Shanghai \
-p 8111:80 \
-p 4431:443 \
-v /yiimp/nginx/nginx.conf:/etc/nginx/nginx.conf:ro \
-v /yiimp/nginx/vhost:/etc/nginx/vhost:ro \
-v /yiimp/logs:/work/yiimp/log \
-v /yiimp/web:/var/web \
-v /yiimp/backup:/root/backup \
nginx:stable-alpine
运行PhpMyAdmin
你可能需要调试数据库,不装也没问题
docker run -d \
--name myadmin \
--restart unless-stopped \
--net pool \
-e TZ=Asia/Shanghai \
-p 8081:80 \
phpmyadmin/phpmyadmin
下载钱包并同步区块链数据
这部分暂时没什么好写的,每个币种不一样,请大家自己搞定,
理论上来讲用docker部署一个全节点钱包完全是不成问题的。
请不要忘记打开钱包的rpc服务并设置用户名和密码,不需要映射RPC端口至公网,因为只是矿池自己调用
(顺便记得给钱包加密码....)
如果以上内容全都顺利运行通过,那恭喜你,我们可以开始配置yiimp了
使用docker架设yiimp(2)
网友评论