国内使用kubernetes踩过的坑

国内使用Kubernetes主要是因为墙的一些问题,导致用起来不是很顺畅。网上教程很多,但是个体情况不一样,所以还是总结下。

环境:阿里云 ubunt 16.04  国外服务器一台

安装教程:https://kubernetes.io/docs/setup/independent/install-kubeadm/

使用教程:https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/

kubeadm init流程:https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-init/

继续阅读国内使用kubernetes踩过的坑

Ethereum以太坊区块链应用实践

以太坊(英语:Ethereum)是一个开源的有智能合约功能的公共区块链平台。通过其专用加密货币以太币(Ether,又称“以太币”)提供去中心化的虚拟机(称为“以太虚拟机”Ethereum Virtual Machine)来处理点对点合约。

——维基百科《以太坊

以太坊官网:https://www.ethereum.org/

本文基于以太坊平台,实现一个简单的私有链应用。

重要参考:

https://github.com/sunnyFrank/Dapp-development

https://g2ex.github.io/2017/09/12/ethereum-guidance/

测试开发环境:Ubuntu 16.04

目录:

一、环境搭建

二、建立和测试私有链

继续阅读Ethereum以太坊区块链应用实践

yii2 模块中使用restful的pretty url带参数导致404 not found cannot resolve url

在模块中加了restful接口,不带参数是可以正常访问的

base_url/controller/action

带上参数不能正常访问

base_url/controller/action/15

如果不用pretty url是可以的

base_url/controller/action?id=15

按照官方文档配置无效http://www.yiichina.com/doc/guide/2.0/rest-versioning

最后发现,用另一种方式声明url rule可以了

     components' => [
        ...
        'urlManager' => [
            'enablePrettyUrl'     => true,
            'enableStrictParsing' => false,
            'showScriptName'      => false,
            'rules' => [
                [
                    'class' => 'yii\rest\UrlRule',
                    'controller' => [
                        'api/v1_0/user',
                    ],
                    'tokens'=>[
                        '{id}'    => '<id:\\d[\\d,]*>', //default
                    ],
                    'extraPatterns'=>[
                        'GET,HEAD {id}/projects'           => 'projects',
                    ]
                ],
            ],
            'rules'=>[
                '<module:\w+>/<controller:\w+>/<action:\w+>/<id:\d+>'=>'<module>/<controller>/<action>',
            ],
        ]
    ],

我觉得我要弃坑了~~~

使用nginx反向代理docker容器实现不同域名访问不同容器

环境:

ubuntu 16.04

docker 17.05

nginx 1.10.3 (ubuntu)

首先安装nginx

apt-get install -y nginx

启动docker容器并映射端口

docker run -d -p 8080:80 --name domain1 httpd
docker run -d -p 8081:80 --name domain2 httpd

添加反向代理配置/etc/nginx/conf.d/reverse-proxy.conf

server
{
    listen 80;
    server_name domain1.com;
    location / {
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:8080;
    }
    access_log /var/log/nginx/domain1.com_access.log;
}

server
{
    listen 80;
    server_name domain2.com;
    location / {
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:8081;
    }
    access_log /var/log/nginx/domain2_access.log;
}

启动nginx

/etc/init.d/nginx start

 

 

http重定向到https

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

server
{
    listen 443;
    server_name domain.com;
    ssl on;
    ssl_certificate /home/ca/yun2.nopass.crt;
    ssl_certificate_key /home/ca/yun2.nopass.key;
    location / {
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:8080;
    }
    client_max_body_size 512M;
    access_log /var/log/nginx/yun2.ahuer.com_access.log;
}