这是一个关于选择正确的 Apache httpd MPM的规范问题。
我对 Apache 提供的不同 MPM 有点困惑——'worker'、'event'、'prefork' 等。
它们之间的主要区别是什么,我如何确定哪一个最适合给定的部署?
我们将在新服务器上运行 CentOS 7。我们在服务器内部的 raid6 中有 6 个 300GB 驱动器。(存储主要以 40TB RAID 盒的形式在外部存储。)如果格式化为单个卷,则内部卷大约为 1.3TB。我们的系统管理员认为将操作系统安装在一个 1.3TB 的大分区上是一个非常糟糕的主意。
我是生物学家。我们不断安装新软件来运行和测试,其中大部分都在 /usr/local 中。然而,因为我们有大约 12 位不精通计算机的生物学家在使用该系统,所以我们也在 /home 中收集了很多数据。我们的最后一个服务器有一个 200GB 的 / 分区,2.5 年后它已满 90%。我不希望这种情况再次发生,但我也不想违背专家的建议!
我们如何才能最好地使用 1.3TB 可用空间来确保空间在需要的时间和地点可用,但又不会为系统管理员带来维护噩梦?
我在 Apache 中有如下反向代理设置:
地址为 www.example.com/folder 的服务器 A 是反向代理服务器。
它映射到:地址为 test.madeupurl.com 的服务器 B
这种作品。但我遇到的问题是,在 www.example.com/folder 上,所有相关链接的形式都是 www.example.com/css/examplefilename.css 而不是 www.example.com/folder/css/examplefilename。 css
我该如何解决?
到目前为止,我的反向代理在服务器 A (www.example.com) 上有这个:
<Location /folder>
ProxyPass http://test.madeupurl.com
ProxyPassReverse http://test.madeupurl.com
</Location>
Run Code Online (Sandbox Code Playgroud) 我有一个守护进程,/var/run它的 PID 文件需要自己的目录,并授予守护进程的用户写权限。
我发现我可以使用以下命令创建这个目录:
# mkdir /var/run/mydaemon
然后我可以将其所有权更改为我希望在其下运行该进程的用户/组:
# chown myuser:myuser /var/run/mydaemon
但是每当我重新启动时,这个目录就会消失!每次机器启动时如何创建这个目录?
我不时收到奇怪的请求,要求在 Linux 系统上提供远程支持、故障排除和/或性能调整。
较大的公司通常已经制定了完善的程序来提供对供应商/供应商的远程访问,我只需要遵守这些程序。(不论结果好坏。)
另一方面,小公司和个人总是求助于我,让他们知道他们需要做什么来建立我。通常,他们的服务器直接连接到互联网,现有的安全措施包括其 Linux 发行版的默认设置。
我几乎总是需要 root 级别的访问权限,而为我设置访问权限的人不是专家系统管理员。我不想要他们的 root 密码,而且我也很确定我的行为不会是恶意的,但是我应该给出什么相当简单的说明:
(是的,我知道并总是警告那些客户,一旦我拥有管理员访问权限,隐藏任何恶意操作都是微不足道的,但让我们假设我没有什么可隐藏的,并积极参与创建审计跟踪。)
以下步骤可以改进什么?
设置帐户并安全地交换凭据
我提供了一个密码哈希,并要求我的帐户设置了该加密密码,因此我们不需要传输明文密码,我将是唯一知道密码的人,我们不会从可预测的弱密码。
sudo useradd -p '$1$********' hbruijn
Run Code Online (Sandbox Code Playgroud)
我提供了一个公钥 SSH(每个客户端的特定密钥对)并要求他们使用该密钥设置我的帐户:
sudo su - hbruijn
mkdir -p ~/.ssh
chmod 0700 ~/.ssh
echo 'from="10.80.0.0/14,192.168.1.2" ssh-rsa AAAAB3NzaC1y***...***== hbruijn@serverfault' >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)
设置 root (sudo) 访问权限
我要求客户使用sudo sudoedit或使用他们最喜欢的编辑器为我设置 sudo 并附加到/etc/sudoers:
hbruijn ALL=(ALL) ALL
Run Code Online (Sandbox Code Playgroud)
限制对我帐户的访问
通常,客户端仍然允许基于密码的登录,我要求他们添加以下两行以/etc/ssh/sshd_config至少将我的帐户限制为仅使用 SSH 密钥:
Match user hbruijn
PasswordAuthentication no
Run Code Online (Sandbox Code Playgroud)
根据客户端的不同,我将通过单个堡垒主机路由我的所有 …
我正在设置必须以 root 身份运行的常规系统维护任务。我计划默认使用 Ubuntu 14.04 LTS 附带的 cron 风格。
我看到前任管理员(离开公司后)直接编辑了 /etc/crontab。但是我知道另一种可能的方法是crontab -e作为 root使用。是否有任何令人信服的论据来使用其中之一,还是取决于偏好?
为同一个 VirtualHosts 声明多个端口:
SSLStrictSNIVHostCheck off
# Apache setup which will listen for and accept SSL connections on port 443.
Listen 443
# Listen for virtual host requests on all IP addresses
NameVirtualHost *:443
<VirtualHost *:443>
ServerName domain.localhost
DocumentRoot "/Users/<my_user_name>/Sites/domain/public"
<Directory "/Users/<my_user_name>/Sites/domain/public">
Order allow,deny
Allow from all
</Directory>
# SSL Configuration
SSLEngine on
...
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
如何为“domain.localhost”声明一个新端口(“listen”、ServerName、...)?
如果我添加以下代码,apache 也适用于(太多)'domain.localhost' 的所有其他子域(subdomain1.domain.localhost、subdomain2.domain.localhost,...):
<VirtualHost *:80>
ServerName pjtmain.localhost:80
DocumentRoot "/Users/Toto85/Sites/pjtmain/public"
RackEnv development
<Directory "/Users/Toto85/Sites/pjtmain/public">
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud) 我有一个java进程,它不会因SIGTERM或SIGKILL而死亡。
logstash 2591 1 99 13:22 ? 00:01:46 /usr/bin/java -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+DisableExplicitGC -Djava.awt.headless=true -Dfile.encoding=UTF-8 -XX:+HeapDumpOnOutOfMemoryError -Xmx1g -Xms256m -Xss2048k -Djffi.boot.library.path=/usr/share/logstash/vendor/jruby/lib/jni -Xbootclasspath/a:/usr/share/logstash/vendor/jruby/lib/jruby.jar -classpath : -Djruby.home=/usr/share/logstash/vendor/jruby -Djruby.lib=/usr/share/logstash/vendor/jruby/lib -Djruby.script=jruby -Djruby.shell=/bin/sh org.jruby.Main --1.9 /usr/share/logstash/lib/bootstrap/environment.rb logstash/runner.rb --path.settings /etc/logstash
Run Code Online (Sandbox Code Playgroud)
每次收到信号时它都会重生。
Sep 15 13:22:17 test init: logstash main process (2546) killed by KILL signal
Sep 15 13:22:17 test init: logstash main process ended, respawning
Run Code Online (Sandbox Code Playgroud)
这听起来很奇怪,但即使我重新启动服务器,它仍然没有死。
进程是通过 init 脚本使用以下命令执行的:
NAME=logstash
LS_USER=logstash
LS_OPTS="--path.settings=/etc/logstash"
LS_PIDFILE=/var/run/$NAME/$NAME.pid
LS_STDERR="/var/log/logstash/logstash.stderr"
DAEMON="/usr/share/logstash/bin/logstash"
runuser -s /bin/sh -c "exec $DAEMON ${LS_OPTS}" ${LS_USER} &>${LS_STDERR} …Run Code Online (Sandbox Code Playgroud) 这是一个建议的 关于理解和调试 Linux 系统上的软件防火墙的规范问题。
为了回应 EEAA 的回答和@Shog 的评论,我们需要一个合适的规范问答来结束关于 iptables 的常见的相对简单的问题。
什么是调试 Linux 软件防火墙问题的结构化方法,netfilter包过滤框架,通常被用户界面接口iptables引用?
有哪些常见的陷阱、反复出现的问题和简单或更模糊的事情,以检查偶尔的防火墙管理员可能会忽略或以其他方式从了解中受益?
即使您使用诸如UFW、FirewallD(又名firewall-cmd)、Shorewall或类似的工具,您也可以从没有这些工具提供的抽象层的情况下查看引擎盖中受益。
这个问题不是用于构建防火墙的方法:检查产品文档,例如为iptables Trips & Tricks贡献食谱或搜索标记的iptables ufw firewalld firewall-cmd问题以获取现有的常见且备受推崇的高分问答环节。
linux ×7
apache-2.2 ×3
audit ×1
centos ×1
centos6 ×1
centos7 ×1
cron ×1
daemon ×1
firewall ×1
firewalld ×1
httpd ×1
iptables ×1
logstash ×1
mpm-prefork ×1
mpm-worker ×1
networking ×1
partition ×1
port ×1
raid6 ×1
root ×1
security ×1
sudo ×1
systemd ×1
ubuntu-14.04 ×1
ufw ×1
virtualhost ×1