作者:Chancel, 更新:2019 Jun 14, 字数:15363, 已阅:966
一个技术工程师,怎么能没有自己的一台服务器呢?独立服务器当然更好,虚拟服务器也是可以选择的,虚拟主机就emmmm...
虚拟专用服务器(英语:Virtual private server,缩写为 VPS),是将一台服务器分割成多个虚拟专享服务器的服务。实现VPS的技术分为容器技术和虚拟机技术 。在容器或虚拟机中,每个VPS都可分配独立公网IP地址、独立操作系统、实现不同VPS间磁盘空间、内存、CPU资源、进程和系统配置的隔离,为用户和应用程序模拟出“独占”使用计算资源的体验。VPS可以像独立服务器一样,重装操作系统,安装程序,单独重启服务器。 -- 《维基百科》
一句话概括VPS:一台拥有公网IP且能7x24小时运行的电脑
VPS是虚拟专用服务器,那么采用什么虚拟技术就决定其能做什么不能做什么(例如OpenVZ就安装不了Windows)
OpenVZ | KVM | XEN | Hyper-V | |
---|---|---|---|---|
母平台 | Linux | Linux | Linux | Windows |
不可超售资源 | 全部 | 内存硬盘 | 内存硬盘 | 内存 |
价格 | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ |
特点 | 无法涉及内核操作 | 全功能虚拟化架构 | 半虚拟化/全虚拟化 | Windows虚拟化产品 |
VPS选购方面,大致分为国内国外,国外细分为什么服务商的问题,国外服务商现在大部分都支持了支付宝/微信支付,购买很方便,下面列出图比较一下差异
差异区分
国内 | 国外 | |
---|---|---|
IP | 国内 | 国外 |
实名 | 绝大部分要实名 | 不用实名 |
带宽 | 多以限速,例如1Mpbs/3Mpbs/5Mpbs,带宽越高越贵 | 多以限量(香港例外),例如500g/月 |
延迟 | 50ms以下 | cn2路线200ms以下,非cn2路线200ms以上 |
发票 | 支持 | 多不支持 |
稳定 | 强 | 弱 |
工单 | 中文,响应速度很快 | 多英文,响应速度24小时内 |
科学爱国 | 不能 | 能 |
价格 | 均价>50/月 | 不等,有非常便宜的,例如99/年的 |
国外老牌VPS提供商,这里只列出3家名气大的VPS服务商(服务也稳定)如需购买,请先搜寻相关资料 国外VPS服务商一般都有优惠码和网络评测地址,先根据现有的VPS测试到你所在地的network status,再用优惠码购买
VPS提供商 | 简介 |
---|---|
Linode | 大名鼎鼎的老牌VPS提供商 |
Vultr | Vultr作为全球最大的游戏主机提供商 |
BandwagonHost | 低价VPS主机产品 |
国内VPS服务商
VPS提供商 | 简介 |
---|---|
阿里云 | 目前国内最大的云解决方案提供商 |
腾讯云 | 腾讯系云解决方案提供商 |
我长期使用Linux主机/Windows主机,对于这两台机器最大的误解我觉得无外乎以下两点
对于技术工程师来讲,Linux几乎是必要掌握的,哪怕是前端工程师,一个有追求的技术人员应该对所有的操作系统都保持兴趣。 虽不至于说要所有操作系统都要了解(精力有限),但有实践的机会肯定是不会放过的。就我使用的经验来看,在稳定性表现上,两者基本没有差别,宕机大部分情况下是我作死导致,而所提供服务出现问题大部分都是网络波动。 几乎没有出现过Windows主机比Linux主机更多莫名其妙的宕机情况。 操作性上,现在且不说有各种面板提供傻瓜化般操作Linux主机,实际上大部分情况下只是安装Nginx/Apache/MySQL这些软件,需要掌握的指令是很少的(常用的也就几个),并没有那么恐怖,而恰恰在Windows下,搭建这些反而是非常麻烦的(当然Windows下也有诸如xampp的优秀集成软件),无论是自编译Nginx、还是gcc+或者apache配置,Windows都要考虑字符编码、复杂的防火墙配置、配置文件位置的存放等问题,系统环境配置也很麻烦。
对于选择Linux还是Windows,要看具体用途,但总觉得如果是通用情况下(即Windows跟Linux均能部署你需要的软件)Linux显然更少折腾,选择哪一个,请切实的考虑软件环境再做选择(不过话说回来,VPS提供Windows还真不多)
如果你很喜欢折腾各种开源Web产品,Linux更有优势一些,因为很多开源产品都是基于Linux做服务端
在服务商处购买VPS之后,一般会有控制面板,通常在VPS的页面里即可打开,较少情况会在邮箱处告知访问地址与管理账户信息 Linux使用SSH远程访问,Windows使用远程桌面,相关资料太过冗长此处不列出,知识也较为简单与基础,可自行搜索关键词 LInux SSH 与 Windows 远程桌面 如果是有稳定用途的VPS要千万注意安全设置,关于Linux的安全设置可参考我之前的关于VPS服务器安全加固的文章Linux VPS安全设置(CentOS) Or 站内搜索关键词 VPS
安全防护要考虑以下最基础的四点
VPS安全很重要,性能监控是VPS安全指标之一,学会如何监控VPS的性能对保持7x24小时运行的服务器很重要,
Notes:对于省事的人来说,这里也可以直接使用宝塔面板之类的第三方集成工具,他们的性能监控也做的很棒
这里重点说说Linux的,Windows的VPS很少见,而且有的话查询硬件信息的方法太多了,监控更简单任务管理器/资源管理器就完事了
CPU信息查询
root@vps29981042:~# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 0
Vendor ID: GenuineIntel
CPU family: 6
Model: 62
Model name: Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
Stepping: 4
CPU MHz: 2900.085
BogoMIPS: 4999.84
Virtualization: VT-x
Hypervisor vendor: Parallels
Virtualization type: container
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu cpuid_faulting pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm epb ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms xsaveopt dtherm ida arat pln pts spec_ctrl intel_stibp flush_l1d
root@vps29981042:~# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 62
model name : Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
stepping : 4
microcode : 0x42e
cpu MHz : 2899.932
cache size : 25600 KB
physical id : 0
siblings : 10
core id : 0
cpu cores : 10
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu cpuid_faulting pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm epb ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms xsaveopt dtherm ida arat pln pts spec_ctrl intel_stibp flush_l1d
bogomips : 4999.84
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual
power management:
内存查看
使用free -m来查询
root@vps29981042:~# free -m
total used free shared buff/cache available
Mem: 1024 85 503 7 435 918
Swap: 512 0 512
硬盘查看
使用df -h
root@vps29981042:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/ploop44353p1 30G 1.5G 27G 6% /
none 512M 0 512M 0% /sys/fs/cgroup
none 512M 0 512M 0% /dev
tmpfs 512M 0 512M 0% /dev/shm
tmpfs 512M 7.7M 505M 2% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
none 512M 0 512M 0% /run/shm
tmpfs 103M 0 103M 0% /run/user/0
第三方工具查看
首先安装inxi,然后使用inxi -Fx
root@vps29981042:~# inxi -Fx
System: Host: vps29981042.hosteons.com Kernel: 4.4.0 x86_64 (64 bit gcc: 4.8.5) Console: tty 0
Distro: Ubuntu 16.04 xenial
Machine: No /sys/class/dmi; using dmidecode: unknown error occured
CPU: Penta core Intel Xeon E5-2670 v2 (-HT-MCP-) cache: 25600 KB
flags: (lm nx sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx) bmips: 24999 speed: 2899 MHz (max)
Graphics: Card: Failed to Detect Video Card!
Display Server: N/A driver: N/A tty size: 120x50 Advanced Data: N/A for root out of X
Network: Card: Failed to Detect Network Card!
Partition: ID-1: / size: 30G used: 1.6G (6%) fs: ext4 dev: /dev/ploop44353p1
ID-2: swap-1 size: 0.54GB used: 0.00GB (0%) fs: swap dev: /dev/null
Sensors: None detected - is lm-sensors installed and configured?
Info: Processes: 39 Uptime: 1 day Memory: 129.0/1024.0MB Init: systemd runlevel: 5 Gcc sys: 5.4.0
Client: Shell (bash 4.3.481) inxi: 2.2.35
glances 是必须要介绍的一款Linux底下很棒的性能监控软件!他可以为你提供以下数据
首先安装glances,然后输入glances,就可以看到很多信息! 对于新手,也无需担心,glances已经通过颜色来表明危险程度,你只需要关心绿色以外的数据,尤其是红色的数据!
每次监控Linux性能都需要SSH到Linux服务器内才能看这一点都不Cool,linux-dash为此而来
项目Github:https://github.com/afaqurk/linux-dash 项目Demo:https://afaqurk.github.io/linux-dash/
安装方法
## 1. clone the repo
git clone --depth 1 https://github.com/afaqurk/linux-dash.git
## 2. go to the cloned directory
cd linux-dash/app/server
## 3. Start the server (on port 80 by default; may require sudo).
python index.py
然后打开你的80端口查看吧!
VPS用处还是很多的,这里举例子说明我自己是如何使用VPS来提高工作效率的,下面的工具都有简单的介绍安装(Linux)
Notes: 记得部署下面的软件时记开放相关防火墙端口!
FPR工具:https://github.com/fatedier/frp
介绍:国内大部分宽带都是没有公网IP的(否则为什么要买服务器..),但VPS大部分性能羸弱,如果要部署复杂的应用很多时候都担负不起,这个时候我们可以利用公网VPS来做端口转发,FRP就是为这个而准备的。
下面以暴露我内网的路由器为例子。
服务端部署
下载FRP最新服务端(懒得点开Github的懒人专用链接_Linux_amd64专用包)
解压压缩包,进入压缩包目录,创建frps.ini文件
[common]
bind_addr = 0.0.0.0
bind_port = 7000 # 你的开放端口
bind_udp_port = 7001 # 用于客户端UDP传输端口,可不写(如果你客户端不打算做UDP)
# Web
dashboard_port = 5005 # FRP Web界面端口,可通过这个端口查看frp统计信息
dashboard_user = chancel # Frp Web界面账户
dashboard_pwd = 123456 # Frp Web 密码
# token
token = 123456 # 客户端连接的密码
使用下面的指令开始运行frp服务端
./frps -c frps.ini
客户端部署
下载FRP最新客户端(懒得点开Github的懒人专用链接_Linux_amd64专用包)
解压压缩包,进入压缩包目录,创建frpc.ini文件
[common]
server_addr = chancel.cn # 你的服务端IP/域名
server_port = 7000 # 服务端开放端口
token = 123456 # 服务端密码
[C-Route] # 注册的名字,随意起,你自己看得懂就行
remote_port = 8888 # 对外暴露的服务端端口,即别人访问服务端的这个端口就可以访问到你本地绑定的端口
type = tcp # 网络协议类型,默认tcp就行
local_ip = 192.168.1.1 # 你要转发的IP,可填任意IP,只要客户端能访问到
local_port = 80 # 你要转发的端口
login_fail_exit=false # 断线重连
使用下面的指令开始运行frp客户端
./frpc -c frpc.ini
此时使用外网的机器尝试访问服务端的8888端口,就可以访问到你内网的路由器管理界面了,这一招搭配一台不关机的PC,You can do anything。
一个不写笔记的程序员水平跟用味精炒菜的厨师没差别
Leanote笔记:https://github.com/leanote/leanote
其实笔记这一块,有太多好产品要推荐了,还要取决于你用什么设备,比如你用surface那没理由不尝试以下OneNote,但我用过好几年的开源笔记工具,虽然现在不用了,但还是要推荐以下这个笔记软件,搭建不出幺儿子的话,没有比这个更棒的笔记了。
Leanote笔记介绍
前所未有的文档体验,近乎完美的平台覆盖,支持团队协同,企业级私有云
蚂蚁笔记 = 笔记 + 博客 + 协作 + 私有云
搭建Leanote参考文档:https://github.com/leanote/leanote/wiki
你还在带U盘来同步家里跟公司之间的文件吗?或者还在使用国内的公有云?来试试Syncthing吧
Syncthing同步工具: https://syncthing.net
Syncthing是一款工作中接触到的软件,工作需要还做了定制:) ,Syncthing本身是有服务端的,但服务器在国外,同步本身也不依赖于服务器,服务器只是提供双方注册和通告的作用。 有时候因为国外服务器的毛病导致同步失败,也可能因为NAT网络的问题导致文件同步很慢,这个时候有一个公网VPS做中继服务器就是一件很爽的事情了,就算速度不快也可以稳定同步文件。 我使用的是Linux服务端做Syncthing的中继和通告,公司跟家里都是Windows,有惊喜的是Syncthing不但支持Windows/Linux/Mac OS/甚至还支持Android! 这就意味着你的手机也可以享受这种文件同步福利了!
项目地址:https://github.com/syncthing/syncthing
中继服务器部署
下载解压Syncthing:https://github.com/syncthing/discosrv/releases
进入解压目录并使用这条指令来启动中继服务器
./relaysrv -pools "" -debug
relaysrv的参数可以参考官网文档,这里有一份来自Senraの小窝的翻译
-debug 启用调试输出
-ext-address=<address> 可选的外部地址(将被上报),能够通过端口转发来监听高权限端口(0-1024)然后外部可以连接这个端口
-global-rate=<bytes/s> 全局限速,单位 bytes/s
-keys=<dir> 用于存储 cert.pem 和 key.pem 的目录,默认是 "."(当前目录)
-listen=<listen addr> 协议监听的地址,默认是 ":22067"
-message-timeout=<duration> 等待消息到达的最大时间(默认 1m0s)
-nat 使用UPnP/NAT-PMP来取得外部端口映射
-nat-lease=<duration> NAT租赁时间,单位分钟(默认 60)
-nat-renewal=<duration> NAT刷新频率,单位分钟(默认 30)
-nat-timeout=<duration> NAT发现超时,单位秒(默认 10)
-network-timeout=<duration> 客户端和中继之间网络操作的超时,如果在这个时间段内客户端和中继之间没有数据被接收到,那么连接将被终止。此外,如果在这段时间内任何被中继的客户端没有数据发送,这个会话也会被终止(默认 2m0s)
-per-session-rate=<bytes/s> 每个会话的限速,单位 bytes/s
-ping-interval=<duration> ping的发送间隔(默认 1m0s)
-pools=<pool addresses> 中继服务器池的地址,使用逗号分隔多个(默认 "http://relays.syncthing.net/endpoint")。留空(-pools "")来禁止公布这个服务器到池中,以便作为私有中继。
-protocol=<string> 监听协议,"tcp"来监听IPv4和IPv6,"tcp4"来监听IPv4,"tcp6"来监听IPv6(默认 "tcp")
-provided-by=<string> 一个可选的描述字段来表示谁提供了这个中继(可以打打广告啥的)
-status-srv=<listen addr> 提供状态服务的监听地址(默认 ":22070"),用于中继服务器池页面来展示服务器状态(传输了多少数据,有多少客户端在线等等),留空(-status-srv="")来禁用这个功能
运行成功之后会有类似如下输出,请记住这一串输出,0.0.0.0修改成你的服务器地址,如:relay://chancel.cn:33261 即可
URI: relay://0.0.0.0:33261/?id=4ZVSHHI-ZSJID5Y-CKSUQAV-6KATUHA-HJN6WMQ-TU2KEUJ-H5RYSNN-NREXNA7&pingInterval=1m0s&networkTimeout=2m0s&sessionLimitBps=0&globalLimitBps=0&statusAddr=:22070&providedBy=
Windows客户端使用
好了,现在可以在客户端web界面新建文件夹,然后把他分享给家里/公司的设备吧
Github私密仓库需要购买?快来试试Gitea吧
Gitea代码管理:https://docs.gitea.io
有时候会写一些不想别人看见的代码(比如爬爬某网站),只commit到本地又觉得不是很安全,那就Push到服务器吧!
我自己目前暂时使用的是Gogs,不过试过一段时间的Gitea感觉更好,官方更新的更快,功能也比较全面
至于安装?只需要三句指令
wget -O gitea https://dl.gitea.io/gitea/1.3.2/gitea-1.3.2-linux-amd64
chmod +x gitea
./gitea web
注:为什么不使用GitLab?当然可以,GitLab当然更棒,只要你买4G内存的VPS,他就是最棒的!
有在线笔记很棒,但有时候想跟朋友一起编辑某个文档,在线文档?qq提供的尽管不错,但不够Geek
项目地址:https://www.showdoc.cc/ Demo地址:https://www.showdoc.cc/demo?page_id=7
Showdocc是一个非常适合IT团队的在线API文档、技术文档工具,基于PHP写的一款软件。
我经常拿他来写一些文档,比如当周总结、运动计划、财务流水之类的
部署Showdoc其实就是部署Nginx+PHP+Mysql,CentOS 部署Nginx+php+mariadb环境部署 Or 站内搜索关键词Nginx
Track errors in every part of your stack。
Sentry官网:https://sentry.io
Sentry,一款国外开源软件,支持几乎所有主流语言,简单的配置,就能将程序运行的时候将日志上传到服务器,可集成在自己开发的程序中,再也不用开发任何程序日志上传接口,再也不用追着客户要本地日志了,只需2句代码,就能做到这一切!
部署方案参考:Linux下部署Sentry - 程序错误日志收集和聚合的平台 Or 站内搜索Sentry关键词