物联网架构成长之路(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 )

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语言。

时间: 2024-07-29 20:15:15

物联网架构成长之路(2)-脚手架工具准备的相关文章

物联网架构成长之路(0)-目录

一.基础 [http://www.cnblogs.com/wunaozai/p/8067621.html] 物联网架构成长之路(1)-前言 [http://www.cnblogs.com/wunaozai/p/8075640.html] 物联网架构成长之路(2)-脚手架工具准备 [http://www.cnblogs.com/wunaozai/p/8082332.html] 物联网架构成长之路(3)-EMQ消息服务器了解

物联网架构成长之路(56)-SpringCloudGateway+JWT实现网关鉴权

0. 前言 结合前面两篇博客,前面博客实现了Gateway网关的路由功能.此时,如果每个微服务都需要一套帐号认证体系就没有必要了.可以在网关处进行权限认证.然后转发请求到后端服务.这样后面的微服务就可以直接调用,而不需要每个都单独一套鉴权体系.参考了Oauth2和JWT,发现基于微服务,使用JWT会更方便一些,所以准备集成JWT作为微服务架构的认证方式. [https://www.cnblogs.com/wunaozai/p/12512753.html] 物联网架构成长之路(54)-基于Naco

物联网架构成长之路(24)-Docker练习之Compose容器编排

0.前言 一开始学的之后,是想一步到位直接上Kubernetes(K8s)的,后面没想到,好像有点复杂,有些概念不是很懂.因此学习东西还是要循序渐进,慢慢来.先了解单机编排技术Docker Compose,了解一些技术细节及原理后,在入手K8s.还是不能一口吃成胖子,要多吃几口才可以.而且目前公司都是一些小项目,能用得上DockerCompose已经很不错了,还想要上K8s,估计是不现实的. 1. 安装 可以通过运行下面命令进行安装, 1 curl -L https://github.com/d

物联网架构成长之路(33)-EMQ数据存储到influxDB

一.前言 时隔一年半,技术变化特别快,学习也要跟上才行.以前写过EMQ数据转存问题,当时用了比较笨的方法,通过写插件的方式,把MQTT里面的数据发送到数据库进行存储.当时也是为了学习erlang和emq.现在随着对物联网的深入,也结合实际需求,不停的学习.下面将介绍我实验测试可行的物联网数据分析解决方案.采用的还是开源方案.通过订阅MQTT的根Topic,把所有物联网数据转存到InfluxDB时序数据库,然后通过Grafana进行图表显示.这应该是目前比较流行的方案.二.安装InfluxDB I

物联网架构成长之路(12)-物联网架构小结1

1. 说明 这一小节,也不具体讲些什么了.最近一个半月都在摸鱼,没什么事做,慢慢学习着SpringBoot和SpringCloud.下面两张图是进行的一次小结.以后随着深入,整个架构肯定是会变的.现在记录一下,每个项目成长都是有一个过程的. 原文地址:https://www.cnblogs.com/wunaozai/p/8312891.html

物联网架构成长之路(13)-SpringBoot入门

1. 前言 下载最新版的JavaEE eclipse-jee-oxygen-2-win32-x86_64.zip 安装STS插件 Window->Eclipse Marketplace -> popular 下那个 Spring Tools(aka Spring IDE and Spring Tool Suite) 然后通过STS工具创建一个新的Spring boot工程,这里就不细说了.网上资料很多,也比较简单就可以搭建起来.后面对SpringBoot也只是简单的提一下,还有说一下注意点.没

物联网架构成长之路(16)-SpringCloud从入门到吹水

1.前言 Spring Cloud 现在比较流行,版本更新也是蛮快的,网上资料也是很多.很多参考网上资料就可以学到了.这里给个 http://blog.csdn.net/forezp/article/details/70148833 2.放弃 本来还想写一篇Spring Cloud 入门环境搭建的博客, 后来想了想,还是算了,网上资料一大堆.这里就不写了. 3.吹水 下面就简单聊聊天,吹吹水算了 2018.01.18 笔记 公司网速不行,在进行Maven项目以来更新,偷偷写一些经历. 现在开始学

物联网架构成长之路(32)-SpringBoot集成MQTT客户端

一.前言 这里虽然是说MQTT客户端.其实对于服务器来说,这里的一个具有超级权限的MQTT客户端,就可以做很多事情.比如手机APP或者网页或者第三方服务需要发送数据到设备,但是这些又不是设备,又不能让他们连到MQTT.那么就可以通过HTTP请求业务服务器.然后由业务服务器利用这个MQTT客户端进行发送数据. 还有,之前好多人问我,怎么保存这些物联网数据,真的要像前面的博客那样,要自己写插件吗?特别麻烦的啊.这里给出的结论是不需要.保存数据,除了写EMQ插件,还可以在EMQ的规则引擎上进行配置We

物联网架构成长之路(35)-利用Netty解析物联网自定义协议

一.前言 前面博客大部分介绍了基于EMQ中间件,通信协议使用的是MQTT,而传输的数据为纯文本数据,采用JSON格式.这种方式,大部分一看就知道是熟悉Web开发.软件开发的人喜欢用的方式.由于我也是做web软件开发的,也是比较喜欢这种方式.阿里的物联网平台,也是推荐这种方式.但是,但是做惯硬件开发,嵌入式开发就比较喜欢用裸TCP-Socket连接.采用的是二进制协议.基于此大部分应用场合为了兼容旧设备,就需要单独开发一个TCP服务器的网关.这里使用以前学过的,也是比较流行的Netty框架. 话不