调整专用虚拟web服务器

当你有一个专用的虚拟服务器来运行你的网站时,很有可能它是为每个人配置的,而不是为最大限度地提高运行网站的性能而定制的。...

当你有一个专用的虚拟服务器来运行你的网站时,很有可能它是为每个人配置的,而不是为最大限度地提高运行网站的性能而定制的。

Contents

[hide]

概述

我们希望最大限度地提高性能的问题有很多:

  • Linux configuration There are usually services running that don’t need to be, wasting memory that could be used for more connecti***.
  • MySQL configuration Often the default settings are based on a **all server, we can add a few key changes to increase performance a great deal.
  • Apache configuration By default most hosting providers install apache with nearly every module installed. There’s no reason to load modules if you aren’t ever going to use them.
  • PHP configuration The default PHP configuration is similarly bloated, there are usually a ton of unnecessary extra modules installed.
  • PHP Opcode Cache Instead of allowing PHP to recompile the scripts every single time, an opcode cache will cache the compiled scripts in memory for huge performance boosts.
  • Backups Should probably setup some automated backups, since your hosting provider isn’t going to do it for you.
  • Security Sure, Linux is secure enough by default, but there’s usually some glaring security issues that you can fix with a few quick settings.

linux配置

有相当多的调整,你可以做,这将略有不同的服务器上你使用。这些调整适用于运行CentOS的服务器,但它们应该适用于大多数DV服务器。

禁用dns

如果您的主机提供商为您的域处理DNS(可能),那么您可以禁用DNS服务。

disable dns /etc/init.d/named stop chmod 644 /etc/init.d/named

chmod命令从脚本中删除execute权限,停止脚本在启动时运行。

禁用spamassassain

如果你没有在你的服务器上使用电子邮件帐户,你不应该费心运行反垃圾邮件工具。(你也应该看看谷歌应用,更好的电子邮件解决方案)

/etc/init.d/psa-spamassassin stop chmod 644 /etc/init.d/psa-spamassassin

禁用xinetd

xinetd进程包含许多其他进程,这些进程对于典型的web服务器都没有用处。

/etc/init.d/xinetd stop chmod 644 /etc/init.d/xinetd

限制plesk内存使用

如果使用plesk面板,可以通过添加选项文件强制它使用较少的内存。

vi /usr/local/psa/admin/conf/httpsd.custom.include

向文件中添加以下行:

MinSpareServers 1 MaxSpareServers 1 StartServers 1 MaxClients 5

请注意,此选项已知可用于MediaTemple DV服务器,但尚未在任何其他服务器上选中。(见参考文献)

禁用或关闭plesk(可选)

如果你一年只使用一次Plesk,没有什么理由让它继续运行。请注意,此步骤是完全可选的,并且稍微高级一些。

运行以下命令关闭plesk:

/etc/init.d/psa stop

通过运行以下命令,可以禁用它在启动时运行:

chmod 644 /etc/init.d/psa

请注意,如果禁用了它,则在不更改文件权限的情况下无法手动启动它(chmodu+x)。

mysql配置

启用查询缓存

打开/etc/我的.cnf归档并在[mysqld]部分添加以下行,如下所示:

[mysqld] query-cache-type = 1 query-cache-size = 8M

如果愿意,可以向查询缓存添加更多内存,但不要使用太多内存。

禁用tcp/ip

默认情况下,有数量惊人的主机可以通过TCP/IP访问MySQL,这对网站来说毫无意义。您可以通过运行以下命令来确定mysql是否正在侦听TCP/IP:

netstat -an | grep 3306

要禁用,请在/etc中添加以下行/我的.cnf文件:

skip-networking

apache配置

打开你的httpd.conf文件文件,通常位于/etc/httpd/conf中/httpd.conf文件

找到如下所示的线条:

Timeout 120

把它改成:

Timeout 20

现在找到包含这些行的部分,并调整为类似的内容:

StartServers 2 MinSpareServers 2 MaxSpareServers 5 ServerLimit 100 MaxClients 100 MaxRequestsPerChild 4000

php配置

在PHP平台上调整服务器时需要记住的一点是,每个apache线程都将在内存中的一个单独位置加载PHP。这意味着,如果一个未使用的模块向PHP添加了256k内存,那么在40个apache线程中,您将浪费10MB内存。

删除不需要的php模块

你需要找到你的php.ini文件文件,通常位于/etc/php.ini文件(请注意,在某些发行版上,会有一个/etc/php.d/目录,其中包含许多.ini文件,每个模块一个。

用以下模块注释所有loadmodule行:

  • odbc数据库
  • snmp协议
  • pdo公司
  • odbc pdo
  • 迈斯克利
  • ioncube加载程序
  • json文件
  • imap公司
  • ldap协议
  • 课程

 

Todo:在此处添加更多信息。

php操作码缓存

有很多操作码缓存可以使用,包括APC、eAccelerator和Xcache,最后一个是我个人的偏好,因为稳定性。

下载xcache并将其解压到一个目录中,然后从xcache源目录运行以下命令:

phpize ./configure --enable-xcache make make install

打开你的php.ini文件文件并为xcache添加一个新节。如果php模块是从其他地方加载的,则需要调整路径。

vi /etc/php.ini

将以下节添加到文件:

[xcache-common] zend_extension = /usr/lib/php/modules/xcache.so [xcache.admin] xcache.admin.user = "myusername" xcache.admin.pass = "putanmd5hashhere" [xcache] ; Change xcache.size to tune the size of the opcode cache xcache.size = 16M xcache.shm_scheme = "mmap" xcache.count = 1 xcache.slots = 8K xcache.ttl = 0 xcache.gc_interval = 0 ; Change xcache.var_size to adjust the size of variable cache xcache.var_size = 1M xcache.var_count = 1 xcache.var_slots = 8K xcache.var_ttl = 0 xcache.var_maxttl = 0 xcache.var_gc_interval = 300 xcache.test = Off xcache.readonly_protection = On xcache.mmap_path = "/tmp/xcache" xcache.coredump_directory = "" xcache.cacher = On xcache.stat = On xcache.optimizer = Off

Todo:需要对此进行一点扩展,并在引用中链接到xcache。

备份

没有什么比网站的自动备份更重要的了。你可以从你的主机提供商那里得到快照备份,这也非常有用,但是我更喜欢自动备份。

创建自动备份脚本

我通常首先创建一个/backups目录,下面有一个/backups/files目录。如果需要,可以调整这些路径。

mkdir -p /backups/files

现在创建一个备份.sh备份目录中的脚本:

vi /backups/backup.sh

向文件中添加以下内容,并根据需要调整路径和mysqldump密码:

#!/bin/sh THEDATE=`date +%d%m%y%H%M` mysqldump -uadmin -pPASSWORD DATABASENAME > /backups/files/dbbackup$THEDATE.bak tar -cf /backups/files/sitebackup$THEDATE.tar /var/www/vhosts/my-website-path/httpdocs gzip /backups/files/sitebackup$THEDATE.tar find /backups/files/site* -mtime +5 -exec rm {} \; find /backups/files/db* -mtime +5 -exec rm {} \;

该脚本将首先创建一个日期变量,以便所有文件在单个备份中的名称相同,然后转储数据库,对web文件进行tar处理并gzip处理。find命令用于删除任何超过5天的文件,因为您不希望驱动器空间不足。

通过运行以下命令使脚本可执行:

chmod u+x /backups/backup.sh

接下来,您需要将其分配给cron自动运行。确保您使用的帐户可以访问备份目录。

crontab -e

将以下行添加到crontab:

1 1 * * * /backups/backup.sh

您可以通过在登录到用户帐户时运行脚本来提前测试脚本。(我通常以root用户身份运行备份)

与rsync进行异地同步备份

现在您已经运行了服务器的自动备份,您可以使用rsync实用程序将它们同步到其他地方。您需要阅读这篇关于如何设置ssh密钥以进行自动加密的文章登录:添加公共一个命令中的远程服务器SSH密钥

您可以通过在另一个位置的linux或Mac机器上运行这个命令来测试这一点(我在家有一个linux服务器,这就是我运行这个命令的地方)

rsync -a [email protected]:/backups/files/* /offsitebackups/

第一次运行这个程序需要相当长的时间,但是最后本地计算机应该在/offsitebackups/目录中有一个files目录的副本。(请确保在运行脚本之前创建该目录)

您可以通过将其添加到crontab行来安排:

crontab -e

添加以下行,它将在45分钟标记处每小时运行rsync。您会注意到我们在这里使用rsync的完整路径。

45 * * * * /usr/bin/rsync -a [email protected]:/backups/files/* /offsitebackups/

你可以安排它在不同的时间运行,或者每天只运行一次。这真的取决于你。

请注意,有许多实用程序允许您通过ssh或ftp进行同步。你不必使用rsync。

安全

您要做的第一件事是确保您有一个通过ssh使用的常规用户帐户,并确保您可以使用su切换到root。允许root通过ssh直接登录是一个非常糟糕的主意。

禁用通过ssh的根登录

编辑/etc/ssh/sshd_config文件,并查找以下行:

#PermitRootLogin yes

将该行更改为如下所示:

PermitRootLogin no

在进行此更改之前,请确保您有一个常规用户帐户,并且可以su到root,否则您可能会将自己锁定在外。

禁用ssh版本1

除了SSH版本2,实在没有理由使用其他任何东西,因为它比以前的版本更安全。编辑/etc/ssh/sshd_config文件,并查找以下部分:

#Protocol 2,1 Protocol 2

确保只使用协议2,如图所示。

重新启动ssh服务器

现在您需要重新启动SSH服务器才能使其生效。

/etc/init.d/sshd restart

检查端口是否打开

您可以使用以下命令查看服务器正在侦听的端口:

netstat -an | grep LISTEN

你真的不应该有任何监听端口22,80,可能8443以外的普莱斯克。

设置防火墙

主要文章:在Linux上使用Iptables

您可以选择设置iptables防火墙来阻止更多连接。例如,我通常会阻止对工作网络以外的任何其他端口的访问。如果你有一个动态IP地址,你会想避免这个选项。

如果到目前为止您已经完成了本指南中的所有步骤,那么可能没有必要在混合中添加防火墙,但最好了解您的选择。

 

 

另请参见

  • 在Linux上使用Iptables

参考文献

  • 优化DV服务器(mediatemple.net)
  • X缓存

  • 发表于 2021-04-13 12:50
  • 阅读 ( 44 )
  • 分类:互联网

你可能感兴趣的文章

qubes os 3.2:最安全的linux操作系统

...例如,Kali Linux是一个道德黑客和渗透测试Linux发行版。有服务器Linux操作系统、media center Linux发行版等。 ...

  • 发布于 2021-03-14 14:08
  • 阅读 ( 483 )

如何创建虚拟web开发环境和服务器

...Linux、Apache、MySQL、PHP捆绑在一起,就像你通常理解的web服务器一样工作。(一个密切相关的堆栈或一组技术是“LEMP”,其中“E”来自Apache的替代品Nginx的发音,称为“engine x”) ...

  • 发布于 2021-03-15 21:34
  • 阅读 ( 247 )

vpn和代理有什么区别?

...络),但它们通常都没有提到细节。我们经常听到的代理服务器和VPN连接到底是如何工作的?如果你想投入时间和精力来提高安全性,你需要确保你为正确的工作选择了正确的工具。 尽管vpn和代理有着本质上的不同,但它们有...

  • 发布于 2021-04-09 10:13
  • 阅读 ( 223 )

为开发人员提供最好的web主机,并托管您自己的应用程序

...免费管理。另一方面,开发人员的最佳主机为您提供虚拟服务器、操作系统的选择、专用资源和更多的实际管理。如果您拥有自己的工具或进行自己的开发,您相信谁会为您提供所需的平台?在下面的讨论中,为初学者分享您的...

  • 发布于 2021-05-21 22:21
  • 阅读 ( 110 )

共享web托管(shared web hosting)和vps web托管(vps web hosting)的区别

...小型网站的人来说,有两种选择:共享Web托管和虚拟专用服务器(VPS)Web托管。它们都将多个站点压缩到一台计算机中,从而允许所有者分担托管成本。比较两者,很容易看出共享web主机通常比VPS主机便宜。这就是为什么许多讨...

  • 发布于 2021-06-23 13:06
  • 阅读 ( 238 )

服务器(a server)和数据库(database)的区别

一般来说,服务器是一台高端网络计算机,管理连接的设备(“客户机”)及其作为中央资源对多个应用程序的访问,而数据库是支持应用程序后端数据处理的存储库。 什么是服务器(a server)? 根据组织的网络大小、用户数量...

  • 发布于 2021-06-25 03:04
  • 阅读 ( 258 )

iaas公司(iaas)和帕斯(paas)的区别

...将这些函数作为服务提供。它提供底层硬件技术,如虚拟服务器、操作系统、数据库解决方案、开发人员工具和网络支持。硬件和软件由平台提供商管理。该提供商通过管理云软件开发平台来促进云应用程序的部署,消除了配置...

  • 发布于 2021-06-26 08:46
  • 阅读 ( 229 )

副总裁(vps)和专用服务器(dedicated server)的区别

VPS和专用服务器的主要区别在于,VPS(或虚拟专用服务器)是服务器内部的专用虚拟环境,特定于客户机,而专用服务器是仅属于单个客户机的服务器。 Internet托管是指在Internet服务器上运行的服务。它们帮助个人和业务用户向...

  • 发布于 2021-06-30 21:46
  • 阅读 ( 144 )

虚拟专用网(vpn)和代理(proxy)的区别

... 代理 允许用户安全访问专用网络 允许用户从其他网络服务器访问资源 安装在操作系统级别 充当设备中单个应用程序的中间人 加密数据 不加密数据 定义 VPN或虚拟专用网络允许用户使用公共网络(例如因特网)访问专...

  • 发布于 2021-07-03 03:41
  • 阅读 ( 294 )

网络托管(web hosting)和网页设计(web designing)的区别

...在互联网上进行评估。提供这项服务的公司,提供他们的服务器计算机(物理位置)来存储网页和文件。网页设计是指创建网站或网页的视觉方面的过程。它包括网页的规划和创建。 网页托管和网页设计都有很大的不同。网络...

  • 发布于 2021-07-13 15:11
  • 阅读 ( 202 )
你的小开
你的小开

0 篇文章

相关推荐