作者归档:admin

Minio部署

Minio部署

单机多节点部署docker(Docker Compose部署):

下载文件 https://github.com/minio/minio/blob/master/docs/orchestration/docker-compose/docker-compose.yaml?raw=true
到你的目录,然后在该目录下运行:
docker-compose pull
docker-compose up

即可启动,默认启动4个节点,127.0.0.1:9000到9003
每个都可以访问,账户minio,密码都是minio123,在每一个操作都是一样的。

Minio多节点部署必须时(时间戳)差在3秒内,记得使用NTP同步时间,而且在摧毁一半的节点的情况下任能保持读取,如果是要保证读写,摧毁节点必须小于1/2

Docker部署二:

https://docs.min.io/cn/deploy-minio-on-docker-swarm.html

部署三:

Minio启动设置,首先下载minio的可执行文件,具体步骤:http://el.psy.congroo.com/2020/05/03/minio%e5%ae%89%e8%a3%85/
export MINIO_ACCESS_KEY=<ACCESS_KEY>
export MINIO_SECRET_KEY=<SECRET_KEY>
minio server http://192.168.1.11/export1 http://192.168.1.12/export2 \
http://192.168.1.13/export3 http://192.168.1.14/export4 \
http://192.168.1.15/export5 http://192.168.1.16/export6 \
http://192.168.1.17/export7 http://192.168.1.18/export8

前面设置环境变量用于设置密码和账号,然后把每个节点加入:
前面脚本中IP后面的为硬盘地址(存储地址,绝对路径,比如第一个IP新建一个mkdir /export1即可 )
可以参考该部署脚本(minio.sh):
minio二进制文件下载地址: https://dl.minio.io/server/minio/release/linux-amd64/minio

服务器资源:
172.16.1.101
/minio/data1 /minio/data2
172.16.1.102
/minio/data1 /minio/data2
本集群由2台服务器构成(官方推荐集群最小4台服务器),每个服务器上挂载两个磁盘目录,最小数据挂载点为4个
#!/bin/bash
export MINIO_ACCESS_KEY=Minio
export MINIO_SECRET_KEY=Test123456
/opt/minio/minio server --config-dir /etc/minio \
http://172.16.1.101/minio/data1 http://172.16.1.101/minio/data2 \
http://172.16.1.102/minio/data1 http://172.16.1.102/minio/data2 \

Minio安装

X86
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
./minio server /data
ARM

wget https://dl.minio.io/server/minio/release/linux-amd64/minio
chmod +x minio
./minio server /data
注意启动显示的 appkey secretkey是默认登录账户,密码

docker X86
docker pull minio/minio
docker run -i -t -p 9000:9000 -e MINIO_ACCESS_KEY=admin -e MINIO_SECRET_KEY=123123123 -v /data:/data minio/minio server /data

docker arm jessestuart/minio
docker run -i -t -p 9000:9000 -e MINIO_ACCESS_KEY=admin -e MINIO_SECRET_KEY=123123123 -v /data:/data jessestuart/minio server /data

-p 80:9000 设置80外部访问端口

API文档:https://docs.min.io/docs/python-client-api-reference

from minio import Minio
from minio.error import ResponseError

mc = Minio('127.0.0.1:9000',
                  access_key='admin',
                  secret_key='123123123',
                  secure=False)
注意带上端口
mc.list_buckets()  列出所有bucket  
mc.make_bucket('lcl')  创建lcl的bucket;如果是多节点还可以考虑这个location="us-east-1"  

 mc.fput_object('loli','x.png','X_80.png') 第一个参数是bucket名,第二个为上传后的文件名,第三个为文件位置,返回一个etag的串码'f7b865265606c41b0e07779d3317e0a8'  

mc.remove_bucket('lcl')删除bucket  
列出说有bucket的文件对像:
c=mc.list_objects('lcl') 第一个参数为bucket名,第二为前前缀prefix='asda'可以省,第三个为recursive(True(递归列表)/False(目录列表 默认)),
c为迭代对象,c中每一个都含有:
bucket_name
object_name  (记得UTF8,object_name.encode('utf8'))
is_dir
size
etag
last_modified(修改时间戳)


z=mc.get_object('bucket名称','object_name文件保存名','request_headers','sse服务器端
返回:object   urllib3.response.HTTPResponse
加密标头(可选,默认为无)')
    with open('my-testfile', 'wb') as file_data:
        for d in z.stream(32*1024):
            file_data.write(d)

直接保持文件
z=mc.fget_object('lcl','x.png','本地文件路径',,'request_headers','sse服务器端加密标头(可选,默认为无)')
返回:szie etag content_type metadata last_miodified

reomve_object('bucketname','object_name') 单
reomve_objects('bucketname','object_name的列表') 多

生成url GET
from datetime import timedelta
#timedelta 最长7天,days,seconds,minutes,hours
presigned_get_object('bucketname','object_name',expires=timedelta(days=1))
生成一个一天时间的链接

PUT使用presigned_put_object  
from minio import Minio
from datetime import timedelta
mc = Minio('192.168.0.102:9000',access_key='admin',secret_key='a123xds456',secure=False)
c=mc.presigned_get_object('loli','ua.pdf',expires=timedelta(days=1),response_headers={"response-content-disposition":"attachment; filename=z.pdf"})
print(c)

Flask的吐槽

最近一直在尝试使用python下的web开发,入手了flask,感觉有点爽。
最爽的要属于jinja模板,简直是为所欲为,从视图模板向他传参,在字典键不存在是也不报错。。
就是说我可以为所欲为的使用,不用在额外的判断。

return render_template(‘index.html’,info=info,live=lifexs)

lnmp上swoole安装

里面有swoole的各种版本,选择一个下载,例如我下载的是最新的4.4.15

执行命令:

wget -c https://pecl.php.net/get/swoole-4.4.15.tgz

之后,swoole扩展就下载下来了,

2.解压

tar -zvxf swoole-4.4.15.tgz

  1. 目录切换到解压完成的包里面

cd swoole-4.4.15

4.通过 phpize 建立 php的外挂模块

/usr/local/php/bin/phpize

5.配置编译安装

./configure –with-php-config=/usr/local/php/bin/php-config

make && make install

6.将扩展extension=swoole.so添加到 /usr/local/php/etc/php.ini 中。

找到你的php.ini所在位置,

vim /usr/local/php/etc/php.ini

添加extension=swoole.so

7.重启

lnmp restart