タグ: CentOS

ownCloud8をアップデートしたら、管理画面に”The test with getenv(“PATH”) only returns an empty response.”と表示されたとき

環境

の状態で、yum updateでownCloudを8.1.1にした結果、管理画面に

php does not seem to be setup properly to query system environment variables. The test with getenv("PATH") only returns an empty response.
Please check the installation documentation for php configuration notes and the php configuration of your server, especially when using php-fpm.

が表示された。

ownCloud 8.1: The test with getenv(“PATH”) only returns an empty response. – Techish.net
より
/etc/php-fpm.d/www.conf

clear_env = noの行のコメントアウトをはずして再読み込みすると解消する。

@@ -367,7 +367,7 @@
 ; Setting to "no" will make all environment variables available to PHP code
 ; via getenv(), $_ENV and $_SERVER.
 ; Default Value: yes
-;clear_env = no
+clear_env = no
広告

cookbook-anyenvのCentOS7対応とグローバルインストール対応

koba04/cookbooks-anyenvはVagrant+Chefで利用した際、/home/vagrant以下にanyenvをインストールし、anyenvからrbenvなどの*envをインストール、さらにperl,ruby,nodejs,python,phpをインストールしてくれるものです。

レシピ内の依存パッケージがdebianのものになっていてCentOSではインストール時にエラーになり、またanyenvのインストール先を/opt/以下にしたかったため、いくつか変更しました。

変更点

  • CentOSにインストールできるように依存パッケージを追加
  • /home/vagrant以下にインストールするモードと/opt以下にインストールするモードを切り替えられるように
  • プログラミング言語処理系のインストールをせず、明示的に指定するようにした。(デフォルトでは*envはインストールするが、それらを使ってperlなどはインストールしない)

変更したもの: mistymagich/cookbooks-anyenv
デモ: mistymagich/cookbooks-anyenv-demo

nginx cookbookのpassengerレシピのCentOS7対応

nginxのcookbookである miketheman/nginx にはpassengerをモジュールとして追加できるレシピがあります。

そこで、CentOS7上で利用するために、attributeの node[nginx][repo_source]passengernode[‘nginx’][‘install_method’]package に設定してインストールしようとしたところ、

recipes/package.rbには

if platform_family?('rhel')
  if node['nginx']['repo_source'] == 'epel'
    include_recipe 'yum-epel'
  elsif node['nginx']['repo_source'] == 'nginx'
    include_recipe 'nginx::repo'
    package_install_opts = '--disablerepo=* --enablerepo=nginx'
  elsif node['nginx']['repo_source'].to_s.empty?
    log "node['nginx']['repo_source'] was not set, no additional yum repositories will be installed." do
      level :debug
    end
  else
    fail ArgumentError, "Unknown value '#{node['nginx']['repo_source']}' was passed to the nginx cookbook."
  end

としてrepo_source==passengerの選択肢はなく、

recipes/repo_passenger.rb には

case node['platform_family']
when 'rhel', 'fedora'

  log 'There is not official phusion passenger repo for redhat based systems.' do
    level :info
  end

とあり、パッケージリポジトリがない。

また、readme.mdには

Basic configuration to use the official Phusion Passenger repositories:
node['nginx']['repo_source'] – ‘passenger’
node['nginx']['package_name'] – ‘nginx-extras’
node['nginx']['passenger']['install_method'] – ‘package’

とあるが、nginx-extras はCentOSのパッケージにはないため、インストールができない。

一方、PHUSION Passengerの公式ドキュメントには

We provide an official Phusion Passenger YUM repository with packages for Red Hat Enterprise Linux and CentOS.

とあり、パッケージリポジトリが用意されている。そこで、これをrepo_passenger.rbに組み込み、passengerモジュールをインストールする

変更ファイル

  • recipes/package.rb
    プラットフォームファミリーがrhelの場合にrepo_source==’passenger’の選択肢を増やす
  • recipes/repo_passenger.rb
    RHEL,CentOS用のリポジトリファイルを/etc/yum.repos.dにおいて、キャッシュを更新する
  • attributes/passenger.rb
    /etc/nginx/conf.d/passenger.confにあるpassenger_rootの値が違っていたため、プラットフォームファミリーがrhelの場合の時だけ変更する

オリジナルからの変更点一覧: https://github.com/mistymagich/nginx/commit/6327617a066cb09e60703b8dac17fe4c746dc15b?diff=unified

miketheman/nginxをforkして、上記変更を適用したものをmistymagic/nginxに置きました。

またそれを使ってインストールしたpassengerに対して、PHUSION Passengerの公式ドキュメントにあるデモをVagrant+Chefの組み合わせで動かしたデモをmistymagich/nginx-passenger-on-CentOS7-demo
に置きました。

CentOS 6.4にBacula 5.2.13をインストール

CentOSにBaculaをインストール

  1. EPELパッケージを追加して有効にする。
    # rpm -Uvh http://ftp.riken.jp/Linux/fedora/epel/6/i386/epel-release-6-8.noarch.rpm
    
    # vi /etc/yum.repos.d/epel.repo
    [epel]
    :
    enabled=1
    になっていることを確認
    
  2. Baculaリポジトリを追加
    # wget http://repos.fedorapeople.org/repos/slaanesh/bacula/epel-bacula.repo \
    -O /etc/yum.repos.d/epel-bacula.repo
    
  3. 必要なものをインストール
    64ビット版の場合
    # yum search bacula
    
    bacula-client.x86_64 : Bacula backup client
    bacula-common.x86_64 : Common Bacula utilities
    bacula-console.x86_64 : Bacula management console
    bacula-console-bat.x86_64 : Bacula bat console
    bacula-devel.x86_64 : Bacula development files
    bacula-director.x86_64 : Bacula Director files
    bacula-director-common.x86_64 : Common Bacula Director files
    bacula-director-mysql.x86_64 : Bacula Director with MySQL database support
    bacula-director-postgresql.x86_64 : Bacula Director with PostgresSQL database support
    bacula-director-sqlite.x86_64 : Bacula Director with sqlite database support
    bacula-docs.x86_64 : Bacula documentation
    bacula-docs.noarch : Bacula documentation
    bacula-libs.x86_64 : Bacula libraries
    bacula-libs-sql.x86_64 : Bacula SQL libraries
    bacula-storage.x86_64 : Bacula storage daemon files
    bacula-storage-common.x86_64 : Common Bacula storage daemon files
    bacula-storage-mysql.x86_64 : MySQL Bacula storage daemon files
    bacula-storage-postgresql.x86_64 : Common Bacula storage daemon files
    bacula-storage-sqlite.x86_64 : SQLite Bacula storage daemon files
    bacula-traymonitor.x86_64 : Bacula monitor for the Gnome and KDE system tray
    nagios-plugins-bacula.x86_64 : Nagios Plugin - check_bacula
    

LogwatchのPostfixにPostgreyのログが記載されるのを取り除く

CentOS上のPostfixにスパム対策としてPostgreyを導入しました。
その結果、毎日届くLogwatchにPostgreyが一時的に拒否した際のログが記載されるようになりました。

NOQUEUE: reject: RCPT from unknown[WWW.XXX.YYY.ZZZ]: 450 4.2.0 <foo@example.jp>: Recipient address rejected: Greylisted, see http://postgrey.schweikert.ch/help/example.jp.html; from=<spam@example.com> to=<foo@example.jp> proto=SMTP helo=<ip-AAA-BBB-CCC-DDD.example.com>

結構な量のため、減らす方法がないかと調べたところ、

#441145 – logwatch: Patch for Postgrey summary – Debian Bug report logs

を参考に、処理スクリプトである

/usr/share/logwatch/scripts/services/postfix

を変更することで対応できました。

環境は以下の通り

  • postgrey-1.34-1.el5.rf
  • logwatch-7.3-10.el5
  • postfix-2.3.3-6.el5

編集内容は以下の通り

cp /usr/share/logwatch/scripts/services/postfix /usr/share/logwatch/scripts/services/postfix.ori
vi /usr/share/logwatch/scripts/services/postfix

/usr/share/logwatch/scripts/services/postfixファイル

--- /usr/share/logwatch/scripts/services/postfix.ori    2013-07-11 14:24:53.000000000 +0900
+++ /usr/share/logwatch/scripts/services/postfix        2013-07-11 14:26:25.000000000 +0900
@@ -158,6 +158,9 @@
 $RejectUnknownClients   = 0;
 $Undeliverable          = 0;
 $Deliverable            = 0;
+$PostgreyReceived       = 0;
+$GreyListSent           = 0;
+

 while (defined($ThisLine = <STDIN>)) {
    if (
@@ -235,6 +238,10 @@
          $Temp = "To " . $Dest . " Msg=\"" . $Msg . "\"";
          $ForeignBounce{$Temp}++;
       }
+   } elsif ($ThisLine =~ /reject: RCPT from .*: Recipient address rejected: Greylisted, see/) {
+      $PostgreyReceived++;
+   } elsif ($ThisLine =~ /status=deferred.*Recipient address rejected: .*[Gg]reylist/) {
+      $GreyListSent++;
    } elsif ( ($Relay,$Dest) = ($ThisLine =~ m/reject: RCPT from ([^ ]*): [0-9]+ (?:[0-9]\.[0-9]\.[0-9] )?<([^ ]*)>.* Relay access denied.* to=([^ ]*)/) ) {
       # print "reject: " . $ThisLine . "\n";
       # print "Relay :" . $Relay . " to " . $Dest . "\n";
@@ -435,6 +442,14 @@
    print "\n$RemovedFromQueue messages removed from queue";
 }

+if ($PostgreyReceived > 0) {
+   print "\n$PostgreyReceived messages temporarily deferred on receipt by Postgrey";
+}
+
+if ($GreyListSent > 0) {
+   print "\n$GreyListSent transmitted messages temporarily deferred by remote Greylisting";
+}
+
 if ($QueueSizeExceeded > 0) {
    print "\n$QueueSizeExceeded messages exceeded queue or message file size limit and removed";
 }

結果、上記のログはなくなり、変わって

702 messages temporarily deferred on receipt by Postgrey

のような出力が生成されました。

gitを1.8にアップデートした結果、HTTP越しでアクセスできなくなった時の対処法

RedmineとSubversion・Git・Mercurialのリポジトリ(ともに同じCentOSサーバ上)の連携(リポジトリの作成とアクセス・認証)

で設定したgitリポジトリにpushした際、

fatal: https://example.jp/repos/git/sample.git/info/refs not found: did you run git update-server-info on the server?

となり、pushできなくなりました。

cloneをしてみると、

Cloning into 'sample'...
fatal: repository 'https://example.jp/repos/git/sample.git/' not found

となり、ブラウザでアクセスしても404 Not Foundという状態に。

調べてみると、apacheのエラーログには

script not found or unable to stat: /usr/libexec/git-core

とあり、
apacheの設定で、

ScriptAlias /repos/git/ /usr/libexec/git-core/git-http-backend/

とある箇所の、/usr/libexec/git-core/git-http-backendが
git 1.8にアップデートした結果なくなった模様。

git-http-backend自体は/usr/binに存在していたので、

ScriptAlias /repos/git/ /usr/bin/git-http-backend/

にしたところ、問題なく動くようになりました。

※git 1.7はrpmforgeリポジトリのものでしたがgit 1.8はepelリポジトリのものを使っていました。

ソースからVimをビルドするときに「no terminal library found」とでたとき

Vim7.3をソースからビルドしようとconfigureを実行したときに、「no terminal library found」とでてエラーになりました。

checking --with-tlib argument... empty: automatic terminal library selection
checking for tgetent in -lncurses... no
checking for tgetent in -ltermlib... no
checking for tgetent in -ltermcap... no
checking for tgetent in -lcurses... no
no terminal library found
checking for tgetent()... configure: error: NOT FOUND!
You need to install a terminal library; for example ncurses.
Or specify the name of the library with --with-tlib.

yumで入るvimがイマイチ(#゚Д゚) – CentOS@さくらVPSで構築するサーバ管理・運用メモより

# yum install ncurses-devel

とすることで解決しました。