Linux

解決,Docker ERROR: Bad response form Docker engine

在Mac安裝新版本 OS 之後,出現了 docker-compose 無法正常 up 的情況

解決方式:

開啟 docker premerence

點選 Reset > Reset to factory default

接著需要重新登入 Docker

再次啟動之後,再透過 up 重新載入 images ,完成啟動

完成

Continue Reading

MacOS 升級後,出現的 xcrun: error: invalid active developer path (/Library/...), missing xcrun at: /Library/Developer/.../bin/xcrun 錯誤

最近Mac升級了 OS 之後

git 使用時會出現錯誤訊息

xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun

解決方法:

重裝 xcode

xcode-select --install

問題應該就會解決

如果還是不行,可以試試

sudo xcode-select -switch /

Continue Reading

阿里雲, mac iterm2 ssh 登入

直接透過 ssh 最基本的連線方式,連接到阿里雲

首先,取得阿里雲實例的公網IP

然後透過 ssh 直接進行連線,及輸入密碼

Continue Reading

CentOS 遠程建立 Docker & Docker-compose

添加 yum

yum install epel-release –y
yum clean all
yum list

移除舊版,安裝新版本

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine

確認移除

docker info

安裝必要的 repository

sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

使用 stable repository

sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

啟用 edge (可自行決定是否啟用)

sudo yum-config-manager --enable docker-ce-edge

(若不想啟用 edge,也可以直接關閉):

sudo yum-config-manager --disable docker-ce-edge

安裝新版本

sudo yum install docker-ce

檢查安裝結果

docker info

啟動/關閉

sudo systemctl start docker     #運行Docker守護進程
sudo systemctl stop docker      #停止Docker守護進程
sudo systemctl restart docker   #重啟Docker守護進程

安裝 Docker-compose

sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

添加權限

Continue Reading

如何將主 DNS子網域point到另一個網域子資料夾

設定主網域指向 B 網域

在主網域的 DNS A-record ( 如果用 IPv6 則設定 AAAA-record ) 指向到另一個網域的IP

注意,DNS 只能指向 IP ,無法指向該IP的子資料夾

另一個網域的主伺服器設定請求轉導

當主 DNS point 到另一個子網域後,另一個子網域本身應該要 point 到一台主機

則需要在這一台主機進行設定 Virtual hosting

來對於子網域的 redirect/equate 指向子資料夾的部分,

例如,由 subdoname.A.com 請求過來時,會透過這個方式: ${DocumentRoot of B.com}/folder ,會提供 folder 內容

https://vlemon.com/blog/google-cloud-platform/how-to-create-sub-domain-in-google-cloud-compute-engine/

Continue Reading

DNS Resource Record (RR)

DNS Server

負責處理 DNS 相關服務

Zone File

每一個域名都會有相對應的檔案,稱為區域檔案(Zone File),每一個 Zone File 都可以各自設定類型(Resource Record, RR),底下則介紹一些 RR 及相關用法

SOA - Start Of Authority

在 zone file 一開始會進行 SOA 定義,

在 SOA 描述 name server, version … 等,並且指定要授權的主機及管理者信箱

Continue Reading

gcloud SDK 安裝及建立 google repository

下載 gcp sdk

https://cloud.google.com/sdk/docs/

下載 macOS 64 位元 (x86_64)

Continue Reading

Linux 命令-小記

簡單紀錄,需要用的一些指令

取得 linux 版本

查看核心 linux 版本,如果是 CentOS ,會看到 Red Hat 相關資訊,因為 CentOS 是基於 RH

cat /proc/version

Continue Reading

GCP 建立 SSH 連線登入VM方式

進入 GCP dashboard

查看VM

右邊選單> Compute Engine

這裡面會列出 VM 執行個體

Continue Reading

Mac $PATH 環境變量設置及查詢

將 installer 變數放在 PATH 環境變數中

就能讓我們直接在 bash 直接下達 installer 的指令

這裏介紹 Mac PATH 環境變數的設置方式

Continue Reading

Laravel npm install dev 出現 cross-env 錯誤解法

在使用 Laravel 裡面的 Vue Components 時,會需要使用到編譯 vue js 的功能

例如,修改 ExampleComponent.vue 之後,要執行以下語法才會將修改編譯到 app.js

npm run dev

Laravel 在 mac 或 linux 環境下,可能會出現 cross-env 相關錯誤訊息

Continue Reading

Supervisor 介紹與使用方式

Supervisor 是由 python 所寫的一套進程管理系統,可以監控指定的程式,當程式崩潰停止執行時,將程式重啟

Supervisor 有分成 (1) server 主程式 與 (2) client process

(1) server 主程式: 是由 supervisor 執行 supervisor.conf 設定檔所啟動

(2) client process: 則由 supervisorctl 來控制 process

在運行過程,是以C/S模式來運行,也就是由 client process (supervisorctl) 將守護進程的訊息傳送給 server 主程式(supervisord),開始啟用守護進程服務。

一般操作設定 supervisor 都會建議在 root 權限下進行,

Continue Reading

Vim 常用指令

Vim 常用指令

底下列出一些常用的 Vim 指令

Continue Reading

DNS TTL 選擇時間長短 ,差別在哪

在設定 DNS 時,選完類型 (A、CNAME、MX…)、主機名稱 (@、subdomainname、service..)、指向(@、IP或網域)

接下來就會看到 TTL 包含了 1/2小時、1小時、12小時、1天、1周…

接下來會說明 TTL 是甚麼? 以及DNS TTL 選擇時間長短 ,差別在哪

TTL ( Time to Live, 存留時間) 是用來記錄 DNS 有效時間的參數值

Continue Reading

Heroku ClearDB database (MySQL) 連線方式 (sequel pro) 筆記

Heroku 的 Add on 擴充功能,提供了資料庫的項目

在 MySQL 會選擇 “ClearDB MySQL :: Database” 這個 AddOn

這項服務是免費的,但是必須要先填寫信用卡資料,才能完成啟用

啟用後,就能在 local cli 登入 heroku

接著執行

heroku config | grep CLEARDB_DATABASE_URL

或者

Continue Reading

Swoole 與傳統 PHP-FPM 差異

在swoole 官方介紹到運作原理時,就有針對 swoole 運作方式與 PHP-FPM 的差異進行比較

傳統 PHP-FPM 是基於 PHP Server 來解析

而 Swoole 則是用 C 所編譯的 PHP 擴充,可以直接透過 CLI mode 與 server 溝通

這一點差異就讓 swoole 能做到傳統 php model 無法達成的事情

讓 PHP 開發者可寫出高效能、可拓展的程式

並且可以直接設計 no-blocking I/O 程式,以及與底層 linux kernel 溝通

其中包括幾點:

  • swoole 可以充分運用 CPU 核心資源,用來分配 worker 任務
  • swoole 可以直接支援 websocker server 與 TCP/UDP server 長連結
  • 可以直接與多種 server-side 協定進行溝通
  • 可以直接管理及重複使用 memory 中的狀態

Continue Reading

netstat 指令小記

在 Linux 建構服務時,通常遇到問題除了查詢log 之外,大多數還會確認連線是否正常,port是否有打通之類

Linux 命令列的 netstat 可以查詢到各種網路相關訊息

當我們要檢測 socket、TCP、UDP、IP、ethernet等各種連線,都可以用它來查詢

支援一般權限,以及 IPv4, IPv6

這裡筆記方式記錄一些用法

搭配 watch 監控現有連線

watch -d -n0 "netstat | grep ESTABLISHED"

以下可能是 CentOS的環境使用:

列出完整的 URL 位址

netstat -tup -W

這個指令可以將所有連線的 IP 位址列出來,並依照每個 IP 位址的連線數排序

netstat -an | grep ESTABLISHED | awk '/^tcp/ {print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr

用 awk 分析連線 這個指令可以分析 Apache 的連線,列出每個 IP 位址的連線數

sudo netstat -anpt | grep http | grep ESTABLISHED | awk -F "[ :]*" '{print $4}' | uniq -c

這個指令可以將所有連線的 IP 位址列出來,並依照每個 IP 位址的連線數排序.

Continue Reading

wrk - 輕巧 http benchmark 工具,處理簡易的HTTP 性能測試

wrk 是用C語言寫的一套http benchmark 工具

可以幫助我們處理簡易的HTTP 性能測試

Continue Reading

如何關閉mac預設 apache 啟動執行

關閉MAC本地 apache

MAC系統會自帶 apache, 在這裡要先將它關閉

暫停apache

sudo apachectl -k stop

關閉開機啟動

sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist

Continue Reading

Laravel - Sublime Text3 搭配 SFTP 連線管理 Homestead

安裝 sublime text sftp

shift+command+p > Package Control:Install Package > sftp

開啟設定檔

File>SFTP/FTP/Setup Server

這時會開啟一個json格式的設定檔案

查看 vagant ssh-config

首先,先查看vagant ssh-config

$ vagrant ssh-config
Host homestead-7
  HostName 127.0.0.1
  User vagrant
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile /Users/liaoxiangru/Homestead/.vagrant/machines/homestead-7/virtualbox/private_key
  IdentitiesOnly yes
  LogLevel FATAL
  ForwardAgent yes

SFTP CONFIG 檔案

設定 Sftp config 檔案,填寫對應資訊

例如:

{
    // The tab key will cycle through the settings when first created
    // Visit http://wbond.net/sublime_packages/sftp/settings for help
    
    // sftp, ftp or ftps
    "type": "sftp",

    "sync_down_on_open": true,
    "sync_same_age": true,
    
    "host": "127.0.0.1",
    "user": "vagrant",
    //"password": "password",
    "port": "2222",
    
    "remote_path": "/home/vagrant/code",
    //"file_permissions": "664",
    //"dir_permissions": "775",
    
    //"extra_list_connections": 0,

    "connect_timeout": 30,
    //"keepalive": 120,
    //"ftp_passive_mode": true,
    //"ftp_obey_passive_host": false,
    "ssh_key_file": "~/.ssh/id_rsa",
    //"sftp_flags": ["-F", "/path/to/ssh_config"],
    
    //"preserve_modification_times": false,
    //"remote_time_offset_in_hours": 0,
    "remote_encoding": "utf-8",
    //"remote_locale": "C",
    //"allow_config_upload": false,
}

接著存擋為 sftp-config.json

Continue Reading