ubuntu搭建家庭服务器,nginx搭建文件服务器

大家好,如果您还对ubuntu搭建家庭服务器不太了解,没有关系,今天就由本站为大家分享ubuntu搭建家庭服务器的知识,包括nginx搭建文件服务器的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

怎么搭建本地Ubuntu镜像服务器

一.需求分析

最近公司软件Team有个需求是这样的:能不能在局域网搭建一个Ubuntu镜像服务器,

这样作的好处是可以节省Ubuntu某些常用工具的安装时间。

二.部署过程

2.1测试环境

目前在公司内有一台能连接到外网的Ubuntu机器, IP: 192.168.8.173,

Ubuntu版本为Ubuntu 9.04 i686。

2.2搭建步骤

为了创建Ubuntu mirror服务器,最少需要60G硬盘空间,Ubuntu每个版本都有32 bit

和64 bit两个版本,有两组deb包。当然可以创建Ubuntu一个版本的32 bit和64 bit的

镜像服务器,也可以创建全部版本的镜像。

这里使用sohu公司的mirror地址作为本地Ubuntu Source服务器,使用sohu的原因是:

1. sohu的Ubuntu Source服务器速度相当快

2. sohu的ubuntu Source服务器每天会和Ubuntu官方服务器同步一次,这样可以保

证我们使用的是最新的软件包。

修改方式如下:

root@ms~: cat/etc/apt/sources.list

deb jaunty main restricted universe multiverse

deb jaunty-security main restricted universe multiverse

deb jaunty-updates main restricted universe multiverse

deb jaunty-proposed main restricted universe multiverse

deb jaunty-backports main restricted universe multiverse

deb-src jaunty main restricted universe multiverse

deb-src jaunty-security main restricted universe multiverse

deb-src jaunty-updates main restricted universe multiverse

deb-src jaunty-proposed main restricted universe multiverse

deb-src jaunty-backports main restricted universe multiverse

安装下面工具:

root@ms~: apt-get install apt-mirror

root@ms~: apt-get install apache2

下面就构建Ubuntu 9.04 32bit的本地Ubuntu mirror服务器为例子,来说明如何配置:

修改配置文件:

root@ms~: cat/etc/apt/mirror.list

############# config##################

#

# set base_path/var/spool/apt-mirror

#

# set mirror_path$base_path/mirror

# set skel_path$base_path/skel

# set var_path$base_path/var

# set cleanscript$var_path/clean.sh

# set defaultarch

# set postmirror_script$var_path/postmirror.sh

set run_postmirror 0

set nthreads 20

set _tilde 0

#

############# end config##############

deb-i386 jaunty main restricted universe multiverse

deb-i386 jaunty-security main restricted universe multiverse

deb-i386 jaunty-updates main restricted universe multiverse

#deb jaunty-proposed main restricted universe multiverse

#deb jaunty-backports main restricted universe multiverse

deb-src jaunty main restricted universe multiverse

deb-src jaunty-security main restricted universe multiverse

deb-src jaunty-updates main restricted universe multiverse

#deb-src jaunty-proposed main restricted universe multiverse

#deb-src jaunty-backports main restricted universe multiverse

#clean

备注:

deb-i386 http://表示下载32 bit版本的deb软件

deb http://表示下载64bit版本的deb软件

jaunty表示Ubuntu 9.04的代号

设置完成后,输入下面命令:

root@ms~: apt-mirror

这时系统会启动20个线程运行wget到 下面下载相应的

deb包。时间比较的长,该命令执行完成后,/var/spool/apt-mirror目录下就有了所有需

要的deb包和相应的配置文件。

由于我是从sohu下载的,所以实际的文件在:

/var/spool/apt-mirror/mirror/mirrors.sohu.com/ubuntu目录下。

这样,本地就有了所有Ubuntu Source服务器所需要的文件,然后开启相应的服务:

这里使用apache2作为Web服务器,默认根目录在/var/www/,所以可以在该目录下做

个链接,如下所示:

root@ms~: cd/var/www

root@ms~: ln/var/spool/apt-mirror/mirror/mirrors.sohu.com/ubuntu-s

开启web服务:

root@ms~: apache2ctl start

打开浏览器输入下面地址即可看到和sohu mirror一样的页面:

同时也可以使用crontab进行每天的更新,修改配置文件:

root@ms~: cat/etc/cron.d/apt-mirror

#

# Regular cron jobs for the apt-mirror package

#

#0 4*** apt-mirror/usr/bin/apt-mirror>/var/spool/apt-mirror/var/cron.log

把命令前面的“#”去掉即可,这样系统会自动使用apt-mirror去和sohu服务器更新。

最后,我们所要做得就是在客户端的机器上修改更新源配置文件,将地址改成本地

mirror服务器的地址即可,如下所示:

root@ms~: cat/etc/apt/sources.list

deb jaunty main restricted universe multiverse

deb jaunty-security main restricted universe multiverse

deb jaunty-updates main restricted universe multiverse

deb jaunty-proposed main restricted universe multiverse

deb jaunty-backports main restricted universe multiverse

deb-src jaunty main restricted universe multiverse

deb-src jaunty-security main restricted universe multiverse

deb-src jaunty-updates main restricted universe multiverse

deb-src jaunty-proposed main restricted universe multiverse

deb-src jaunty-backports main restricted universe multiverse

执行“apt-get update”来重建本地索引,这样以后就会使用本地的Mirror服务器进行更新

如何在Ubuntu上搭建一台安全的Apache Web服务器

本教程假设你已有一台在运行的Ubuntu服务器,网络方面已设置好,而且可以通过SSH进行访问。

Apache2是许多安装的Linux发行版使用的默认Web服务器。它不是对所有环境来说唯一可用的Web服务器,也不是最佳的Web服务器,但是它适合许多使用场景。在安装过程中,系统可能会询问你哪个Web服务器要自动重新配置。选择“apache2”即可。

安装Apache2

使用下面这个命令,安装Apache2及其他库。

$ sudo apt-get-y install apt-get install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt libapache2-mod-suphp libopenssl-ruby libapache2-mod-ruby

更新时区(TimeZone)和检查正确时间

为了减小共享数据或镜像数据方面的混淆,所有服务器在运行时都应该尽可能接近同步状态。一些加密密钥管理系统需要准确的时间。最后,就企业服务器而言,《萨班斯-奥克斯利法案》(Sarbanes-Oxley)和《健康保险可携性及责任性法案》(HIPAA)的安全规则要求正确的时间戳机制。

$ sudo apt-get-y install openntpd tzdata

$ sudo dpkg-reconfigure tzdata

$ sudo service openntpd restart

禁止AppArmor冲突

虽然AppArmor这个套件的确提供了一层额外的安全,但在我看来,需要为每个系统创建自定义配置文件。这不是本教程所探讨的内容。所以眼下,我们会禁用AppArmor,防止与任何默认的配置发生冲突。

$ sudo/etc/init.d/apparmor stop

$ sudo update-rc.d-f apparmor remove

$ sudo apt-get remove apparmor apparmor-utils

注意:如果是生产环境下的Web服务器,不建议禁用AppArmor。如果有些人想创建自定义的AppArmor配置文件,请参阅官方说明文档()。

阻止分布式拒绝服务(DDoS)攻击

DDoS攻击是一种分布式拒绝服务攻击。有一个Apache模块可以阻止这类攻击。

$ sudo apt-get-y install libapache2-mod-evasive

$ sudo mkdir-p/var/log/apache2/evasive

$ sudo chown-R www-data:root/var/log/apache2/evasive

把下面这个命令添加到mod-evasive.load的末尾处。

$ sudo nano/etc/apache2/mods-available/mod-evasive.load DOSHashTableSize 2048

DOSPageCount 20#请求同一页面的最大数量

DOSSiteCount 300#同一侦听器上同一客户端IP请求任何对象的总数量

DOSPageInterval 1.0#页面数量阈值的间隔

DOSSiteInterval 1.0#站点数量阈值的间隔

DOSBlockingPeriod 10.0#客户机IP被阻止的时间段

DOSLogDir“/var/log/apache2/evasive”

DOSEmailNotify admin@domain.com

阻止Slowloris攻击

还有一个Apache模块可以阻止Slowloris攻击,不过模块名称取决于你使用的Ubuntu的具体版本。如果是Ubuntu 12.10或以后版本:

$ sudo apt-get-y install libapache2-mod-qos

然后,检查qos.conf中的配置:

$ sudo nano/etc/apache2/mods-available/qos.conf

##服务质量方面的设置

#处理来自多达100000个不同IP的连接

QS_ClientEntries 100000

#只允许每个IP仅50条连接

QS_SrvMaxConnPerIP 50

#活动TCP连接的最大数量限制在256条

MaxClients 256

#当70%的TCP连接被占用时,禁用保持活动连接状态

QS_SrvMaxConnClose 180

#最小请求/响应速度(拒绝阻塞服务器的慢速客户端,即slowloris保持连接开启,不提出任何请求):

QS_SrvMinDataRate 150 1200

#并限制请求标题和主体(注意,这还限制了上传和发帖请求):

# LimitRequestFields 30

# QS_LimitRequestBody 102400

注意:如果你运行12.04之前的Ubuntu版本,改而使用下面这个命令:

$ sudo apt-get-y install libapache2-mod-antiloris

检查antiloris.conf中的配置

$ sudo nano/etc/apache2/mods-available/antiloris.conf

#每个IP地址处于READ状态的最大并行连接数量

IPReadLimit 5

阻止DNS注入攻击

Spamhaus这个模块使用域名系统黑名单(DNSBL),目的是为了阻止通过Web表单实现的垃圾邮件转发,防止URL注入攻击,阻止来自机器人程序的http DDoS攻击,通常保护服务器,远离已知的恶意IP地址。

$ sudo apt-get-y install libapache2-mod-spamhaus

$ sudo touch/etc/spamhaus.wl Append the config to apache2.conf

$ sudo nano/etc/apache2/apache2.conf

MS_METHODS POST,PUT,OPTIONS,CONNECT

MS_WhiteList/etc/spamhaus.wl

MS_CacheSize 256

重启Apache装入新模块

$ sudo service apache2 restart

现在Web服务器已安装完毕,并在正常运行。将Web浏览器指向你的域,即可看到证明你一切正常的默认消息。作为最后的检查机制,运行下面这个命令,看看你的服务器有没有任何错误信息。要是有错误信息,你需要上谷歌搜索一下,立马解决这些错误。

$ sudo tail-200/var/log/syslog

低成本搭建一台 Unraid 家庭存储服务器:中篇

虎年最后一篇文章,继续上一篇内容,探讨如何提升硬件的易用性问题。

写在前面

如果你的需求简单且明确,无需界面操作,上一篇内容中的 Ubuntu Server应该已经满足你的需求。

然而,如果你倾向于使用一个简洁美观的界面来管理配置与查看状态,可以考虑使用 Unraid,一个提供直观管理界面的选项(省事)。

如果你已决定搭建 Unraid设备,直接阅读下一小节。如果你对选择系统背后的考量感兴趣,可以继续阅读关于“系统选择”的内容。

系统选择 Unraid vs其他方案

在前一篇文章中提过,尽可能避免采用“黑盒方案”或非正版授权方案。因此,功能丰富的 Windows Server版本与被广泛验证的群晖 DSM界面自然被排除。在排除了 Windows Server和群晖后,大量用户支持的 TrueNAS和 Unraid成为了决策范围内的主要选择。

在硬件需求方面,Unraid和 TrueNAS最大的差异在于对 ECC内存的依赖。在上篇文章发布后,有用户在评论区讨论了这一问题。简而言之,ECC内存的使用与否是影响用户选择 TrueNAS的关键因素之一。

在 TrueNAS的核心硬件指南中,强调了内存对性能和数据安全的重要性。内存对于 TrueNAS的作用包括提升每一个组件的性能和避免因设备和内存问题导致的数据错误、数据丢失和损坏数据写入。

Unraid默认使用 XFS,但允许用户调整为 Btrfs,以获得类似于 ZFS的数据保护能力。相比 ZFS,Btrfs进一步减少了对 ECC内存的依赖。群晖在启用 Btrfs作为主要文件系统后发布了一篇白皮书,详细描述了更多关于数据保护技术的信息。

由于上篇文章中选择的设备不支持 ECC内存,Unraid成为一个合适的选择。对于有“ECC焦虑”的用户,可以参考文章结尾的“使用 Btrfs来缓解数据完整性恐慌”,获得一些缓解。

安装 Unraid

最简便的 Unraid安装方案是制作 USB安装盘。手头有一块闲置的 16G U盘,即可使用。此 U盘将在使用过程中始终连接设备,推荐选择质量好且口碑佳的盘。

访问 Unraid官方网站,获取适合操作系统的 USB安装盘制作工具。打开工具,推荐选择稳定版(stable)版本,如需手动下载镜像,可从官方页面获取不同版本的系统镜像。对于硬件兼容性差异不明确的情况,始终选择包含更新补丁的最新稳定版是最佳选择。

制作完成后,将 U盘插入机器,重新启动,进入 Grub引导界面。直接回车进入系统,首次安装时建议连接显示器或视频采集卡,检查是否有异常,后续使用时可不必连接视频输出设备。

启动过程中,系统会持续输出日志,等待日志输出完毕,完成“安装”的第一步。访问输出的 IP地址,即可打开管理页面。完成超级管理员的用户密码设置,基础安装完成。

根据路由器设置,可固定 Unraid的 IP地址,或使用 arp-a查询每次使用的 IP地址。

遇到安装问题时,参考“踩坑”部分。

规划磁盘用途

设置完超级管理员密码后,登录系统,规划磁盘用途。在不同地方设置的好处包括稳定性提高,而缺陷可能在于配置的复杂性。

配置 Unraid系统

完成基础安装和磁盘规划后,需要进行一些额外配置,以便愉快地使用它作为备份系统。

使用 Unraid作为在线备份

默认配置中包含共享设置,但不包含 Time Machine。根据文章第一篇提到的需求,希望这台设备能够支持日常在线 Time Machine备份,需要进行相应设置。

打开“共享”页面,查看所有存在的共享配置。点击“创建共享”按钮,进入“创建共享”页面。配置 Time Machine的步骤参考图片说明。在 macOS系统中,先访问“网络”,连接“Unraid”设备,输入账号密码完成连接,然后设置时间机器的备份地址。

完善 Docker容器使用

Unraid默认仅包含 docker容器,未提供 compose工具。为了简化 docker应用配置,可以从 GitHub下载最新版本的 compose。

完成下载后,执行文件完整性校验,将文件放入合适目录,即可在系统中使用 docker-compose进行容器编排。

Unraid踩坑经验谈

Unraid在硬件兼容性和开发人员数量上与群晖等存在差距。然而,大多数问题都是可解决的。

遇到的问题包括无法找到启动 U盘、软件无中文语言包、无法直接安装应用插件、磁盘消失、NTP服务不正常、调整磁盘阵列报错、初次授权刷新丢失阵列配置、官方网站无法直接使用优惠码购买等。

解决方法涉及调整 BIOS设置、禁用 RAID相关功能、调整 NTP服务器、重置磁盘阵列配置、确保硬件质量、调整系统语言、使用 SSH安装插件、调整磁盘配置、输入优惠码购买软件授权等。

其他:缓解数据完整性恐慌

在非 ECC内存环境下,使用 Btrfs可以降低对数据完整性的担忧。家用场景下,硬件组合选择非 ECC内存,使用 Btrfs作为文件系统,可以减少一些不必要的恐慌。

硬件组合包括宿主机质量、电力保障、硬盘质量、内存质量、操作和保存数据落地的程序逻辑。在非 ECC内存情况下,Btrfs的基础能力提供了数据完整性保障。了解 Btrfs的校验和机制后,可以分析在不同场景下可能出现的问题,以及如何应对。

使用 Btrfs后,数据完整性的保障体现在:数据落地前的校验、数据更新过程中的数据保护机制、读取数据的验证和修复。然而,读取数据时可能存在风险,但 Btrfs的自动修复机制可以一定程度上解决问题。在特定情况下,如果遇到数据问题,可以关闭读取时自动修复功能,提前暴露问题。

总体而言,家用场景中使用非 ECC内存的 Btrfs仍能提供可靠的数据保护,前提是硬件质量可靠、电力供应稳定,不进行高强度、长时间运行。即使出现问题,验证和纠错机制也能提供一定程度的保障。

最后

文章至此结束,后续将分享更详细的使用体验。祝读者和朋友们新的一年里问题“兔少”顺利“兔多”,生活“兔喜”。

阅读剩余
THE END