内容简介:甲:为什么要搭建个人私有云存储?百度云不是挺好吗?乙:….之前公司的网管在局域网内部搭建了一个私有云存储:seafile,当时用的不亦乐乎,将内部的各种资料都搬了上去,每个人还可以有自己的私有空间,对于不适合放到公网但需要内部共享的资料特别合适,而且seafile能够自动同步本地和云端的文件,免去了手动上传下载的麻烦。
甲:为什么要搭建个人私有云存储?百度云不是挺好吗?
乙:….
之前公司的网管在局域网内部搭建了一个私有云存储:seafile,当时用的不亦乐乎,将内部的各种资料都搬了上去,每个人还可以有自己的私有空间,对于不适合放到公网但需要内部共享的资料特别合适,而且seafile能够自动同步本地和云端的文件,免去了手动上传下载的麻烦。
网上已经有很多人介绍使用树莓派搭建私有云存储,为了练手我也来搭建一个,碰巧seafile还有专门的树莓派版本。
1、下载seafile
对于树莓派的最新版本可以从这里获取:
https://github.com/haiwen/seafile-rpi/releases
当前最新版本是6.2.5,在/home/pi下创建一个seafile目录,然后下载安装包并解压到当前目录。
sudo mkdir seafile sudo https://github.com/haiwen/seafile-rpi/releases/download/v6.2.5/seafile-server_6.2.5_stable_pi.tar.gz sudo tar -xzf seafile-server_6.2.5_stable_pi.tar.gz
2、安装seafile
安装seafile需要提前安装一些依赖库:
sudo apt-get update sudo apt-get install python2.7 libpython2.7 python-setuptools python-imaging python-ldap python-urllib3 sqlite 3 python-requests
默认情况下paython 2.7 应该已经安装好了,这里谨慎些,所有依赖的都写上了。
然后开始执行seafile的安装程序:
cd seafile-server-6.2.5 sudo ./setup-seafile.sh
seafile运行启动两个程序:seafile server和seahub,一个是存储服务器,一个是存储服务器的网站界面。
运行安装脚本将需要回答一些预设问题,我这里做些注释:
----------------------------------------------------------------- This script will guide you to config and setup your seafile server. Make sure you have read seafile server manual at https://github.com/haiwen/seafile/wiki Note: This script will guide your to setup seafile server using sqlite3, which may have problems if your disk is on a NFS/CIFS/USB. In these cases, we sugguest you setup seafile server using MySQL. Press [ENTER] to continue # 运行到这里点击回车,以继续 ----------------------------------------------------------------- Checking packages needed by seafile ... Checking python on this machine ... Find python: python2.7 Checking python module: setuptools ... Done. Checking python module: python-imaging ... Done. Checking python module: python-sqlite3 ... Done. Checking for sqlite3 ...Done. Checking Done. # 运行到这里代表依赖检查完毕 What would you like to use as the name of this seafile server? Your seafile users will be able to see the name in their seafile client. You can use a-z, A-Z, 0-9, _ and -, and the length should be 3 ~ 15 [server name]: myseafile # seafile服务器的名字,自己按规则起一个就行了 What is the ip or domain of this server? For example, www.mycompany.com, or, 192.168.1.101 [This server's ip or domain]: 192.168.0.196 # 树莓派机器的IP或域名,我这里是局域网内,所以为局域网的IP地址。 Where would you like to store your seafile data? Note: Please use a volume with enough free space. [default: /home/pi/seafile/seafile-data ] # seafile数据的存放位置,按照默认即可 What tcp port do you want to use for seafile fileserver? 8082 is the recommended port. [default: 8082 ] # seafile服务器的端口号,默认8082 This is your config information: server name: myseafile server ip/domain: 192.168.0.196 seafile data dir: /home/pi/seafile/seafile-data fileserver port: 8082 If you are OK with the configuration, press [ENTER] to continue. # 这里确认你的seafile服务器配置,没问题继续回车 Generating ccnet configuration in /home/pi/seafile/ccnet... done Successly create configuration dir /home/pi/seafile/ccnet. Generating seafile configuration in /home/pi/seafile/seafile-data ... Done. ----------------------------------------------------------------- Seahub is the web interface for seafile server. Now let's setup seahub configuration. Press [ENTER] to continue ----------------------------------------------------------------- # 这里开始安装seahub,回车继续 Creating seahub database now, it may take one minute, please wait... Done. creating seafile-server-latest symbolic link ... done ----------------------------------------------------------------- Your seafile server configuration has been completed successfully. ----------------------------------------------------------------- # 已经安装完成了,下边是告诉你怎么启动安装好的程序。 run seafile server: ./seafile.sh { start | stop | restart } run seahub server: ./seahub.sh { start <port> | stop | restart <port> } ----------------------------------------------------------------- If the server is behind a firewall, remember to open these tcp ports: ----------------------------------------------------------------- # 下边是程序要使用的端口,如果开启了防火墙,需要开放这两个端口。 port of seafile fileserver: 8082 port of seahub: 8000 When problems occur, refer to https://github.com/haiwen/seafile/wiki for more information.
3、启动seafile
先启动seafile server:
pi@raspberrypi:~/seafile/seafile-server-6.2.5 $ ./seafile.sh start [07/05/18 13:58:26] ../common/session.c(132): using config file /home/pi/seafile/conf/ccnet.conf Starting seafile server, please wait ... Seafile server started Done.
然后启动seahub,这时候需要配置管理员账号和密码:
pi@raspberrypi:~/seafile/seafile-server-6.2.5 $ ./seahub.sh start LC_ALL is not set in ENV, set to en_US.UTF-8 ./seahub.sh: line 209: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8): No such file or directory Starting seahub at port 8000 ... ---------------------------------------- It's the first time you start the seafile server. Now let's create the admin account ---------------------------------------- What is the email for the admin account? [ admin email ] xxxxxx@126.com # 改为你的邮箱,作为管理员账号 What is the password for the admin account? [ admin password ] # 输入密码 Enter the password again: [ admin password again ] # 再次输入密码 ---------------------------------------- Successfully created seafile admin ---------------------------------------- Seahub is started Done.
现在可以在在浏览器中访问了:
http://{IP}:8000
正常会出现这个界面:
然后用上边配置的管理员账号和密码登陆就可以了,默认会自动创建一个私人资料库,这里边浏览、上传、下载文件都应该没有问题。
作为一个功能比较完整的云存储方案,seafile还提供了桌面客户端和手机客户端,都可以免费用,简直方便的不行,现在就可以去试试了。不过这篇文章还没有结束。
4、配置Nginx
为什么要用Nginx?Nginx是一个Web服务器,SeaHub可以认为是一个应用服务器。使用Nginx可以做负载均衡、静态文件缓存、权限控制等,而SeaHub则专注于业务功能,分工不同。对于大型的系统,Nginx更是必须具备的。
先说Nginx的安装,执行命令安装已经打包的程序就行了。
sudo apt-get install nginx
默认情况下nginx会安装到/etc/nginx目录下,这里需要配置一个站点,做反向代理。
在/etc/nginx/sites-enabled目录下增加一个配置文件:seafile_site.conf(可以随便取名),nginx会自动加载这个目录下的文件:
server { # 站点监听端口,使用80更友好,这里测试,随便用了8800 listen 8800; # 服务器名称,这里使用了机器的局域网IP,如果有公网,可以用公网IP或域名 server_name 192.168.0.196; proxy_set_header X-Forwarded-For $remote_addr; # seahub 的反向代理配置 location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $server_name; proxy_read_timeout 1200s; # used for view/edit office file via Office Online Server client_max_body_size 0; access_log /var/log/nginx/seahub.access.log; error_log /var/log/nginx/seahub.error.log; } # seafile server的反向代理设置 location /seafhttp { rewrite ^/seafhttp(.*)$ $1 break; proxy_pass http://127.0.0.1:8082; client_max_body_size 0; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 36000s; proxy_read_timeout 36000s; proxy_send_timeout 36000s; proxy_request_buffering off; send_timeout 36000s; } location /media { root /home/pi/seafile/seafile-server-latest/seahub; } }
因为都部署在一台服务器,所以这里反向代理的IP都是127.0.0.1,如果Nginx和seafile部署在不同的机器,这里需要替换成seafile服务器的IP。
然后启动nginx,如果已经启动则重新加载nginx配置:
sudo nginx
sudo nginx -s reload
nginx配置更新成功后,还需要访问seahub的原地址 http://{IP}:8000,修改两个URL参数,修改为Nginx代理站点的地址。
然后应该可以通过 http://{IP}:8800端口访问了,效果和访问http://{IP}:8000一样。
5、公网访问
只在局域网中访问没有太大意义,现在需要移动起来,这就需要公网访问。
(1)有公网IP
如果有固定的公网IP,直接域名解析,然后路由器上做个端口转发就可以了,但是个人用户一般是没有固定的公网IP的,甚至连公网IP都没有。
这里假设运营商会分配随机的公网IP,然后通过动态DNS来访问。
注册 https://www.noip.com 获取一个免费域名和动态DNS支持。
然后安装noip duc:
mkdir noip cd noip wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz tar vzxf noip-duc-linux.tar.gz cd noip-2.1.9-1 make sudo make install
make install时会询问一些配置:
Auto configuration for Linux client of no-ip.com. Please enter the login/email string for no-ip.com no-ip账号邮箱 Please enter the password for user 'xxxxx@yy.com' no-ip账号密码 Only one host [bossmaseafile.hopto.org] is registered to this account. It will be used. Please enter an update interval:[30] 10 更新时间间隔,我这里写的10分钟 Do you wish to run something at successful update?[N] (y/N) ^M 更新成功后不需要运行其它程序 New configuration file '/tmp/no-ip2.conf' created. mv /tmp/no-ip2.conf /usr/local/etc/no-ip2.conf
然后运行no-ip客户端:
sudo /usr/local/bin/noip2
查看no-ip状态:
sudo /usr/local/bin/noip2 -S
然后还需要在路由器上做DNAT,这里还是使用8800,将8800端口转发到nginx所在服务器的8800端口。
不同的路由器配置界面不同,找端口转发功能。
然后还需要再次更改步骤4中的SERVICE_URL和FILE_Server_ROOT,更改IP地址为通过noip获取到的域名。
现在试试用noip分配的免费域名访问吧。
(2)没公网IP
现在IPv4资源比较紧张,运营商又发展了很多用户,所以很多运营商都不分配公网IP给个人用户,这时候就要通过别的方式解决了,网上的方案大多是通过某个服务器建立到你机器的隧道,然后为这个隧道分配个域名,通过这个域名访问你的机器。
比较知名的服务商有ngrokc,不过是国外的,可能慢一些,国内有个natapp也提供了类似服务。这里就以natapp为例。这里为了测试注册一个免费的隧道:
然后安装natapp的客户端,官网也提供了树莓派的安装包: https://natapp.cn/#download
下载后上传到树莓派,我这里上传到/home/pi/natapp了,然后设置下文件执行权限:
cd /home/pi/natapp sudo chmod a+x natapp
现在使用natapp网站注册的隧道token进行启动:
./natapp -authttoken=这里换成你的token
启动成功后可以看到分配的随机免费域名:
然后还需要再次更改步骤4中的SERVICE_URL和FILE_Server_ROOT,更改IP地址为这个域名。
然后就可以使用这个域名进行连接了。
6、演示截图
最后来几张seafile不同客户端的演示截图:
(1)Windows 本地文件夹:这个文件夹会自动双向同步云存储中的内容。
(2)Windows 桌面客户端:这个客户端可以管理文件,以及进行一些设置。
(3)手机APP:可以管理文件、自动上传照片等。
坑比较多,最后祝大家安装顺利。
以上所述就是小编给大家介绍的《在树莓派3B+上搭建个人私有云存储》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Erlang私有函数的私有程度如何?
- JavaScript 新语法详解:Class 的私有属性与私有方法
- 实战maven私有仓库三部曲之二:上传到私有仓库
- [树莓派]树莓派的入门教程
- 实战maven私有仓库三部曲之三:Docker下搭建maven私有仓库
- 「玩转树莓派」树莓派 3B+ 安装 OpenCv
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
大数据时代的算法:机器学习、人工智能及其典型实例
刘凡平 / 电子工业出版社 / 2017-1 / 49
《大数据时代的算法:机器学习、人工智能及其典型实例》介绍在互联网行业中经常涉及的算法,包括排序算法、查找算法、资源分配算法、路径分析算法、相似度分析算法,以及与机器学习相关的算法,包括数据分类算法、聚类算法、预测与估算算法、决策算法、关联规则分析算法及推荐算法。《大数据时代的算法:机器学习、人工智能及其典型实例》涉及的相关算法均为解决实际问题中的主流算法,对于工作和学习都有实际参考意义。 《......一起来看看 《大数据时代的算法:机器学习、人工智能及其典型实例》 这本书的介绍吧!