我最近将我的一个应用程序服务器升级到 CentOS 6(.2) 并准备在我可以解决以下问题时将其用于生产;每当我尝试通过 semanage 添加自定义 http 端口时,我不断收到以下错误消息:
libsemanage.semanage_exec_prog: Child process /sbin/setfiles did not exit cleanly.
libsemanage.semanage_install_active: setfiles returned error code -1.
libsemanage.semanage_exec_prog: Child process /sbin/setfiles did not exit cleanly.
libsemanage.semanage_install_active: setfiles returned error code -1.
/usr/sbin/semanage: Could not commit semanage transaction
Run Code Online (Sandbox Code Playgroud)
我试图运行的命令:
semanage port -a -t http_port_t -p tcp 27960
Run Code Online (Sandbox Code Playgroud)
当前内核:
2.6.32-220.4.1.el6.x86_64 #1 SMP Tue Jan 24 02:13:44 GMT 2012 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
当前策略coreutils-python:
2.0.83-19.18.el6
Run Code Online (Sandbox Code Playgroud)
最后,当前的 selinux 设置:
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: enforcing
Mode …
Run Code Online (Sandbox Code Playgroud) 我已经在我的开发服务器上成功配置和编译了 php,并且运行良好,但是在与系统管理员伙伴交谈后,他告知不建议将最新版本的自定义编译用于生产(甚至开发)系统。他注意到他们自定义配置和编译 PHP 5.3.6 的情况,只是发现低级 Postgres 驱动程序存在一些问题,因此他们不得不恢复到 5.3.3。
所以我正在考虑回到 yum 来安装 PHP,但是我有几个自定义配置设置,并且想知道是否可以通过或配置通过 YUM 编译 PHP 的方式?
我当前的配置行:
Configure Command => './configure' '--with-libdir=lib64' '--prefix=/usr/local/_custom/app/php' '--with-config-file-path=/usr/local/_custom/app/php/etc' '--with-config-file-scan-dir=/usr/local/_custom/app/php/etc/modules' '--disable-all' '--with-apxs2=/usr/sbin/apxs' '--with-curl=/usr/sbin/curl' '--with-gd' '--with-iconv' '--with-jpeg-dir=/usr/lib' '--with-mcrypt=/usr/bin' '--with-pcre-regex' '--with-pdo-mysql=mysqlnd' '--with-png-dir=/usr/lib' '--with-zlib' '--enable-ctype' '--enable-dom' '--enable-hash' '--enable-json' '--enable-libxml' '--enable-mbstring' '--enable-mbregex' '--enable-pdo' '--enable-session' '--enable-simplexml' '--enable-xml' '--enable-xmlreader' '--enable-xmlwriter'
Run Code Online (Sandbox Code Playgroud) 任何人都知道一种巧妙的方法来获取人偶清单中数组的最后一个元素?
现有代码如下所示:
class nginx {
define vhost {
#-----
# Init vars
#-----
$app_parts = split($name, '[_]')
# I can access any element using numeric notation
notify { "Element: ${app_parts[0]}": }
# How do I access the last element?
Run Code Online (Sandbox Code Playgroud) 给定以下 NGinx 配置,我将如何更改它以仅向429 个响应发出 Retry-After 标头?
limit_req_zone $binary_remote_addr zone=ip:10m rate=5r/s;
limit_req_status 429;
limit_conn_status 429;
server {
listen 80;
location /api {
limit_req zone=ip burst=12 nodelay;
proxy_pass http://website;
}
}
Run Code Online (Sandbox Code Playgroud) 我是木偶新手。因此,我正在尝试以最佳方式来设置有意义的清单。遵循 DRY(不要重复自己)原则,我尝试在一个模板中加载通用指令,然后从与环境匹配的文件中加载特定于环境的指令。基本上是这样的:
# nodes.pp
node base_dev {
$service_env = 'dev'
}
node 'service1.ownij.lan' inherits base_dev {
include global_env_specific
}
class global_env_specific {
include shell::bash
}
# modules/shell/bash.pp
class shell::bash inherits shell {
notify{"Service env: ${service_env}": }
file { '/etc/profile.d/custom_test.sh':
content => template('_global/prefix.erb', 'shell/bash/global.erb', 'shell/bash/$service_env.erb'),
mode => 644
}
}
Run Code Online (Sandbox Code Playgroud)
但是每次我运行puppet agent --test
puppet 时都会抱怨它找不到该shell/bash/$service_env.erb
文件,但我仔细检查了它是否存在。由于输出预期值的通知语句,我知道 var 是可访问的,所以我怀疑我正在做的事情是不允许的。
我知道我可以有一个单一的template.erb
并将变量传递给模板,这在这种情况下会起作用,因为 custom.sh 文件很小而且跨环境没有太多变化,但是对于更复杂的配置(httpd、solr 等)我会更喜欢访问特定于环境的文件。我也知道我可以指定特定于环境的模块路径,但我更愿意只在模板级别处理这种行为,而不是拥有多个密切命名的目录。
谢谢。
所以几周前,我开始使用 puppet 来自动化所有配置/服务。当时我正在使用 EPEL 存储库,它安装了 2.6.x 版。经过一些阅读后,我试图flatten
通过 puppet stdlib访问可用的方法,并认为它在较新的 2.7.x 版本中默认可用。所以我添加了一个具有以下设置的 puppet repo:
[puppetlabs]
name=Puppet Labs Packages
baseurl=http://yum.puppetlabs.com/el/$releasever/products/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://yum.puppetlabs.com/RPM-GPG-KEY-puppetlabs
Run Code Online (Sandbox Code Playgroud)
问题是它安装了 v3.0.x 而不是 2.7.x。显然 3.0.x 是几周前才发布的重大升级。显然,我更愿意在接下来的几个月中使用 2.7.x,而 PuppetLabs 会修复在主要版本之后不可避免地出现的任何缺陷。
所以我的问题是,我可以在 puppet repo 配置中添加什么设置以仅下拉 2.7.x 分支而不是 3.0.x 分支?