我刚刚重新安装了 XAMPP。当第一次打开 PHPMyAdmin 时,我注意到它非常慢。在 localhost 上打开每个页面需要将近 5 秒的时间是没有意义的。我做了一个小测试案例来转移对 PHPMyAdmin 的指责:
$con = new PDO("mysql:host=localhost;dbname=mysql", "root", "");
$statement = $con->query('SELECT host,user,password FROM user;');
$users = $statement->fetchAll(PDO::FETCH_ASSOC);
Run Code Online (Sandbox Code Playgroud)
上面的脚本运行只需要大约 3 秒(尽管我第一次运行它需要接近 8 秒才能加载。)
然后检查它是否是 PDO 的错,我尝试使用mysql_connect:
$con = mysql_connect("localhost", "root", "");
mysql_select_db("mysql", $con);
$result = mysql_query('SELECT host,user,password FROM user;');
Run Code Online (Sandbox Code Playgroud)
需要同样长的时间才能完成。
一开始我以为是 PHP 的错,但是 PHP 代码和静态文件的提供速度比我单击刷新要快。我通过运行这个小脚本来测试 PHP:
header("Content-Type: text/plain");
for($i = 0; $i < 5000; $i++)
{
echo sha1(rand()) . "\n";
}
Run Code Online (Sandbox Code Playgroud)
5000 次sha1计算后,页面的显示速度仍然比我刷新窗口的速度要快。
然后我认为这是MySQL的错。但同样,没有进行太多测试就可以确定 MySQL 的运行速度比我需要的要快。使用 MySQL CLI 客户端,用户选择查询甚至不需要可测量的时间 …
在我的工作中,前缀长度为 31(即它们只适合 2 个 IP 地址)的 IP 前缀通常在“linknet 地址”中描述。最近我注意到这个词在我的公司之外似乎不存在。如果我在 Google 上搜索“linknet 地址”或“link net 地址”,我只能找到对名为“Linknet”的 ISP 的引用。
是否存在描述此类 IP 前缀的术语?
我之所以这么问是因为我正在开发一个系统,其中此类 IP 前缀被特殊对待,所以我需要一个可以用来指代它们的术语。如果这个术语不是我公司内部编造的,我更愿意。
在我的应用程序中,我希望位置“/”返回静态 index.html 文件,我希望“/static”从文件夹中提供静态文件,并且我希望所有其他请求返回 404 NOT FOUND。稍后我会将所有其他请求重定向到 WSGI 服务器。
这是目前我的配置:
# Dev server.
server {
listen 1337;
charset UTF-8;
location / {
rewrite ^ static/index_debug.html break;
}
location /static {
alias /home/tomas/projects/streamcore/static;
}
}
Run Code Online (Sandbox Code Playgroud)
静态文件夹工作正常,但“/”返回 404 NOT FOUND。我也试过:
alias /home/tomas/projects/streamcore/static/index_debug.html;
Run Code Online (Sandbox Code Playgroud)
在位置块中,但返回 500 INTERNAL SERVER ERROR。似乎alias不喜欢单个文件。另外我试过:
try_files static/index_debug.html;
Run Code Online (Sandbox Code Playgroud)
但这会阻止服务器以错误“try_files 指令中的参数数量无效”开始。显然try_files实际上需要您尝试多个文件,这不是我正在寻找的行为。
所以我的问题是:如何配置位置块以始终返回静态文件?
编辑:我从其他答案中看到alias确实应该接受单个文件作为参数,所以我尝试了:
location = / {
alias /home/tomas/projects/streamcore/static/index_debug.html;
}
Run Code Online (Sandbox Code Playgroud)
但我仍然只收到 500 INTERNAL SERVER ERROR。“/”请求的错误日志说:
[警报] 28112#0:*7“/home/tomas/projects/streamcore/static/index_debug.htmlindex.html”不是目录
为什么它试图打开“index_debug.htmlindex.html”?我没有在index任何地方使用该指令。
由于某种原因,我的域名提供商不允许在其 DNS 编辑器中使用 CAA 记录。当我邮寄给他们时,他们说我可以改用 TXT 记录。经过一个小时的谷歌搜索,这似乎是不正确的。我找不到有关为此使用 TXT 记录的任何信息。我什至浏览了 RFC,但找不到任何提及 TXT 记录的内容。
CAA 是否普遍支持 TXT 记录,或者我的域名提供商是否直接错误?
我有一台装有 8 个磁盘托架的服务器,里面装满了 3 TB 磁盘。使用 4 个镜像 vdev,每个镜像有 2 个磁盘,这为我提供了 12 TB 的冗余存储。
这是问题所在 - 我在某处读到我需要“每 TB 去重数据需要 x GB 的 RAM”(释义)。我愚蠢地认为这意味着如果我的池包含大部分无法重复数据删除的数据,它就不会使用太多 RAM。令我沮丧的是,“重复数据删除”似乎是指池中已启用重复数据删除的所有数据。
结果是我的系统最近开始锁定,大概是由于 RAM 不足,需要重置。当我意识到我的错误时,我想我可以通过创建一个禁用重复数据删除的新数据集来修复它,将我的所有数据复制到新数据集,然后销毁旧数据集。幸运的是,我只填满了大约 35% 的游泳池。在尝试此之前,我禁用了所有数据集的重复数据删除。
不幸的是,每当我尝试从旧数据集中删除某些内容时,我系统上的所有 16 个线程都会变为 100%,并且所有 24 GB 的内存突然被填满(我看到了这一点htop)然后我的系统锁定。
有什么办法可以在不破坏我的整个游泳池并重新开始的情况下将自己挖出这个洞吗?
我正在尝试 sudo 一些位于自定义路径中的二进制文件。sudo虽然我运行时会删除该自定义路径,但sudo -E应该保留我的路径。为什么不起作用?
$ 环境 | egrep ^路径 PATH=/home/codemonkey/.nvm/v0.6.1/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/gam es:/usr/游戏 $ sudo 环境 | egrep ^路径 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin $ sudo -E 环境 | egrep ^路径 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
我知道如何解决它,我只想知道为什么sudo -E不起作用
我刚买了一台服务器,意识到它可以为我所有的驱动器托架供电,但不能为我购买的内部 SSD 供电。但是,它有 2 个免费的 4 针软盘电源连接器:
是否可以使用适配器将它们转换为 SATA 电源连接器?
我已经搜索了一段时间,我可以找到很多SATA 到 4 针软盘(错误的方式),但过了一会儿我在 ebay 上找到了这个适配器:
这是合法的吗?这可以为 SSD 供电吗?ebay 上的反馈似乎过于积极,而且闻起来很腥,所以我不相信。
我觉得在 Serverfault 问题中链接到产品很奇怪,但它非常相关。如果这违反规则,请删除链接
我需要为我的应用程序的邮件功能定义一个这样的环境变量才能工作:
RUBY_MAIL_SMTP_SETTINGS='
:address: "smtp.example.com"
:port: "25"
:authentication: :plain
:encryption: :tls
:user_name: "user"
:password: "pass"
'
Run Code Online (Sandbox Code Playgroud)
将其粘贴到 bash 终端可以正常工作,但将其放入环境文件并从带有该EnvironmentFile选项的 systemd 单元文件中引用它不起作用:
juli 01 07:17:58 myserver systemd[1]:忽略无效环境 'RUBY_MAIL_SMTP_SETTINGS= juli 01 07:17:58 myserver systemd[1] ::地址:“smtp.example.com” juli 01 07:17:58 myserver systemd[1]::端口:“25” juli 01 07:17:58 myserver systemd[1]::authentication::plain juli 01 07:17:58 myserver systemd[1]::encryption::tls juli 01 07:17:58 myserver systemd[1]::user_name:“用户” juli 01 07:17:58 myserver systemd[1]::password:"pass"':/usr/local/etc/myproject/environment
我试过在每一行后附加一个反斜杠,如下所示:
RUBY_MAIL_SMTP_SETTINGS='\
:address: "smtp.example.com"\
:port: "25"\
:authentication: :plain\
:encryption: :tls\
:user_name: "user"\
:password: "pass"
'
Run Code Online (Sandbox Code Playgroud)
这有效,但被解释为一长行,这意味着无法将内容解析为 YAML。
那么这是否意味着无法将多行环境变量添加到 systemd 环境文件中?
我的服务器上有一个 Ruby 应用程序,我们称之为“alpha”。该应用程序发出程序名称为“alpha”的系统日志消息。我想根据消息类型将日志消息分成单独的文件,例如“身份验证”消息(登录)或系统资源警告。
除了我的程序名称之外,我没有任何方法可以向 syslog 指定“消息类型”,因此我只是在消息开头添加“AUTH:”、“SYSTEM:”等。
使用 Google 和手册页,我提出了以下条件:
:programname,isequal,"alpha" /var/log/alpha.log
Run Code Online (Sandbox Code Playgroud)
这会将来自“alpha”应用程序的所有消息记录到正确的日志文件中。
:msg,startswith," AUTH:" /var/log/alpha-auth.log
Run Code Online (Sandbox Code Playgroud)
这会将所有以“AUTH:”开头的消息记录到正确的日志文件中。
显然,最后一个条件不仅适用于“alpha”,还适用于所有消息。我想将这些条件合并为“来自 alpha 的所有以 AUTH: ... 开头的消息”。是否可以像这样将过滤器与“and”组合起来?
“BSD 样式块”看起来很完美,因为我可以为我的应用程序定义一个块,并且所有条件仅适用于来自该应用程序的消息。不幸的是,根据文档,该功能不再受支持(已弃用?),并且我不想依赖已弃用的功能。rsyslog v7+ 是否引入了此类块的替代方案?
使用基于表达式的过滤器,我已经成功地得到了我想要的结果,但我感觉我正在使用火箭筒杀死一只苍蝇:
if $programname == "alpha" and $msg startswith " AUTH:" then \
/var/log/alpha-auth.log
Run Code Online (Sandbox Code Playgroud)
执行此操作的“正确”(即最简单且最不容易出错)方法是什么?
我使用的是 Debian Jessie,目前意味着 rsyslog 8.4.2
我通过 PuTTY 使用 VIM 在我的开发服务器上工作,但是当我必须处理包含标题中提到的字符的文件时,它变得相当困难。它不仅让 VIM 看起来像这样
Denne applikasjonen krever 在 Javascript er aktivert。Bruk en nettleser som støtter JavaScript eller aktiver JavaScript i din nÃ¥vÃ|rende nettleser。
但它也完全搞砸了 VIM,使视觉插入符号相对于我打字时出现的文本位置完全随机。
我正在编辑的文件使用 ISO-8859-1 编码
root@foo:~/www/pltest# file --mime-encoding index.php
index.php: iso-8859-1
Run Code Online (Sandbox Code Playgroud)
PuTTY 在设置->窗口->翻译中设置为期望 ISO-8859-1。所以唯一的问题可能是 Debian。如果我尝试在控制台中输入上述任何字符,随机出现:
root@foo:~/www/pltest# ���������
Run Code Online (Sandbox Code Playgroud)
知道如何让 Debian 允许 ISO-8859-1 符号吗?
解决了(部分)!显然,显示符号就像打印 /etc/locale.alias 一样简单,在列表中找到我的语言环境并将相应的语言代码(在我的例子中为 nb_NO.ISO-8859-1)设置为 LANG 环境变量。但是,我仍然无法在 PuTTY 窗口中输入字符。每当我尝试时,我都会听到 Windows 错误“叮”。
有任何想法吗?
这一直运行良好,直到几天前。我不记得对服务器做了什么导致它开始关闭连接。另外我不知道 exitcode 128 是什么意思,也找不到任何关于它的信息。这是 FileZilla 对连接尝试的回应
状态:连接到 foo.bar.no... 响应:fzSftp 启动 命令:打开“root@foo.bar.no” 22 命令:通过:******* 状态:连接到 foo.bar.no 错误:连接被服务器关闭,退出代码为 128 错误:无法连接到服务器
尝试连接 WinSCP 还告诉我服务器关闭了错误代码 128 的连接,另外还告诉我:
无法初始化 SFTP 协议。主机是否运行 SFTP 服务器?
我可以使用 PuTTY SSH 连接到服务器没问题。有任何想法吗?