搭建自己的VPS

一 VPS是啥

 

虚拟专用服务器英语:Virtual private server,缩写为 VPS),是指通过虚拟化技术在独立服务器中运行的专用服务器。每个使用VPS技术的虚拟独立服务器拥有各自独立的公网IP地址、操作系统、硬盘空间、内存空间、CPU资源等,还可以进行安装程序、重启服务器等操作,与运行一台独立服务器基本相同。

这是维基百科上的解释。其实和我们自己在电脑上装虚拟机是一样的,只不过VPS有独立的公网IP。多个VPS之间系统是隔离的,但是硬件不是隔离的。 比如Host Server是8核CPU+16G内存,如果安装了8个VPS,那么每个分配1核CPU+2G内存。用过虚拟机的就明白的,不用多解释。

VPS系统主要是xUNIX系统,这样不需要图形界面,远程SSH上去操作。目前也有Windows的VPS,主要就是图形化的远程登录操作。VPS就好比是自己电脑,自由度很大。

 

虚拟主机?云主机?

 

虚拟主机英语:Virtual Host)(英语:Shared Web Hosting),又称虚拟服务器主机空间或是网页空间,是一种网络技术,可以让多个主机名称(host name),在一个单一服务器(或是一个服务器组)上运作,而且可以分开支持每个单一的主机名称。

虚拟主机是以前用的比较多的,主要用来架设个人网站,搭建FTP服务器等。利用Apache和IIS 就很容易搭建虚拟主机。以前主要使用FTP等方式进行远程操作。相对于VPS自由度比较小。而云服务可以说是VPS加上云的概念,是在一组集群主机上划分出的多个VPS集群。

所以个人用而言,使用VPS是最好的选择。一般使用xUNIX系统,无论是科学上网、建站、搭建云盘等等都不在话下。

二 VPS选择

 

如果不需要科学上网,国内大的网络公司都有提供VPS和各种云服务器。阿里云、sina、腾讯等等。只是同样的配置,比国外贵很多。如果是建站建议选择国内的VPS,毕竟速度还是快很多。如果是想上google、搭worpress等,可以使用外国的VPS。

虚拟化技术的选择

VPS使用了虚拟化技术,目前国内外vps主机提供商所提供的主机大多是基于Xen、OpenVZ、KVM、Hyper-V、VMWare五种虚拟化技术。大概了解虚拟化技术可以帮助选择合适的VPS。

Xen:

它是基于硬件的完全分割,物理上有多少的资源就只能分配多少资源,因此很难超售。Xen是不能超售内存和硬盘的,当母服务器只有16G内存以及100G硬盘时,当开Xen架构(任意一个虚拟化)的1G内存、25G硬盘的子机时,会直接占用服务器1G内存,以及25G硬盘,所以Xen的性能,相比OpenVZ在超售的情况下要好。

OpenVZ:

用SWsoft的Virutozzo虚拟化服务器软件产品的内核,是基于Linux平台的操作系统级服务器虚拟化架构。当然 OpenVZ可以超售,意思味着一台服务器总共16G内存,他可以开出配置为1G内存×17台以上的子服务器。因为他的虚拟架构关系属于:客户用多少,就扣除母服务器多少。另一个特点是,它是直接调用母服务器的内核,所以会导致部分软件无法使用,以及部分内核文件是无法修改。

KVM:

KVM是全功能虚拟化架构,甚至拥有独立的BIOS控制,所以对母服务器性能影响较大,所以基于KVM的VPS较贵,但KVM VPS相对其它架构的VPS较为自由。性能比Xen略低。

Hyper-V :

微软的一款虚拟化产品,大部分国内的VPS服务商使用这个架构,主要是因为其转为Windows定制,管理起来较为方便。目前的Hyper-V也支持Linux,只不过性能损失比较严重。

VMWare

是全球桌面到数据中心虚拟化解决方案的领导厂商开发的一款全功能完全虚拟化的软件。这个大家应该最熟悉。Windows上装VMWare跑linux 的很多。不过因为授权很贵,普通VPS很少用这个的。和OpenVZ架构一样,子机用多少内存,就扣除系统多少内存,所以也存在超售可能。

目前VPS提供商主要是OpenVZ,因为便宜。KVM相对贵一些,提供Xen的并不是很多。

机房选择

 

国外的VPS,常见的地区主要是香港地区、日本、新加坡、美国。就地理位置上来说,选香港,日本是最快的,美国是最远的。但是从网上看有些亚洲读取VPS用起来也挺慢,所以我一般还是推荐直接买美国的VPS。一般美国会有洛杉矶、芝加哥、迈阿密等机房选择,一般洛杉矶比较快,以为近一些。具体可以根据自己忘了情况进行选择,ping一下就知道了。

服务商的选择

 

Vultr

Sugarhosts

linode

vps.net

DigitalOcean

BandwagonHost(搬瓦工VPS)

Budget VM

上面都是国外比较知名的VPS服务商,具体就不介绍了,直接用名字去网上搜索吧,找一个各方面都是和自己的就可以了。

VPS硬件配置选择

 

主要是看自己需求,如果只是学习Linux,没有必要购买VPS,自己装个虚拟机都搞定了。选择VPS主要就是CPU、内存和硬盘,还有很关键的连接速度和流量。不同配置、不同虚拟化技术、不同配置价格都是不同的。

比如下面是Budget的OpenVZ和KVM的价格表

OpenVZ

KVM

下面是搬瓦匠的

相对于CPU来说,普通用户内存可能更重要。特别是OpenVM可能存在内存超售的情况。而且目前超低价VPS已经很少了(几刀一年的),最便宜的一个月就少2刀。所以我最终选择了4.99刀一年的BudgetVM的Xen的VPS(要选中国的页面才有Xen,可以支付宝)。

chengchao@cc-mbp:~$ping 192.157.xx.xx
PING 192.157.xx.xx (192.157.xx.xx): 56 data bytes
64 bytes from 192.157.xx.xx: icmp_seq=0 ttl=52 time=180.735 ms
64 bytes from 192.157.xx.xx: icmp_seq=1 ttl=52 time=186.238 ms
64 bytes from 192.157.xx.xx: icmp_seq=2 ttl=52 time=189.130 ms
64 bytes from 192.157.xx.xx: icmp_seq=3 ttl=52 time=181.498 ms
64 bytes from 192.157.xx.xx: icmp_seq=4 ttl=52 time=186.536 ms
64 bytes from 192.157.xx.xx: icmp_seq=5 ttl=52 time=185.760 ms
64 bytes from 192.157.xx.xx: icmp_seq=6 ttl=52 time=182.322 ms
64 bytes from 192.157.xx.xx: icmp_seq=7 ttl=52 time=181.574 ms
64 bytes from 192.157.xx.xx: icmp_seq=8 ttl=52 time=186.040 ms
64 bytes from 192.157.xx.xx: icmp_seq=9 ttl=52 time=185.899 ms
^C
— 192.157.xx.xx ping statistics —
10 packets transmitted, 10 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 180.735/184.573/189.130/2.664 ms

BudgetVM在上海、武汉、广州ping下来基本都是在180ms左右,朋友用的搬瓦匠的速度大概在160ms左右。配置方面1G内存,50G硬盘,3T的流量。所以对我来说科学上网是绰绰有余,所以顺便就又搭建了云盘、blog等等。

 

 

三 VPS安装和使用

 

目前VPS主要系统有Ubuntu、CentOS、Debian、Scientific等。因为之前用Ubuntu相对比较熟悉,所以选择了Ubuntu14.04 64bit系统。不过VPS安装是不一样的,不过基本不需要你动手,选择一下就行了。

目前管理方式都是SSH方式远程管理,SSH采用回显的方式,所以如果和VPS间ping过大,可能会有明显的输入延迟。我180ms的ping,目前用起来的感受还是可以。 MAC或Linux系统上直接使用终端ssh登录,windows上可以使用putty 或者 cmder

chengchao@cc-mbp:~ssh 192.157.xx.xx
chengchao@192.157.xx.xx’s password:
Welcome to Ubuntu 14.04 LTS (GNU/Linux 3.13.0-24-generic x86_64)

* Documentation: https://help.ubuntu.com/
New release ‘16.04.1 LTS’ available.
Run ‘do-release-upgrade’ to upgrade to it.

chengchao@189554:~

创建新用户

 

一般VPS系统安装后,会有一个root账号和密码,但是直接用root账号登陆操作比较危险,所以可以第一次使用root账户登陆后创建一个用户,然后用sudo提示权限。 使用root用户操作和sudo提权操作的区别是什么:

1. 使用sudo提权,只需要输入用户密码,不需要root密码

2. 可执行sudo指令的用户都规范在/etc/sudoers这个文件中,root可以很容易地掌控整个系统

使用adduser命令 (注意,还有一个useradd命令,但是只创建用户,不会创建对应目录、密码和Shell)

 

创建完一个用户后,这个用户并没有sudo的权限, 可以编辑/etc/sudoers文件,插入新建用户信息。

保存后新建的用户就有sudo权限了。

安装LAMP

 

LAMP is an archetypal model of web service stacks, named as an acronym of the names of its original four open-source components: the Linux operating system, the Apache HTTP Server, the MySQL relational database management system (RDBMS), and the PHP programming language. The LAMP components are largely interchangeable and not limited to the original selection. As a solution stack, LAMP is suitable for building dynamic web sites and web applications.[1]

所谓LAMP最开始就是Linux+Apache+MySQL+PHP(Perl、Python)。当然目前只是表示WebServer、CGI、Database的环境,可以有多种选择。

安装命令:

sudo apt-get install update

sudo apt-get install apache2 mysql-server php5

这里我先升级了系统已有的组件,然后安装了apache、mysql和php。

启动apache:

service apache2 start

在浏览器使用用VPS的IP地址访问,如果可以看到apache页面,说明搭建成功。其他组件在命令行查看版本:

mysql –version

php –version

python –version

如果现实版本号说明安装成功。

安装JDK

 

因为自己在ubuntu上都习惯安装java环境,所以在VPS上也安装了,因为相对来说情况下还是需要用到java环境的,安装命令:

sudo apt-get install update

sudo aptget install defaultjdk

安装完成后检查:

java -version

安装htop

 

对于VPS来说需要监控他的一些资源情况,我们可以使用top、free、ps等命令查看,现在有一个htop图形化工具,比较好用直观。

sudo apt-get install htop

安装后命令行输入htop,效果如下:

安装sysv-rc-conf

 

ubuntu14.04中的启动管理和其他Linux并不一样,之前Linux主要使用System V initialization,很多书籍上也是介绍这个。而Ubuntu采用的Upstart方式,基于事件机制,系统的所有服务,任务都是由事件驱动的。当然Ubuntu也兼容老的方式。

对于传统启动方式,启动的服务脚本都是放在/etc/rc${runlevel}.d下的,并且以S和K开头,不同的run level执行不同rc.d目录下的脚本;而新的Upstart方式是放在/etc/init.d目录下。(参见: Ubuntu init启动流程分析

所以sysv-rc-conf是一个用来管理ubuntu上Service启动的图形化工具,安装命令:

sudo apt-get install sysv-rc-conf

使用:

sudp sysv-rc-conf

左边一列是service,而右边0~6和S是linux的run level:

* 0 System Halt
* 1 Single user
* 2 Full multi-user mode (Default)
* 3-5 Same as 2
* 6 System Reboot

 

四 VPS优化

 

安装了必要软件之后,各种服务都开机启动了。然后用htop一看,系统内存占用700M+。因为我们系统资源很少,所以对于Apache,MySQL,都需要进行一些优化,适合校小内存的VPS。不同VPS配置和需求,需要优化的方式可能不一样,我也是从网上找的一些优化方式。不要完全copy下面配置,要根据自己情况配置。

Apache优化:

 

目前我的apache只拖了在用的这个wordpress blog,所以需求不高。要注意的地方是安装的是apache2,所以修改的配置文件是/etc/apache2/apache2.conf,现在没有httpd.conf文件。

<IfModule mpm_prefork_module>
StartServers 1
MinSpareServers 1
MaxSpareServers 3
MaxClients 10
MaxRequestsPerChild 3000
</IfModule>

<IfModule mpm_worker_module>
StartServers 1
MinSpareThreads 5
MaxSpareThreads 15
ThreadLimit 25
ThreadsPerChild 5
MaxClients 25
MaxRequestsPerChild 200
</IfModule>

MYSQL优化

 

也是修改配置文件,MySQL会在几个默认目录下搜索my.cnf文件,所以我们可以在/etc下创建一个文件,别写入配置信息来优化。小内存VPS建议安装MySQL5.1版本,如果需要MySQL5.5,请一定禁用Innodb引擎。

[mysql]

#CLIENT#
port = 3306
socket = /var/lib/mysql/mysql.sock

[mysqld]

#GENERAL#
user = mysql
#default-storage-engine = InnoDB
default-storage-engine=MyISAM
socket = /var/lib/mysql/mysql.sock
pid-file = /var/lib/mysql/mysql.pid

#MyISAM#
key-buffer-size = 32M
myisam-recover = FORCE,BACKUP

关键就是标红的地方,使用MyISAM引擎。并设置buffer。其他配置在网上搜索一下,上面只是部分配置。


如果本文对您有帮助,可以扫描下方二维码打赏!您的支持是我的动力!
微信打赏 支付宝打赏

4 评论

  1. 你好
    我想了解一下或者 请你帮助我搭建一台服务器 如果需要什么费用我可以给你一定的报酬

小菜鸡进行回复 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注