物聯網架構成長之路(2)-腳手架工具准備


0. 說明

  開始搞服務器了,總要准備幾個專業一點的Linux工具,不然給人看起來不是很專業的樣子。這一小節,只是簡單的舉例幾個小工具,主要是保存一些配置文件,方便以后查看。后期心情好的話,就在以后遇到好的工具,在這里進行更新。

1. Oh-my-zsh

  一般搞服務器都是在Linux上的,默認的shell不是很好用,自己一點一點的配置又有點麻煩,那就直接用這個現成的,安裝后就可以使用了,這段時間用起來還算比較方便的。

  https://github.com/robbyrussell/oh-my-zsh 具體的按照Github的說明進行安裝就可以了。

  里面我修改了幾個常用的配置,遇到問題,上網搜就有了。

1 ZSH_THEME="ys"
2 plugins=(
3 git
4 z
5 docker
6 colored-man-pages
7 autojump
8 )

 

Fix Home/End Key
1 # ~/.zshrc
2 # Home
3 bindkey '\e[1~' beginning-of-line
4 # End
5 bindkey '\e[4~' end-of-line

 

2. Vim

  服務器開發、運維基本上都是遠程連接的,沒有GUI界面,不會個Vim,真不好操作。默認的vim,看起來跟記事本一樣。所以需要增加一些插件。

  https://github.com/Shougo/neobundle.vim 具體按照Github的說明進行按照。 如果有歷史遺留下的插件,直接 rm -rf ~/.vim 。重新安裝。

 

  1 "NeoBundle Scripts-----------------------------
  2 if &compatible
  3     set nocompatible               " Be iMproved
  4 endif
  5 
  6 " Required:
  7 set runtimepath+=~/.vim/bundle/neobundle.vim/
  8 
  9 " Required:
 10 call neobundle#begin(expand('~/.vim/bundle'))
 11 
 12 " Let NeoBundle manage NeoBundle
 13 " Required:
 14 NeoBundleFetch 'Shougo/neobundle.vim'
 15 
 16 " Add or remove your Bundles here:
 17 NeoBundle 'Shougo/neosnippet.vim'
 18 NeoBundle 'Shougo/neosnippet-snippets'
 19 NeoBundle 'tpope/vim-fugitive'
 20 NeoBundle 'rking/ag.vim'
 21 NeoBundle 'ctrlpvim/ctrlp.vim'
 22 NeoBundle 'flazz/vim-colorschemes'
 23 NeoBundle 'vim-airline/vim-airline'
 24 NeoBundle 'vim-airline/vim-airline-themes'
 25 NeoBundle 'scrooloose/nerdtree'
 26 NeoBundle 'jistr/vim-nerdtree-tabs'
 27 NeoBundle 'scrooloose/nerdcommenter'
 28 NeoBundle 'easymotion/vim-easymotion'
 29 NeoBundle 'ekalinin/Dockerfile.vim'
 30 
 31 " You can specify revision/branch/tag.
 32 NeoBundle 'Shougo/vimshell', { 'rev' : '3787e5' }
 33 
 34 " Required:
 35 call neobundle#end()
 36 
 37 " Required:
 38 filetype plugin indent on
 39 
 40 " If there are uninstalled bundles found on startup,
 41 " this will conveniently prompt you to install them.
 42 NeoBundleCheck
 43 "End NeoBundle Scripts-------------------------
 44 
 45 let mapleader=","
 46 
 47 nmap <silent> <leader>ev :e $MYVIMRC<cr>
 48 nmap <silent> <leader>sv :so $MYVIMRC<cr>
 49 nmap <silent> <leader>to :tabedit<cr>
 50 nmap <silent> <leader>tn :tabnext<cr>
 51 nmap <silent> <leader>tp :tabpre<cr>
 52 nmap <silent> <leader>tx :tabclose<cr>
 53 " ##############普通配置############### 
 54 set nu
 55 set hlsearch
 56 set incsearch
 57 set autoindent
 58 set softtabstop=4
 59 set shiftwidth=4
 60 set scrolloff=5
 61 syntax on
 62 syntax enable
 63 set background=dark
 64 colorscheme molokai
 65 "colorscheme evening
 66 
 67 " 設置注釋為綠色
 68 highlight Comment ctermfg=2 guifg=green
 69 " 設置自動補齊窗口配色
 70 highlight Pmenu guibg=lightgrey ctermbg=7 guifg=black ctermfg=8
 71 highlight PmenuSel guibg=lightgrey ctermbg=1 guifg=blue ctermfg=0
 72 
 73 
 74 set showcmd
 75 set list
 76 set listchars=tab:>-,trail:-
 77 
 78 set whichwrap=b,s,<,>,h,l
 79 set cindent
 80 
 81 "編譯快捷鍵
 82 map <F5> <esc>:w<cr><esc>:make clean && make && make copy<cr>
 83 
 84 nnoremap <space> @=((foldclosed(line('.'))<0)? 'zc':'zo') <cr>
 85 set foldmethod=indent
 86 
 87 "設置行高亮
 88 set cursorline
 89 hi cursorline guibg=Grey40 guifg=red term=BOLD ctermbg=0
 90 
 91 "窗口之間的快速跳轉
 92 noremap <c-h> <c-w>h
 93 noremap <c-j> <c-w>j
 94 noremap <c-k> <c-w>k
 95 noremap <c-l> <c-w>l
 96 
 97 " ##############插件配置###############
 98 " ag.vim
 99 let g:ag_highlight=1
100 let g:ag_working_path_mode='r'
101 " ctrl-p
102 let g:ctrlp_map='<Leader>p'
103 let g:ctrlp_cmd='CtrlP'
104 nmap <Leader>f :CtrlPMRUFiles<CR>
105 nmap <Leader>b :CtrlPBuffer<CR>
106 let g:ctrlp_max_height = 15
107 let g:ctrlp_regexp = 1
108 let g:ctrlp_line_prefix = '> '
109 " ag and ctrl-p  apt-get install silversearcher-ag
110 let g:ctrlp_use_caching = 0
111 if executable('ag')
112     set grepprg=ag\ --nogroup\ --nocolor
113     let g:ctrlp_user_command = 'ag %s -l --nocolor -g ""'
114 endif
115 
116 " airline
117 "let g:airline_theme='papercolor'
118 let g:airline_theme='powerlineish'
119 "let g:airline_left_sep = '»'
120 "let g:airline_left_sep = '▶'
121 "let g:airline_left_alt_sep = '>'
122 "let g:airline_right_sep = '«'
123 let g:airline_right_sep = ''
124 let g:airline_right_alt_sep = '<'
125 "let g:airline_symbols.linenr = '␊'
126 "let g:airline_symbols.linenr = '␤'
127 "let g:airline_symbols.linenr = '¶'
128 "let g:airline_symbols.branch = '⎇'
129 "let g:airline_symbols.paste = 'ρ'
130 "let g:airline_symbols.paste = 'Þ'
131 "let g:airline_symbols.paste = '∥'
132 "let g:airline_symbols.whitespace = 'Ξ'
133 let g:airline_section_a=airline#section#create(['mode'])
134 let g:airline_section_b=airline#section#create(['hunks'])
135 let g:airline_section_c=airline#section#create(['%{getcwd()}','%f'])
136 let g:airline_section_x=airline#section#create(['branch','ffenc'])
137 let g:airline_section_y=airline#section#create(['','[TYPE:','filetype',']','[TIME:','%{strftime("%H:%M")}',']'])
138 
139 " scrooloose-nerdcommenter 
140 " <leader>c<space> 注釋/取消注釋
141 " <leader>cc // 注釋
142 " <leader>cm 只用一組符號注釋
143 " <leader>cA 在行尾添加注釋
144 " <leader>c$ /* 注釋 */
145 " <leader>cs /* 塊注釋 */
146 " <leader>cy 注釋並復制
147 " <leader>ca 切換 // 和 /* */
148 " <leader>cu 取消注釋
149 " let g:NERDSpaceDelims = 1
150 let g:NERDDefaultAlign = 'left'
151 
152 " NerdTree 樹型目錄
153 autocmd vimenter * NERDTree
154 map <C-t> :NERDTreeToggle<cr>
155 let NERDTreeMinimalUI = 1
156 let NERDTreeShowHidden = 1
157 let NERDTreeShowLineNumbers=1
158 
159 let g:nerdtree_tabs_open_on_console_startup = 1
160 let g:nerdtree_tabs_focus_on_files = 1
161 
162 let g:NERDTreeIndicatorMapCustom = {
163             \ "Modified"  : "",
164             \ "Staged"    : "",
165             \ "Untracked" : "",
166             \ "Renamed"   : "",
167             \ "Unmerged"  : "",
168             \ "Deleted"   : "",
169             \ "Dirty"     : "",
170             \ "Clean"     : "✔︎",
171             \ 'Ignored'   : '',
172             \ "Unknown"   : "?"
173             \ }
174 
175 "EasyMotion 快速移動
176 let g:EasyMotion_leader_key='<leader><leader>'
177 "used: <leader><leader>{motion}
178 let g:EasyMotion_keys='abcdefghijklmnopqrstuvwxyz'
179 let g:EasyMotion_do_shade=1

  運行neobundle 提供的代碼后,會有一段默認的配置,下面的配置是根據我自己使用習慣的配置文件。 上述也沒有什么要說的,每個人做的開發都不一樣,根據每個人的系統按照自己喜歡的插件。

3. Xshell

  終端連接管理工具,以前是用Putty的,后來就用了Xshell,如果是那種跟我類似的,主系統是Window的,可以安裝Cmder,也是不錯的。

  發現新世界大門, 發現 MobaXterm 這個工具更強大,還支持X11,RDP等等,還自帶綠色版. https://mobaxterm.mobatek.net/

4. tmux

  一般通過ssh連接到服務器,就會面臨ssh多開的情況,如果用鼠標進行多開,就會覺得不方便,有時候還會有ssh分屏需求,這個時候就需要tmux這個工具了。下面是一些自己的配置 ~/.tmux.conf

 1 set -g default-terminal "screen-256color"
 2 set -g display-time 2500
 3 set -g base-index 1
 4 set -g pane-base-index 1
 5 #setw -g mouse-resize-pane on
 6 #setw -g mouse-select-window on
 7 #setw -g mode-mouse on
 8 
 9 
10 bind r source-file ~/.tmux.conf \; display "Reloaded!"
11 
12 #快速選擇面板
13 bind-key k select-pane -U
14 bind-key j select-pane -D
15 bind-key h select-pane -L
16 bind-key l select-pane -R
17 
18 #分割pane(Shell)
19 unbind '"'
20 bind - splitw -v
21 unbind %
22 bind | splitw -h
23 
24 bind -r ^k resizep -U 10
25 bind -r ^j resizep -D 10
26 bind -r ^h resizep -L 10
27 bind -r ^l resizep -R 10
28 
29 set -g status-utf8 on
30 set -g status-interval 1
31 set -g status-keys vi
32 
33 
34 # 狀態欄
35 # 顏色
36 set -g status-bg black
37 set -g status-fg white
38 
39 # 對齊方式
40 set-option -g status-justify centre
41 
42 # 左下角
43 set-option -g status-left '#[bg=black,fg=green][#[fg=cyan]#S#[fg=green]]'
44 set-option -g status-left-length 20
45 
46 # 窗口列表
47 setw -g automatic-rename on
48 set-window-option -g window-status-format '#[dim]#I:#[default]#W#[fg=grey,dim]'
49 set-window-option -g window-status-current-format '#[fg=cyan,bold]#I#[fg=blue]:#[fg=cyan]#W#[fg=dim]'
50 
51 # 右下角
52 set -g status-right '#[fg=green][#[fg=cyan]%Y-%m-%d %H:%M#[fg=green]]'

  

  弄一張圖片裝13一波。

5. frp

  這個是內網穿透工具。需要外網服務器進行轉發。做過服務器運維的都知道,有時候會在迫不得已的情況下,在已下班回到家后,需要查看一下公司內網的一些數據,這個時候,就需要這樣的一個工具來進行連接了。

  https://github.com/fatedier/frp 

  https://github.com/fatedier/frp/releases

  在上面的Releases頁面下載已經編譯后的程序,我這里是在阿里雲上運行

  服務器使用默認配置,然后直接運行下面

1 ./frps -c ./frps.ini

  

  客戶端,需要修改對應的server_addr

 1 # user @ user-B85M-D3V in ~/workspace/tools/frp_0.14.1_linux_amd64 [19:53:42] 
 2 $ ls
 3 frpc  frpc_full.ini  frpc.ini  frps  frps_full.ini  frps.ini  LICENSE
 4 
 5 # user @ user-B85M-D3V in ~/workspace/tools/frp_0.14.1_linux_amd64 [19:53:43] 
 6 $ cat frpc.ini 
 7 [common]
 8 server_addr = **這里是阿里雲主機IP或已備案域名** 9 server_port = 7000
10 
11 [ssh]
12 type = tcp
13 local_ip = 127.0.0.1
14 local_port = 22
15 remote_port = 6000
16 
17 # user @ user-B85M-D3V in ~/workspace/tools/frp_0.14.1_linux_amd64 [19:53:47] 
18 $ 

  啟動

1 # user @ user-B85M-D3V in ~/workspace/tools/frp_0.14.1_linux_amd64 [18:56:21] 
2 $ ./frpc -c frpc.ini 
3 2017/12/20 18:56:29 [I] [control.go:277] [eb4f2ddc8d94a5ea] login to server success, get run id [eb4f2ddc8d94a5ea], server udp port [0]
4 2017/12/20 18:56:29 [I] [control.go:412] [eb4f2ddc8d94a5ea] [ssh] start proxy success

  啟動后,這樣就完成了。然后用第三台電腦,回到家后,連接到阿里雲的6000端口,使用公司電腦的帳號密碼進行登錄了。

6. synergy

  可能有人跟我一樣,有兩台電腦以上,都是帶界面的那種,然后就需要兩套以上的鍵盤和鼠標。這個時候,需要用到這個工具,這個工具可以使用一套鍵盤來切換控制,很方便,最新版收費,有些舊版本是不收費的。

  具體的配置就不詳細說了。很簡單,不懂上網找資料。(1. Window、Linux通用。2. 通過快捷鍵進行切換)

7. autohotkey

  這個舊版本存在一個Bug(http://www.prjorgensen.com/2012/05/29/right-shift-broken-in-synergy/),就是當按下右邊的Shift時,會觸發,但是左邊不會,可以通過這個插件解決。

  同時也推薦這個插件,在Window上還是很方便自定義一些快捷操作。

1 #MaxHotkeysPerInterval 9999999 ; keep the alert popup from showing
2 #InstallKeybdHook
3 
4 #NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
5 SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
6 SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
7 
8 RShift::LShift

  ahk后綴,可以編譯成exe,也可以直接使用。

8. ShadowSocks

  略,自己找

9. SSH 免密碼登錄

  略

10. 修改github

  vim /etc/hosts

  192.30.253.112 www.github.com
  192.30.253.112 github.com

  dns 清理緩存  service nscd restart

  http://tool.chinaz.com/dns

  所有的工具,都是在不斷的使用過程中,慢慢熟悉,一開始命令很不習慣,覺得沒有鼠標操作方便,但是當命令敲多了,慢慢成為條件反射,就沒有什么了,反而可以提高工作效率。當然在寫大量代碼,我還是覺得用IDE比較方便,特別是Java語言。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM