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 )
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+=/home/user/.vim/bundle/neobundle.vim/ 8 9 " Required: 10 call neobundle#begin(expand(‘/home/user/.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 30 " You can specify revision/branch/tag. 31 NeoBundle ‘Shougo/vimshell‘, { ‘rev‘ : ‘3787e5‘ } 32 33 " Required: 34 call neobundle#end() 35 36 " Required: 37 filetype plugin indent on 38 39 " If there are uninstalled bundles found on startup, 40 " this will conveniently prompt you to install them. 41 NeoBundleCheck 42 "End NeoBundle Scripts------------------------- 43 44 let mapleader="," 45 46 nmap <silent> <leader>ev :e $MYVIMRC<cr> 47 nmap <silent> <leader>sv :so $MYVIMRC<cr> 48 nmap <silent> <leader>to :tabedit<cr> 49 nmap <silent> <leader>tn :tabnext<cr> 50 nmap <silent> <leader>tp :tabpre<cr> 51 nmap <silent> <leader>tx :tabclose<cr> 52 " ##############普通配置############### 53 set nu 54 set hlsearch 55 set autoindent 56 set softtabstop=4 57 set shiftwidth=4 58 set scrolloff=5 59 syntax on 60 syntax enable 61 set background=dark 62 colorscheme molokai 63 "colorscheme evening 64 65 " 设置注释为绿色 66 highlight Comment ctermfg=2 guifg=green 67 " 设置自动补齐窗口配色 68 highlight Pmenu guibg=lightgrey ctermbg=7 guifg=black ctermfg=8 69 highlight PmenuSel guibg=lightgrey ctermbg=1 guifg=blue ctermfg=0 70 71 72 set showcmd 73 set list 74 set listchars=tab:>-,trail:- 75 76 set whichwrap=b,s,<,>,h,l 77 set cindent 78 79 "编译快捷键 80 " map <F5> <esc>:w<cr><esc>:make<cr> 81 82 nnoremap <space> @=((foldclosed(line(‘.‘))<0)? ‘zc‘:‘zo‘) <cr> 83 set foldmethod=indent 84 85 "设置行高亮 86 set cursorline 87 hi cursorline guibg=Grey40 guifg=red term=BOLD ctermbg=0 88 89 "窗口之间的快速跳转 90 noremap <c-h> <c-w>h 91 noremap <c-j> <c-w>j 92 noremap <c-k> <c-w>k 93 noremap <c-l> <c-w>l 94 95 " ##############插件配置############### 96 " ag.vim 97 let g:ag_highlight=1 98 let g:ag_working_path_mode=‘r‘ 99 " ctrl-p 100 let g:ctrlp_map=‘<Leader>p‘ 101 let g:ctrlp_cmd=‘CtrlP‘ 102 nmap <Leader>f :CtrlPMRUFiles<CR> 103 nmap <Leader>b :CtrlPBuffer<CR> 104 let g:ctrlp_max_height = 15 105 let g:ctrlp_regexp = 1 106 let g:ctrlp_line_prefix = ‘> ‘ 107 " ag and ctrl-p apt-get install silversearcher-ag 108 let g:ctrlp_use_caching = 0 109 if executable(‘ag‘) 110 set grepprg=ag\ --nogroup\ --nocolor 111 let g:ctrlp_user_command = ‘ag %s -l --nocolor -g ""‘ 112 endif 113 114 " airline 115 "let g:airline_theme=‘papercolor‘ 116 let g:airline_theme=‘powerlineish‘ 117 "let g:airline_left_sep = ‘»‘ 118 "let g:airline_left_sep = ‘?‘ 119 "let g:airline_left_alt_sep = ‘>‘ 120 "let g:airline_right_sep = ‘«‘ 121 let g:airline_right_sep = ‘?‘ 122 let g:airline_right_alt_sep = ‘<‘ 123 "let g:airline_symbols.linenr = ‘?‘ 124 "let g:airline_symbols.linenr = ‘?‘ 125 "let g:airline_symbols.linenr = ‘¶‘ 126 "let g:airline_symbols.branch = ‘?‘ 127 "let g:airline_symbols.paste = ‘ρ‘ 128 "let g:airline_symbols.paste = ‘Þ‘ 129 "let g:airline_symbols.paste = ‘∥‘ 130 "let g:airline_symbols.whitespace = ‘Ξ‘ 131 let g:airline_section_a=airline#section#create([‘mode‘]) 132 let g:airline_section_b=airline#section#create([‘hunks‘]) 133 let g:airline_section_c=airline#section#create([‘%{getcwd()}‘,‘%f‘]) 134 let g:airline_section_x=airline#section#create([‘branch‘,‘ffenc‘]) 135 let g:airline_section_y=airline#section#create([‘‘,‘[TYPE:‘,‘filetype‘,‘]‘,‘[TIME:‘,‘%{strftime("%H:%M")}‘,‘]‘]) 136 137 " scrooloose-nerdcommenter 138 " <leader>c<space> 注释/取消注释 139 " <leader>cc // 注释 140 " <leader>cm 只用一组符号注释 141 " <leader>cA 在行尾添加注释 142 " <leader>c$ /* 注释 */ 143 " <leader>cs /* 块注释 */ 144 " <leader>cy 注释并复制 145 " <leader>ca 切换 // 和 /* */ 146 " <leader>cu 取消注释 147 " let g:NERDSpaceDelims = 1 148 let g:NERDDefaultAlign = ‘left‘ 149 150 " NerdTree 树型目录 151 autocmd vimenter * NERDTree 152 map <C-t> :NERDTreeToggle<cr> 153 let NERDTreeMinimalUI = 1 154 let NERDTreeShowHidden = 1 155 let NERDTreeShowLineNumbers=1 156 157 let g:nerdtree_tabs_open_on_console_startup = 1 158 let g:nerdtree_tabs_focus_on_files = 1 159 160 let g:NERDTreeIndicatorMapCustom = { 161 \ "Modified" : "?", 162 \ "Staged" : "?", 163 \ "Untracked" : "?", 164 \ "Renamed" : "?", 165 \ "Unmerged" : "═", 166 \ "Deleted" : "?", 167 \ "Dirty" : "?", 168 \ "Clean" : "??", 169 \ ‘Ignored‘ : ‘?‘, 170 \ "Unknown" : "?" 171 \ } 172 173 "EasyMotion 快速移动 174 let g:EasyMotion_leader_key=‘<leader><leader>‘ 175 "used: <leader><leader>{motion} 176 let g:EasyMotion_keys=‘abcdefghijklmnopqrstuvwxyz‘ 177 let g:EasyMotion_do_shade=1
运行neobundle 提供的代码后,会有一段默认的配置,下面的配置是根据我自己使用习惯的配置文件。 上述也没有什么要说的,每个人做的开发都不一样,根据每个人的系统按照自己喜欢的插件。
3. Xshell
终端连接管理工具,以前是用Putty的,后来就用了Xshell,如果是那种跟我类似的,主系统是Window的,可以安装Cmder,也是不错的。
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 免密码登录
略
所有的工具,都是在不断的使用过程中,慢慢熟悉,一开始命令很不习惯,觉得没有鼠标操作方便,但是当命令敲多了,慢慢成为条件反射,就没有什么了,反而可以提高工作效率。当然在写大量代码,我还是觉得用IDE比较方便,特别是Java语言。