‘linux’ タグのついている投稿

他のパッケージのaptitude install後にMySQLが起動しない問題

他の環境では多分あまり発生しないかと思いますが、自分の環境では毎回のように発生する上、対処方法をいつも忘れるのでメモ。

環境はdebian squeeze。

# /etc/init.d/mysql start
[FAIL] Starting MySQL database server: mysqld . . . . . . . . . . . . . . failed!

ログも一切出ないので困っていましたが、ファイルのパーミッションの問題でした。

# cd /var/lib/mysql/
(省略)
-rw-rw---- 1 mysql mysql      126 2014-02-27 07:45 mysql-bin.000022
-rw-rw---- 1 mysql root     26620 2014-02-27 07:45 mysql-bin.000023
-rw-rw---- 1 mysql root   1061358 2014-02-27 07:45 mysql-bin.000024
-rw-rw---- 1 root  root     26620 2014-02-27 07:45 mysql-bin.000025
-rw-rw---- 1 root  root   1061358 2014-02-27 07:45 mysql-bin.000026
-rw-rw---- 1 mysql mysql      494 2014-02-27 07:45 mysql-bin.index

mysql-binファイルがroot権限で作られていました。

片っ端からchownして解決です。

# chown mysql:mysql mysql-bin.000023
# chown mysql:mysql mysql-bin.000024
# chown mysql:mysql mysql-bin.000025
# chown mysql:mysql mysql-bin.000026
# /etc/init.d/mysql start
[ ok ] Starting MySQL database server: mysqld ..

根本的な原因は何なんだろうなぁ。


redmineのメール送信エラー

CentOS 5.10にredmine 2.4.2をインストールしていて、Gmail経由でメールが送れない問題があったのでメモ。

wrong argument (NilClass)! (Expected kind of OpenSSL::SSL::SSLContext)

どうやらmailのバージョンが新しくなったところで問題が出たようです。

redmine 2.3.1 / 2.3.2でメール送信時エラーが出た: situの戯れ言

redmineをインストールしたディレクトリに作成されたGemfile.lockファイルのmailのバージョン指定を

    json (1.8.1)
    mail (2.5.4)
      mime-types (~> 1.16)
      treetop (~> 1.4.8)
    metaclass (0.0.2)

    json (1.8.1)
    mail (2.5.3)
      mime-types (~> 1.16)
      treetop (~> 1.4.8)
    metaclass (0.0.2)

と書き換えて、Apacheを再起動したら(Passengerなので)無事にメールが送れるようになりました。

2.5.3が入っていない場合は先にインストールしておく必要があります。

ruby のmail がTLSエラーを吐くので調べたらバージョンだった。 – それマグで!

Ruby 1.8系使ってるとダメみたいです。抜本的な解決のためには1.9以降が必要のようです。


Apacheでリバースプロキシを使う際のホスト名を引き継ぐ方法

GAEの開発中に、Apache経由のリバースプロキシ環境でdev_appserver.pyを起動させていると、認証関係やself.request.host_urlなどでホスト名を取ろうとした場合にlocalhost:8080などのホスト名を返されます。

ProxyPreserveHost ディレクティブを使えば解決です。ポート番号も消えるみたいです。

mod_proxy – Apache HTTP サーバ
http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypreservehost

ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
ProxyPreserveHost On

UbuntuでApache 2.4.6(Event MPM)+PHP 5.4(FastCGI)を使う

環境はAmazon EC2のUbuntu 12.10です。Apache 2.4.6を使ってみます。Apache 2.4系列を使うからには、やっぱりEvent MPMを使いたいところです。

ところがPHPのマニュアルにはPreforkを使えと書いてあります。

PHP: インストール – Manual
http://www.php.net/manual/ja/faq.installation.php#faq.installation.apache2

マルチスレッドMPMを使いたい場合はFastCGIを使うようにも書いてあるので、PHPをFastCGIで動かすようにします。

(さらに…)


PHP-FPMの起動時にエラーになる&終了できない問題

PHP-FPMを起動するときに、時間がかかった挙句、failedになる現象が発生しました。

# /etc/init.d/php-fpm start
Starting php-fpm ................................... failed

また、終了時にpidが見つからないというメッセージが表示されます。

# /etc/init.d/php-fpm stop
Gracefully shutting down php-fpm warning, no pid file found - php-fpm is not running ?

実際、stopしてもプロセスが残っている状態です。

# ps aux |grep php
root     16260  0.0  0.9 161928  5820 ?        Ss   08:40   0:00 php-fpm: master process (/usr/local/etc/php-fpm.conf)
webadmin 16261  0.0  4.9 175012 29700 ?        S    08:40   0:00 php-fpm: pool www
webadmin 16262  0.0  3.6 167872 21884 ?        S    08:40   0:00 php-fpm: pool www

最初、/usr/local/etc/php-fpm.confで、pidの位置を/var/run直下に置こうとして絶対パスにしていたのですが、これが問題だったようです。

[global]
; Pid file
; Note: the default prefix is /usr/local/var
; Default Value: none
pid = /var/run/php-fpm.pid

pidファイル自体は作成されていたので、問題ないように思っていました。
以下のように、相対パスで/usr/local/var/run以下に置くようにしたら解決しました。

[global]
; Pid file
; Note: the default prefix is /usr/local/var
; Default Value: none
pid = run/php-fpm.pid

起動も一瞬でした。

# /etc/init.d/php-fpm start
Starting php-fpm  done

もちろん、終了も問題なくできます。


android update projectのtargetパラメータ

Androidプロジェクトをantでビルドしていたのですが、以下のエラーが発生してコンパイルできない現象が発生。

[renderscript] No RenderScript files to compile.
     [echo] ----------
     [echo] Handling Resources...
     [aapt] Generating resource IDs...
     [aapt] /path/to/Project/res/layout/about.xml:31: error: No resource identifier found for attribute 'contentDescription' in package 'android'
     [aapt] /path/to/Project/res/layout/about.xml:2: error: Error: String types not allowed (at 'layout_width' with value 'match_parent').
     [aapt] /path/to/Project/res/layout/about.xml:2: error: Error: String types not allowed (at 'layout_height' with value 'match_parent').

なんという事はない。android update projectコマンドに渡す–targetオプションでSDKのレベルを指定してやれば良かったのでした。

  Updates an Android project (must already have an AndroidManifest.xml).
Options:
  -l --library    : Directory of an Android library to add, relative to this
                    project's directory.
  -p --path       : The project's directory. [required]
  -n --name       : Project name.
  -t --target     : Target ID to set for the project.
  -s --subprojects: Also updates any projects in sub-folders, such as test
                    projects.

この説明ではターゲットに何を設定すればいいのかわからなくて…

–target 9を指定して、2.3を対象にしました。

それもそもそも

Error: The project either has no target set or the target is invalid.
Please provide a --target to the 'android update' command.

このエラーが出たためにtarget指定することになったわけですが。