Ubuntu 16.04 (Xenial)安装配置MongoDB

MongoDB是一个数据库引擎,提供对非关系,面向文档的数据库的访问。 增长最快的NoSQL之一,旨在提供传统关系数据库管理系统(RDBMS)的替代方案。 除了无模式设计和可扩展架构之外,MongoDB还提供JSON输出和特定的语言特定绑定,使其特别适合在自定义应用程序开发中使用。 MongoDB已经用于许多大规模生产部署,并且是目前所有系统中最流行的数据库引擎之一。

安装MongoDB

从Ubuntu存储库安装MongoDB:

  1. sudo apt-get install mongodb-server

配置MongoDB

MongoDB的配置文件位于/etc/mongodb.conf。 大多数设置都在文件中有很好的注释,我们在下面列出了一些更重要的选项:
dbpath表示存储数据库文件的位置(默认为/var/lib/mongodb)
logpath表示MongoDB的日志所在的位置(默认为/var/log/mongodb/mongodb.log)
logappend指示是否将新条目附加到日志的结尾,而不是在每次MongoDB重新启动后覆盖现有日志条目
bind_ip指定MongoDB应侦听的IP地址。 通常建议将此默认设置为127.0.0.1(localhost),除非您有特定的理由将其托管到公共互联网。 这里指定0.0.0.0将导致MongoDB在所有网络接口上侦听。
port指定默认网络端口27017,可以取消注释和修改
默认情况下,当注释掉或未明确定义auth时将禁用认证。 要利用MongoDB的内部身份验证功能,请通过删除行开头处的#,并将值设置为true来取消注释auth选项。
对MongoDB配置文件进行更改后,请重新启动服务,如下一节所示。

启动和停止MongoDB

要启动,重新启动或停止MongoDB服务,请从以下选项中执行适当的命令:

  1. sudo systemctl start mongodb
  2. sudo systemctl restart mongodb
  3. sudo systemctl stop mongodb

创建数据库用户

如果在“配置MongoDB”小节中启用了认证,请在数据库上创建一个管理员:
1.运行mongodb命令打开shell:

  1. mongo

2.默认情况下,MongoDB连接到一个名为test的数据库。 在添加任何用户之前,创建数据库以存储用于验证的用户数据:

  1. use admin

3.使用以下命令创建能够在任何数据库上创建其他用户的管理用户。

  1. db.createUser({user: "mongo-admin", pwd: "password", roles:[{role: "userAdminAnyDatabase", db: "admin"}]})

将这些凭证保存在安全的地方,以备将来参考。 输出将显示写入数据库的所有信息,密码除外:
Successfully added user: {
“user” : “mongo-admin”,
“roles” : [
{
“role” : “userAdminAnyDatabase”,
“db” : “admin”
}
]
}
4.退出mongo终端

  1. quit()

5.使用在步骤3中创建的凭据,使用admin数据库进行身份验证来测试与MongoDB的连接:

  1. mongo -u mongo-admin -p –authenticationDatabase admin

为了验证与shell的连接,需要上述命令中的-u和-p –authenticationDatabase选项。 没有身份验证,MongoDB shell可以被访问,但它不允许连接到数据库。
在步骤3中创建的mongo-admin用户纯粹是基于指定的角色的管理。 它被定义为所有数据库的用户管理员,但本身没有任何数据库权限。 您可以使用它来创建其他用户并定义他们的角色。 如果您使用多个应用程序与MongoDB,设置不同的用户具有对应的数据库的自定义权限。
6.作为mongo-admin用户,创建一个新的数据库来存储常规用户数据进行身份验证。 以下示例为user-data:

  1. use user-data

不同数据库的权限在单独的角色对象中处理。 步骤7中的示例创建了用户example-user,对用户数据数据库具有只读权限,并且对我们将在下面的基本MongoDB函数部分中创建的示例数据库数据库具有读写权限。
7.创建新的非管理用户以输入测试数据。

  1. db.createUser({user: "example-user", pwd: "password", roles:[{role: "read", db: "user-data"}, {role:"readWrite", db: "example-db"}]})

基本的MongoDB函数

MongoDB之所以欢迎大多数得益于易于集成。 通过JavaScript函数与数据库进行交互,并提供其他语言的驱动程序。 本节将演示一些基本功能,但我们建议您根据特定的用例进行进一步的研究。
1.使用我们上面创建的example-user打开MongoDB shell:

  1. mongo -u example-user -p –authenticationDatabase user-data

2.创建新数据库example-db:

  1. use example-db

请确保此数据库名称对应于用户具有读取和写入权限的数据库名称。
要显示当前工作数据库的名称,请运行db命令。
3.创建用于输入测试数据库的样本数据。 MongoDB接受输入为JSON对象形式的文档,如下面的那些。 a和b变量用于简化输入; 对象也可以通过函数直接插入。

  1. var a = { name : "John Doe" }
  2. var b = { age : 30 }

4.使用insert函数将数据插入到名为example的集合中。 如果您不熟悉MongoDB术语,则可以将集合视为与关系数据库管理系统中的表。

  1. db.example.insert(a)
  2. db.example.insert(b)

每个操作的输出将显示成功写入当前工作数据库的对象数:

  1. WriteResult({ "nInserted" : 1 })

5.确认example集合已经被创建

  1. show collections

输出将列出包含当前工作数据库中的数据的所有集合:

  1. example
  2. system.indexes

在这种情况下,example是我们创建的集合,而system.indexes是一个自动创建的索引集合,供MongoDB内部使用。
6.使用find函数查看example集合中的所有数据。 此函数还可用于通过输入搜索项参数来搜索特定字段:

  1. db.example.find()

输出将类似于以下内容:
{ “_id” : ObjectId(“571a3e7507d0fcd78baef08f”), “name” : “John Doe” }
{ “_id” : ObjectId(“571a3e8707d0fcd78baef090”), “age” : 30 }

CentOS 6.4创建Mongodb副本集

MongoDB是一个开源的non-SQL数据库引擎。 MongoDB是可扩展的,是标准关系数据库管理系统(RDBMS)的替代品。 副本集可以使在节点发生故障时还能提供对您的数据的访问。

安装MongoDB

1.确保在副本集的每个成员设置好hostname

  1. nano /etc/hostname

/etc/hostname:
europa
2.创建一个文件以保存MongoDB存储库的配置信息:

  1. sudo touch /etc/yum.repos.d/mongodb.repo

3.如果运行的是64位系统,请使用以下配置:

  1. [mongodb]
  2. name=MongoDB Repository
  3. baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
  4. gpgcheck=0
  5. enabled=1

对于32位系统,请使用以下配置:

  1. [mongodb]
  2. name=MongoDB Repository
  3. baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/i686/
  4. gpgcheck=0
  5. enabled=1

4.使用如下命令安装MongoDB:

  1. sudo yum install mongo-10gen-server

配置网络

请正确配置网络,否则将无法向副本集添加成员。 本节将详细介绍如何将三(3)个服务器配置为MongoDB副本集。

设置hosts文件

/etc/hosts

  1. 192.168.160.1 mongo1
  2. 192.168.170.1 mongo2
  3. 192.168.180.1 mongo3

使用您自己的IP地址代替上述示例中的地址。 副本集中的成员名称也可以根据你的需要设置名称。

编辑Mongo Conf文件

1.编辑mongod.conf文件以添加IP地址和端口号。
/etc/mongod.conf:

  1. # fork and run in background
  2. fork = true
  3.  
  4. bind_ip = 192.168.135.24
  5. port = 27017

输入您在bind ip中服务器的私有IP地址。 如果bind_ip不存在,则需要添加它。 保留默认端口号27017,并取消注释行fork = true。
2.仍然在mongodb.conf文件中滚动到底部并添加副本集信息:
/etc/mongod.conf:

  1. replSet = rs1

在此示例中,副本集为rs1,但是,您可以根据选择更改名称。

副本集

副本集将允许您的数据“复制”或传播到集合中的所有其他节点。 它在系统故障的情况下提供冗余。 建议副本集节点个数为奇数,因为这会使选举更容易。
选举是选择哪个节点成为主节点。 选举在副本集初始化之后和主节点不可用时发生。 主节点是唯一可以接受写操作的节点。 如果主节点不可用,则进行选举选出新的主节点。 选举操作自动进行,无需人工干预。

创建副本集

mongod.conf文件在安装过程中就创建好了。 需要用这个配置文件在副本集的每个节点上启动守护程序。
1.命令如下:

  1. mongod –config /etc/mongod.conf

守护程序启动后,输出如下。
[user@europa mongo]# mongod –config /etc/mongod.conf
about to fork child process, waiting until server is ready for connections.
forked process: 20955
all output going to: /var/log/mongo/mongod.log
child process started successfully, parent exiting

2.仅在副本集的一个节点上启动MongoDB客户端:

  1. mongo –host <mongo0>

3.在MongoDB提示符下,使用命令切换到admin:

  1. use admin

您应该看到消息switched to db admin.
4.运行rs.initiate()命令,该命令将在当前节点中创建副本集。 输出应类似于以下内容:
> rs.initiate()
{
“info2” : “no configuration explicitly specified — making one”,
“me” : “192.168.160.1:27017”,
“info” : “Config now saved locally. Should come online in about a minute.”,
“ok” : 1

5.要查看当前配置,运行命令:

  1. rs.conf()

输出应类似于以下内容:

  1. rs.conf()
  2. {
  3.     "_id" : "rs1",
  4.     "version" : 8,
  5.     "members" : [
  6.         {
  7.             "_id" : 0,
  8.             "host" : "192.168.160.1:27017"
  9.         }
  10.     ]
  11. }

6.要将成员添加到副本集,请使用命令:

  1. rs.add("mongo1:27017")

输出:
rs1:PRIMARY> rs.add(“mongo2:27017”)
{ “ok” : 1 }
7.要验证节点是否已正确添加,请再次运行rs.conf()命令。 输出应类似于以下内容:
rs1:PRIMARY> rs.conf()
{
“_id” : “rs0”,
“version” : 8,
“members” : [
{
“_id” : 0,
“host” : “192.168.160.1:27017”
},
{
“_id” : 1,
“host” : “mongo1:27017”
},
{
“_id” : 2,
“host” : “mongo2:27017”
}
]
}

验证副本集

验证副本集是否正常并且节点都进行正常通信的最佳方法是创建新的测试数据库。 默认情况下,当您连接到MongoDB时,将使用现有的测试数据库。 为了保存新数据库,需要添加数据。 创建和插入数据的过程如下:
1.创建数据库

  1. use <products>

用您喜欢的任何名称替换变量products。
2.添加数据

  1. db.products.insert( {item: "paint", qty: 10 } )

如果您不在副本集的主节点上,您将收到消息not master。 切换到主节点并再次运行命令。 现在使用命令:

  1. show dbs

显示数据库列表。 您的新应该出现在列表中。 连接到副本集的其他节点,查看新创建的数据库是否已复制过去。

Ubuntu 12.04使用Squid创建HTTP代理

Squid是代理/缓存应用程序,拥有丰富的配置和用途的。 本文将介绍如何使用Squid建立HTTP代理。 请注意,您的原始IP地址会附加到请求头X-Forwarded-For,除非您按照指南最后一章节匿名流量的介绍,否则你的流量不会是匿名, 此外,流量没有加密,你的流量仍然存在被嗅探的可能性。

安装Squid

1.Squid可以从Ubuntu存储库中安装。 安装前请确保系统是最新的,然后再安装Squid,请运行以下命令:

  1. sudo apt-get update
  2. sudo apt-get upgrade
  3. sudo apt-get install squid

2.备份配置

  1. sudo cp /etc/squid3/squid.conf /etc/squid3/squid.conf.default

配置Squid为一个HTTP代理

Squid代理可以用作HTTP代理以绕过本地网络限制或隐藏您的真实IP。

基本配置

本节介绍配置Squid为HTTP代理的最简单方法,仅使用客户端IP地址进行身份验证。
1.编辑Squid配置文件并添加以下行:
/etc/squid3/squid.conf

  1. acl client src 12.34.56.78 # Home IP
  2.   http_access allow client

请把client替换为易于识别的名称。并将12.34.56.78替换为你的本机IP地址。 注释#Home IP不是必需的,但注释可用于帮助识别客户端。
2.一旦您保存并退出该文件,重新启动Squid:

  1. sudo service squid3 restart

3.此时,您可以配置本地浏览器或操作系统的网络设置,将你的服务器用作HTTP代理。 怎么配置取决于您选择的操作系统和浏览器。 对设置进行更改后,可以用浏览器打开一个网站来查看目前代理是否生效,例如ifconfig,what is my IP等网站。
4.可以通过向/etc/squid3/squid.conf中添加新的acl行来定义其他客户端。 通过将每个acl定义的名称添加到http_access allow行,可以授予对代理的访问权限。

高级身份验证

以下配置设置使用用户名和密码对Squid代理服务进行身份验证访问。
1.您可以使用htpasswd工具生成密码文件。 如果你的服务器安装了Apache,可能htpasswd已经存在。 否则运行:

  1. sudo apt-get install apache2-utils

2.创建一个文件来存储Squid用户和密码,然后更改所有权:

  1. sudo touch /etc/squid3/squid_passwd
  2. sudo chown proxy /etc/squid3/squid_passwd

3.创建用户名密码对:

  1. sudo htpasswd /etc/squid3/squid_passwd user1

将user1替换为你想要设置的用户名。 系统将提示您为此用户创建密码:

  1. New password:
  2. Re-type new password:
  3. Adding password for user user1

您可以重复此步骤来创建新用户。
4.编辑Squid配置文件并添加以下行:
/etc/squid3/squid.conf:

  1. auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid3/squid_passwd
  2.   acl ncsa_users proxy_auth REQUIRED
  3.   http_access allow ncsa_users

5.一旦您保存并退出该文件,重新启动Squid:

  1. sudo service squid3 restart

6.此时,您可以配置本地浏览器或操作系统的网络设置,将你的服务器用作HTTP代理。 连接代理时,您需要提供用户名和密码来做身份验证。 如何设置取决于您选择的操作系统和浏览器。 对设置进行更改后,可以用浏览器打开一个网站来查看目前代理是否生效,例如ifconfig,what is my IP等网站。
7.要删除一个用户的代理访问权限,必须删除squid passwd文件中的对应的行。 每行表示一个用户,格式为user:password hash:
/etc/squid3/squid_passwd

  1. user1:$p948w3nvq3489v6npq396g user2:$q3cn478554387cq34n57vn

如果使用Nano编辑,使用命令Control + k将删除光标所在的行。 一旦您保存并退出该文件,重新启动Squid:

  1. sudo service squid3 restart

配置为匿名代理

为了隐藏你的IP地址,您需要将以下行添加到Squid配置文件。

  1. forwarded_for off
  2.   request_header_access Allow allow all
  3.   request_header_access Authorization allow all
  4.   request_header_access WWW-Authenticate allow all
  5.   request_header_access Proxy-Authorization allow all
  6.   request_header_access Proxy-Authenticate allow all
  7.   request_header_access Cache-Control allow all
  8.   request_header_access Content-Encoding allow all
  9.   request_header_access Content-Length allow all
  10.   request_header_access Content-Type allow all
  11.   request_header_access Date allow all
  12.   request_header_access Expires allow all
  13.   request_header_access Host allow all
  14.   request_header_access If-Modified-Since allow all
  15.   request_header_access Last-Modified allow all
  16.   request_header_access Location allow all
  17.   request_header_access Pragma allow all
  18.   request_header_access Accept allow all
  19.   request_header_access Accept-Charset allow all
  20.   request_header_access Accept-Encoding allow all
  21.   request_header_access Accept-Language allow all
  22.   request_header_access Content-Language allow all
  23.   request_header_access Mime-Version allow all
  24.   request_header_access Retry-After allow all
  25.   request_header_access Title allow all
  26.   request_header_access Connection allow all
  27.   request_header_access Proxy-Connection allow all
  28.   request_header_access User-Agent allow all
  29.   request_header_access Cookie allow all
  30.   request_header_access All deny all

一旦您保存并退出该文件,重新启动Squid:

  1. sudo service squid3 restart

Varnish Cache入门介绍

需要处理大量的流量? 缓存应该是提高吞吐量最佳的方式之一。 意思是你的服务器不需要每次访问时从头开始重新生成相同的动态内容。 通过将缓存代理(如Varnish Cache)放在Web服务前面来对HTTP请求的响应加速并减少服务器工作负载,从而节省服务器资源。
Varnish工作在你的后端前面,比如Apache,Nginx还是别的什么。 如果Varnish找不到请求缓存,它会将请求转发到您的后端,然后缓存其输出。 您可以选择将这些缓存的请求存储在内存中,这会使它们的检索速度非常快。

安装

1.首先更新当前软件包并从apt安装Varnish:

  1. apt-get update
  2. apt-get upgrade
  3. apt-get install varnish

2.接下来我们要做的是编辑Varnish的守护进程选项,让它加载你的自定义配置:

  1. nano /etc/default/varnish

向下滚动到配置文件的这个块,找到当前的默认值:
/etc/default/varnish:

  1. ## Alternative 2, Configuration with VCL
  2. #
  3. # Listen on port 6081, administration on localhost:6082, and forward to
  4. # one content server selected by the vcl file, based on the request.  Use a 1GB
  5. # fixed-size cache file.
  6. #
  7. DAEMON_OPTS="-a :6081
  8.              -T localhost:6082
  9.              -f /etc/varnish/default.vcl
  10.              -S /etc/varnish/secret
  11.              -s malloc,256m"

我们需要编辑-f选项。 将其更改为:

  1. -f /etc/varnish/user.vcl

或者你喜欢的任何名称。 重要的是让您的配置独立于默认的VCL文件,因为软件包更新可能会覆盖它。
从上面的配置,我们还看到Varnish将其缓存项存储在内存中,并且设置最多使用256MB的内存。 如果您需要调整此分配,只需编辑此行上的值:

  1. -s malloc,256m

稍后再编辑这些守护进程选项。 现在,让我们来配置Varnish的后端。

基本配置

Varnish通过Varnish配置语言(VCL)进行配置。 一旦配置文件被加载,Varnish将VCL代码翻译并编译成与Varnish进程并行运行的C程序。
让我们开始定制您的VLC。 首先将default.vcl复制到一个新文件:

  1. cd /etc/varnish
  2. cp default.vcl user.vcl
  3. nano user.vcl

配置后端

1.首先,先更改varnish的后端,如Apache。 这是Varnish将请求转发到的地方,也就是要缓存的内容来源。 在我们的示例中,我们的后端Apache运行在80端口,与Varnish在同一台服务器上,因此相应地更改后端:

  1. backend default {
  2.     .host = "127.0.0.1";
  3.     .port = "80";
  4. }

2.重新启动Varnish

  1. service varnish restart

3.默认情况下,Varnish在端口6081上运行,因此在Web浏览器中,访问服务器上的端口6081:

  1. http://example.com:6081

您应该会看到您网站的首页。 要确认您看到的是网站的缓存版本,请检查返回的响应头。 您应该会看到以下两个响应头:

  1. Via: 1.1 varnish
  2. Age: 10

配置缓存生存时间(TTL)

默认情况下,Varnish将缓存请求两分钟。 如果您想调整此项,请返回并打开您的VCL文件,并通过在后端声明下面添加此代码覆盖vcl_fetch子例程:

  1. sub vcl_fetch
  2. {
  3.     set beresp.ttl = 5m;
  4. }

在从后端获取请求后调用此子例程。 您可以看到我们将对象TTL变量设置为五分钟。 值可以是秒(120秒),分钟(2分)或小时(2小时)。 您的理想TTL可能需要根据网站上的内容更新频率,网站的大小以及您需要处理的流量有所不同。

放置varnish到前端

如果上面的varnish配置能符合预期正常工作,那我们现在让Varnish和Apache交换端口,以便我们的网站的请求默认通过Varnish。
1.要更改Apache的端口,我们需要编辑/etc/apache2/ports.conf和任何存在的虚拟主机。 打开ports.conf以查找NameVirtualHost *:80和Listen 80,并把80端口更改为另一个端口。 我们将使用8080:

  1. NameVirtualHost *:8080
  2. Listen 8080

2.接下来,进入/etc/apache2/sites-available,并更改每个VirtualHost声明的开头,以更改新的端口号:

  1. <VirtualHost *:8080>

3.现在我们配置Varnish监听端口80。回到我们的守护进程选项文件(/etc/default/varnish),找到我们之前编辑的未注释的选项。 带-a标志的行指定端口号,更改为80:

  1. DAEMON_OPTS="-a :80

4.最后,我们需要编辑Varnish的后端配置,打开/etc/varnish/user.vcl并将后端配置更改为:

  1. backend default {
  2.     .host = "127.0.0.1";
  3.     .port = "8080";
  4. }

5.重启Apache和Varnish

  1. service apache2 reload
  2. service varnish restart

高级配置

VCL提供了对缓存请求的多种配置,并且可以根据需要对varnish进行一些自定义修改。 让我们来看一些常见的VCL修改,以及一些提示和技巧。

跳过某些请求的缓存

如果你的服务器运行多个网站,通常想要从Varnish的缓存中排除它们中的一些。 为此,我们将通过Varnish的请求对象来获取有关请求的信息,并根据条件告诉varnish将请求直接传递给后端。
我们需要在我们的VCL文件中覆盖vcl_recv子例程,每次Varnish收到请求时都运行它,然后添加一个条件:

  1. sub vcl_recv
  2. {
  3.     if (req.http.host ~ "example.com" ||
  4.         req.url ~ "^/admin")
  5.     {   
  6.         return (pass);
  7.     }
  8. }

你可以看到我们设置的不想缓存的两个条件。 第一个是针对example.com的任何请求,第二个是针对以/admin开头的任何URI请求。 如果这些都满足,Varnish不会缓存请求。

删除cookies

如前所述,如果Varnish检测到您的网站正在设置Cookie,它会假设您的网站需要与这些Cookie进行交互,并相应地显示动态内容,导致Varnish将不会缓存这些网页。 我们可以通过在Varnish的req.http对象清空Cookies。
将它添加到我们的VLC中的vcl_recv的底部:

  1. unset req.http.Cookie;

您可能会发现特定的Cookie对于显示内容很重要,或者用来确定您的用户是否已登录。 在这种情况下,您可能不想显示缓存的内容,只要将用户直接发送到后端。
对于这种情况,我们将检查req.http.Cookie一个名为“logged_in”的cookie,如果我们找到它,将请求直接传递到后端。 这里是我们整个vcl_recv子例程:

  1. sub vcl_recv
  2. {
  3.     if (req.http.host ~ "example.com" ||
  4.         req.url ~ "^/admin" ||
  5.         req.http.Cookie ~ "logged_in")
  6.     {   
  7.         return (pass);
  8.     }
  9.  
  10.     unset req.http.Cookie;
  11. }

缓存POST还是不缓存POST?

很可能你不想缓存POST请求,因为他们可能需要与后端交互以收集动态数据或设置用户的会话。 在上面的例子中,我们选择不缓存请求,如果用户登录。我们需要确保他们可以登录。 一个简单的方法是跳过POST请求。
让我们将这个条件添加到我们现有的在vcl_recv中的return(pass)块:

  1. if (req.http.host ~ "example.com" ||
  2.     req.url ~ "^/admin" ||
  3.     req.http.Cookie ~ "logged_in" ||
  4.     req.request == "POST")
  5. {   
  6.     return (pass);
  7. }

最终VCL文件

/etc/varnish/user.vcl:

  1. backend default {
  2.     .host = "127.0.0.1";  # IP address of your backend (Apache, nginx, etc.)
  3.     .port = "8080";       # Port your backend is listening on
  4.     .probe = {
  5.         .url = "/";
  6.         .timeout = 34ms;
  7.         .interval = 1s;
  8.         .window = 10;
  9.         .threshold = 8;
  10.     }
  11. }
  12.  
  13. sub vcl_recv
  14. {
  15.    # Do not cache example.com, the admin area,
  16.    # logged-in users or POST requests
  17.    if (req.http.host ~ "example.com" ||
  18.         req.url ~ "^/admin" ||
  19.         req.http.Cookie ~ "logged_in" ||
  20.         req.request == "POST")
  21.     {
  22.         return (pass);
  23.     }
  24.  
  25.     # Don’t allow cookies to affect cachability
  26.     unset req.http.Cookie;
  27.  
  28.     # Set Grace Time to one hour
  29.     set req.grace = 1h;
  30. }
  31.  
  32. sub vcl_fetch
  33. {
  34.     # Set the TTL for cache object to five minutes
  35.     set beresp.ttl = 5m;
  36.  
  37.     # Set Grace Time to one hour
  38.     set beresp.grace = 1h;
  39. }

Ubuntu 14.04安装Pritunl VPN服务器(带控制面板)

开始之前

1.更新系统

  1. sudo apt-get update && sudo apt-get upgrade

2.添加Pritunl APT仓库并更新软件包列表

  1. echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.0 multiverse" > /etc/apt/sources.list.d/mongodb-org-3.0.list
  2. echo "deb http://repo.pritunl.com/stable/apt trusty main" > /etc/apt/sources.list.d/pritunl.list

3.添加repo keys

  1. apt-key adv –keyserver hkp://keyserver.ubuntu.com –recv 7F0CEB10
  2. apt-key adv –keyserver hkp://keyserver.ubuntu.com –recv CF8E292A

4.更新软件包缓存

  1. sudo apt-get update

5.如果服务器配置有防火墙,我们打开Pritunl相关端口

  1. sudo iptables -A INPUT -p udp -m udp –sport 9700 –dport 1025:65355 -j ACCEPT
  2. sudo iptables -A INPUT -p tcp -m tcp –sport 9700 –dport 1025:65355 -j ACCEPT
  3. sudo iptables -A INPUT -p `your protocol here` -m `your protocol here` –sport `your_port_here` –dport 1025:65355 -j ACCEPT

安装Pritunl

1.安装Pritunl及其依赖

  1. sudo apt-get install python-software-properties pritunl mongodb-org

2.启动Pritunl服务

  1. sudo service pritunl start

3.用浏览器打开https://123.45.67.89:9700,123.45.67.89替换成你服务器IP,会看到如下界面:
未分类
4.连接服务器,安装程序已经自动填充好数据库数据,如果没问题,点击“Save”即可。

配置Pritunl

1.使用如下账号登录Pritunl
Username: pritunl
Password: pritunl
2.初始配置如下:
未分类
填充表单,点击“Save”
注意:
如果你没有购买license,SMTP设置不是必须的。
如果想购买license,点击右上角的“Upgrade to Premium“,并输入license
3.切换到Users tab,这里你可以创建你的组织和用户。点击”Add Organization“输入一个名称,点击”Add Use“把用户添加到组织。
4.切换到Servers tab,点击”Add server“,界面如下:
未分类
5.点击”Attach Organization“,关联组织到服务器

连接VPN服务器

可以使用与OpenVPN兼容的客户端,如Android或iOS,可以使用OpenVPN Connect应用。Linux可以使用官方提供的客户端。

两步获取客户端密钥
1.在你的用户名相邻处,有一个Online/Offline指示器。这附近有两个按钮,一个是连接icon,一个是下载icon。
2.下载icon就是下载密钥文件的TAR文件