Mac安装 Homebrew 失败解决方案

brew raw.githubusercontent.com port 443: Connection refused

方案一:(主流方案)

查找 ip -> 修改 host -> 再去执行安装脚本 (有可能还是失败)

https://www.ipaddress.com/ 查询raw.githubusercontent.com的真实IP。

sudo vim /etc/hosts

添加如下内容:
199.232.28.133 raw.githubusercontent.com (前面的ip为查询到的 ip地址)

fatal: unable to access ‘https://github.com/Homebrew/brew/’

最近安装 Homebrew 遇到的坑,总结一下。
我的 Mac 版本是 10.13.6。

  1. 首先安装 Homebrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

  • 报错信息:
fatal: unable to access 'https://github.com/Homebrew/brew/': Could not resolve host: github.com
Failed during: git fetch origin master:refs/remotes/origin/master --tags --force
  1. 解决方式:
    1. 试着先在终端 ping github.com
    MacBook-Pro:~$ ping github.com PING github.com (13.250.177.223): 56 data bytes Request timeout for icmp_seq 0 Request timeout for icmp_seq 1 Request timeout for icmp_seq 2 Request timeout for icmp_seq 3
    • 如果 ping 出来是这种结果,就接着看第二步
    1. 修改 hosts 配置
      • 在终端中 sudo vi /etc/hosts 打开编辑文件
      • 按 s 进入编辑模式
      • 接着在最下面添加 192.30.253.113 github.com
      • 按 control + c 保存
      • 接着按 :wq 退出,就可以了。
    2. 在终端 ping github.com MacBook-Pro:~$ ping github.com PING github.com (192.30.253.113): 56 data bytes 64 bytes from 192.30.253.113: icmp_seq=0 ttl=49 time=351.766 ms 64 bytes from 192.30.253.113: icmp_seq=1 ttl=49 time=388.017 ms 64 bytes from 192.30.253.113: icmp_seq=2 ttl=49 time=391.047 ms 64 bytes from 192.30.253.113: icmp_seq=3 ttl=49 time=408.031 ms
    • 就会发现已经成功了。
    1. 接着就在执行 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    2. 如果安装过程中遇到这种问题 error: RPC failed; curl 56 LibreSSL SSL_read: SSL_ERROR_SYSCALL, errno 54 fatal: The remote end hung up unexpectedly
    • 就是网络有问题,在执行一下安装命令
    achang@achangMacBook-Pro:~$ /usr/bin/ruby -e "$(curl - fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" ==> This script will install: /usr/local/bin/brew /usr/local/share/doc/homebrew /usr/local/share/man/man1/brew.1 /usr/local/share/zsh/site-functions/_brew /usr/local/etc/bash_completion.d/brew /usr/local/Homebrew Press RETURN to continue or any other key to abort ==> Downloading and installing Homebrew... remote: Counting objects: 106166, done. remote: Compressing objects: 100% (26/26), done. remote: Total 106166 (delta 21), reused 27 (delta 14), pack-reused 106125 Receiving objects: 100% (106166/106166), 24.11 MiB | 161.00 KiB/s, done. Resolving deltas: 100% (77467/77467), done. From https://github.com/Homebrew/brew * [new branch] master -> origin/master * [new tag] 0.1 -> 0.1 * [new tag] 0.2 -> 0.2 * [new tag] 0.3 -> 0.3 * [new tag] 0.4 -> 0.4 * [new tag] 0.5 -> 0.5 * [new tag] 0.6 -> 0.6 * [new tag] 0.7 -> 0.7 * [new tag] 0.7.1 -> 0.7.1 * [new tag] 0.8 -> 0.8 * [new tag] 0.8.1 -> 0.8.1 * [new tag] 0.9 -> 0.9 ... * [new tag] 1.6.1 -> 1.6.1 * [new tag] 1.6.10 -> 1.6.10 * [new tag] 1.6.11 -> 1.6.11 ... * [new tag] 1.6.8 -> 1.6.8 * [new tag] 1.6.9 -> 1.6.9 * [new tag] 1.7.0 -> 1.7.0 * [new tag] 1.7.1 -> 1.7.1 HEAD is now at dce6b875c Merge pull request #4581 from reitermarkus/non-existent-download-strategies ==> Tapping homebrew/core Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core'... remote: Counting objects: 4808, done. remote: Compressing objects: 100% (4590/4590), done. remote: Total 4808 (delta 57), reused 839 (delta 27), pack-reused 0 Receiving objects: 100% (4808/4808), 3.90 MiB | 14.00 KiB/s, done. Resolving deltas: 100% (57/57), done. Tapped 2 commands and 4593 formulae (4,849 files, 12.2MB).
    • 安装完成了。

使用saltstack自定义模块获取服务器的信息

1、查看MASTER的BASE路径,在对应的路径建立_modules文件夹,存放.py的模块

[root@v72 _modules]# cat /etc/salt/master | grep file_roots -A 5

file_roots:
base:
– /srv/salt

建立目录:

mkdir -p /srv/salt/_modules

2、在/srv/salt/_modules目录下编写python代码

[root@v72 _modules]# pwd
/srv/salt/_modules
[root@v72 _modules]# cat infos.py

!/usr/bin/env python

encoding: utf-8

from subprocess import Popen, PIPE
import os,sys
import time
def getipaddr():
p = Popen([‘hostname’,’-I’], stdout = PIPE)
ip=p.stdout.read()
return ip

def gethostname():
p = Popen([‘hostname’], stdout = PIPE)
hostname=p.stdout.read()
return hostname

def getdiskinfo():
p = Popen([‘df’,’-h’], stdout = PIPE)
disks=p.stdout.read()
return disks

def getmemoryinfo():
p = Popen([‘free’,’-m’], stdout = PIPE)
memorys=p.stdout.read()
return memorys

def getbiosinfo():
p = Popen([‘dmidecode’,’-t’,’bios’], stdout = PIPE)
bios=p.stdout.read()
return bios

def getcpu():
p = Popen([‘sar’,’-u’,’1′,’3′], stdout = PIPE)
time.sleep(3)
cpus=p.stdout.read()
return cpus

def getallinfos():
ip=”IP地址: “+getipaddr()
hostname=”主机名: “+gethostname()
disk=”磁盘信息: “+getdiskinfo()
memory=”内存信息: “+getmemoryinfo()
bios=”BIOS信息: “+getbiosinfo()
cpu=”CPU信息: “+getcpu()
return ip,hostname,disk,memory,bios,cpu

getallinfos()

3、同步模块,执行验证

[root@v72 _modules]# salt ‘*’ saltutil.sync_modules
v72:
– modules.infos
v73:
– modules.infos

运行,验证

[root@v72 _modules]# salt ‘*’ infos.getallinfos
v73:
– IP地址: 192.168.156.73 192.168.122.1
– 主机名: v73
– 磁盘信息: 文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 18G 8.0G 9.5G 46% /
devtmpfs 903M 0 903M 0% /dev
tmpfs 914M 92K 914M 1% /dev/shm
tmpfs 914M 9.1M 905M 1% /run
tmpfs 914M 0 914M 0% /sys/fs/cgroup
/dev/sda1 497M 127M 370M 26% /boot
//192.168.156.1/d$ 201G 98G 103G 49% /shared
tmpfs 183M 12K 183M 1% /run/user/42
tmpfs 183M 0 183M 0% /run/user/0
– 内存信息: total used free shared buff/cache available
Mem: 1826 389 357 9 1079 1201
Swap: 2047 0 2047
– BIOS信息: # dmidecode 2.12
SMBIOS 2.7 present.

  Handle 0x0000, DMI type 0, 24 bytes
  BIOS Information
    Vendor: Phoenix Technologies LTD
    Version: 6.00
    Release Date: 07/02/2015
    Address: 0xEA5E0
    Runtime Size: 88608 bytes
    ROM Size: 64 kB
    Characteristics:
            ISA is supported
            PCI is supported
            PC Card (PCMCIA) is supported
            PNP is supported
            APM is supported
            BIOS is upgradeable
            BIOS shadowing is allowed
            ESCD support is available
            Boot from CD is supported
            Selectable boot is supported
            EDD is supported
            Print screen service is supported (int 5h)
            8042 keyboard services are supported (int 9h)
            Serial services are supported (int 14h)
            Printer services are supported (int 17h)
            CGA/mono video services are supported (int 10h)
            ACPI is supported
            Smart battery is supported
            BIOS boot specification is supported
            Function key-initiated network boot is supported
            Targeted content distribution is supported
    BIOS Revision: 4.6
    Firmware Revision: 0.0

- CPU信息: Linux 3.10.0-229.el7.x86_64 (v73)        2019年02月22日  _x86_64_        (1 CPU)

  17时06分18秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
  17时06分19秒     all      0.00      0.00      0.00      0.00      0.00    100.00
  17时06分20秒     all      1.00      0.00      0.00      0.00      0.00     99.00
  17时06分21秒     all      0.00      0.00      0.00      0.00      0.00    100.00
  平均时间:     all      0.33      0.00      0.00      0.00      0.00     99.67

v72:
– IP地址: 192.168.156.72 192.168.122.1
– 主机名: v72
– 磁盘信息: 文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 18G 12G 5.7G 68% /
devtmpfs 903M 0 903M 0% /dev
tmpfs 914M 96K 914M 1% /dev/shm
tmpfs 914M 9.2M 905M 2% /run
tmpfs 914M 0 914M 0% /sys/fs/cgroup
/dev/sda1 497M 127M 370M 26% /boot
//192.168.156.1/d$ 201G 98G 103G 49% /shared
tmpfs 183M 12K 183M 1% /run/user/42
tmpfs 183M 0 183M 0% /run/user/0
– 内存信息: total used free shared buff/cache available
Mem: 1826 719 316 10 791 871
Swap: 2047 0 2047
– BIOS信息: # dmidecode 2.12
SMBIOS 2.7 present.

  Handle 0x0000, DMI type 0, 24 bytes
  BIOS Information
    Vendor: Phoenix Technologies LTD
    Version: 6.00
    Release Date: 07/02/2015
    Address: 0xEA5E0
    Runtime Size: 88608 bytes
    ROM Size: 64 kB
    Characteristics:
            ISA is supported
            PCI is supported
            PC Card (PCMCIA) is supported
            PNP is supported
            APM is supported
            BIOS is upgradeable
            BIOS shadowing is allowed
            ESCD support is available
            Boot from CD is supported
            Selectable boot is supported
            EDD is supported
            Print screen service is supported (int 5h)
            8042 keyboard services are supported (int 9h)
            Serial services are supported (int 14h)
            Printer services are supported (int 17h)
            CGA/mono video services are supported (int 10h)
            ACPI is supported
            Smart battery is supported
            BIOS boot specification is supported
            Function key-initiated network boot is supported
            Targeted content distribution is supported
    BIOS Revision: 4.6
    Firmware Revision: 0.0

- CPU信息: Linux 3.10.0-229.el7.x86_64 (v72)        2019年02月22日  _x86_64_        (2 CPU)

  17时06分20秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
  17时06分21秒     all      0.00      0.00      0.00      0.00      0.00    100.00
  17时06分22秒     all      0.51      0.00      0.00      0.00      0.00     99.49
  17时06分23秒     all      0.00      0.00      0.51      0.00      0.00     99.49
  平均时间:     all      0.17      0.00      0.17      0.00      0.00     99.66

加载哪一部份的信息,只需要在saltstack上面调用对应的方法就可以了

将来如果需要获取其它的信息,只需要在自定义的模块添加对应的方法,同步,再执行即可

[root@v72 _modules]# cat infos.py | grep getos -A 5
def getos():
status,output=commands.getstatusoutput(“uname -a”)
return output

注意上面的方法也和上面一样可以获取linux命令的输出,但需要先导入模块

————————————————
版权声明:本文为CSDN博主「lsysafe」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lsysafe/article/details/87882304

国产微服务网关Apache APISIX 上手

2019 年 10 月 17 日,支流科技 API 网关 APISIX 进入 Apache 开始孵化。笔者表示去搜索了一下这家公司 OpenResty 圈内顶级大牛《OpenResty 最佳实践》作者 温铭 和 王院生,这就非常有意思了

APISIX 是一个高性能、可扩展的微服务 API 网关。它是基于 Nginx 和 etcd 来实现,和传统 API 网关相比,
APISIX 作为微服务请求⽹关,通过插件提供负载平衡,⽇志记录,身份验证
等功能:

  • 动态负载均衡: ⽀持不同上游服务的动态负载均衡
  • 安全插件: 内置安全处理层,⽀持如OAuth2、ACL、CORS、动态 SSL 和
    IP 限制等
  • 流量控制插件: 速率限制,请求⼤⼩限制和响应速率限制等
  • 分析和监控插件:借助如 Prometheus,Datadog 和 Runscope 产品,完成
    API 流量的可视化、检查和监控
  • ⽇志插件:记录请求或响应⽇志,并通过 HTTP、TCP 或 UDP 等⽅式发送
    到你的系统(⽐如: StatsD, Syslog)

github: https://github.com/iresty , 可以看到相较于于 KongTraefik 从源码角度非常简洁。

安装

安装 openresty

  • 基于 OpenResty 实现的,记住 OpenResty一个基于Nginx 与Lua 的高性能Web 平台.

Windows 系统下安装

Windows 下可以使用 .msi 后缀(在下载列表中可以找到该文件,如go1.4.2.windows-amd64.msi)的安装包来安装。

下载地址:https://studygolang.com/dl

默认情况下 .msi 文件会安装在 c:\Go 目录下。 这时候c:\Go\bin 目录应该在 Path 环境变量中,环境变量中会生成一个GOROOT,内容为你的go安装目录,一般在系统盘(C:)下。

image.png

image.png

安装测试

go version

输出类似以下

go version go1.15 windows/amd64

如果没有输出信息,提示go无法识别,检查你的go是否在环境变量中,以及goroot是否有配置,这是两个东西,。
假如你已经安装过,可以直接进行新版本的安装,他会自动检测版本并提示你是否卸载旧版本。C:安装路径一般是你的C/下面,会有一个GO文件夹。

UNIX/Linux/Mac OS X, 和 FreeBSD 安装

以下介绍了在UNIX/Linux/Mac OS X, 和 FreeBSD系统下使用源码安装方法:

1、下载二进制包:go1.4.linux-amd64.tar.gz。

2、将下载的二进制包解压至 /usr/local目录。

tar -C /usr/local -xzf go1.4.linux-amd64.tar.gz

3、将 /usr/local/go/bin 目录添加至PATH环境变量:

export PATH=$PATH:/usr/local/go/bin

注意:MAC 系统下你可以使用 .pkg 结尾的安装包直接双击来完成安装,安装目录在 /usr/local/go/ 下。


数组中的最长连续子序列

描述

给定无序数组arr,返回其中最长的连续序列的长度(要求值连续,位置可以不连续,例如 3,4,5,6为连续的自然数)

示例1

输入:

[100,4,200,1,3,2]

返回值:

4

示例2

输入:

[1,1,1]

返回值:

1

备注:

1≤n≤1051 \leq n \leq 10^51≤n≤105
1≤arri≤1081 \leq arr_i \leq 10^81≤arri​≤108

题解:

import java.util.*;


public class Solution {
    /**
     * max increasing subsequence
     * @param arr int整型一维数组 the array
     * @return int整型
     */
    public int MLS (int[] arr) {
        // write code here
        Arrays.sort(arr);
        int maxCount=0;
        int count=1;
        for(int i=0;i<arr.length-1;i++){
            int cur=arr[i];
            int next=arr[i+1];
            if(cur==next)continue;
            if(next-cur==1){
                count++;
            }else{
                count=1;
            }
            if(count>maxCount)maxCount=count;
        }
        return maxCount;
    }
}

gitlab的安装与修改端口配置

一   获取安装包

gitlab的在线安装我没有尝试过,这里仅仅记录一下直接下载rpm包后的安装步骤。

rpm安装包下载:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce

我的环境是centos6,下载安装包的时候要看清;我需要进入yum/el6/目录下,找到一个rpm安装包。我选择的是11.3.0版本的;

百度云备份链接:

链接:https://pan.baidu.com/s/16Uqit9yczfV-mXyTokPM_A
提取码:tixm

二   安装依赖与rpm包

sudo yum install -y curl policycoreutils-python openssh-server cronie
sudo lokkit -s http -s ssh

sudo yum install postfix
sudo service postfix start
sudo chkconfig postfix on

以上信息的准确性,可以参考官网安装说明:https://about.gitlab.com/install/#centos-6

下面手动安装rpm包

sudo rpm -ivh gitlab-ce-11.3.0-ce.0.el6.x86_64.rpm

等待安装成功。

执行命令:

gitlab-ctl reconfigure

表示重新配置gitlab,这个命令仅仅执行一次即可。

三   修改gitlab默认端口

gitlab默认需要使用80  8080 等端口,我的centos上有使用这些端口的其他软件;所以必须更改。

步骤如下:

1. 修改 gitlab.yml

进入目录:   /var/opt/gitlab/gitlab-rails/etc

将gitlab.yml 中的host和port修改成自己需要的

复制代码
production: &base
  #
  # 1. GitLab app settings
  # ==========================

  ## GitLab settings
  gitlab:
    ## Web server settings (note: host is the FQDN, do not include http://)
    #host: gitlab.example.com
    #port: 80
    host: IP地址或者域名
    port: 设定端口号1,如8000

    https: false
复制代码

这里的端口号1 与nginx(gitlab自带的nginx,见下面2)监听的端口号 要相同,这是提供给外部浏览器访问的端口。

 

2. 修改 gitlab nginx配置

找到  /var/opt/gitlab/nginx/conf/gitlab-http.conf

它是gitlab内置的nginx的配置文件,里面可以影响到nginx真实监听端口号。要与上面的端口号1设置成一样。(位置略靠下)

server {
  #listen *:80;
  listen *: 8000;

3.  修改 unicorn.rb

此文件所在目录与gitlab.yml相同: /var/opt/gitlab/gitlab-rails/etc/unicorn.rb

# What ports/sockets to listen on, and what options for them.
#listen "127.0.0.1:8080", :tcp_nopush => true
listen "127.0.0.1:端口号2,如9080", :tcp_nopush => true

这里的端口号2 是gitlab-rails本身的端口号,gitlab-rails是gitlab内部的后台服务。

 

4. giltab-shell修改

进入目录:/var/opt/gitlab/gitlab-shell
修改:config.yml
# Url to gitlab instance. Used for api calls. Should end with a slash.
#gitlab_url: "http://127.0.0.1:8080"
gitlab_url: "http://127.0.0.1:9080"

这里设置成端口号2即可。

5. 重启gitlab

以上修改完成后,重启下,就可以访问8000端口的gitlab了。

gitlab-ctl restart

注意,不可以运行 gitlab-ctl reconfigure

这样会把上面的配置重新还原。(要想不被还原,可以不要上面5步,只修改:/etc/gitlab/gitlab.rb 这个文件,修改完后再运行  gitlab-ctl reconfigure

但是这个文件里的内容太复杂,搞的人眼花缭乱,所以我选择直接修改里面组件的配置。)

四 访问gitlab报告 502

这个有可能是gitlab正在启动,还没有完全启动成功,稍微等会再访问。如果不行,可以自己搜索,网上有很多这类问题记录。