初めての VPS-#6 (自分用のリポジトリを作る)。

 現在,さくらの VPS に event + suEXEC + FPM で WEB サーバを構築しようとしている。そのために,前回, ‘--enable-fpm’ 付きの php.rpm を作ったわけだが, ‘rpm -ivh’ でインストールするときの依存関係でうんざりしたので,自分用にリポジトリを作ることにした(爆)。

    VPS 上。

  1. $ sudo adduser --gid xxxx myrepo
    ‘myrepo’ はリポジトリ用のユーザで, ‘xxxx’ は httpd ユーザグループの gid である。
    $ sudo passwd myrepo
  2. $ sudo chmod 710 /home/myrepo
  3. $ sudo su - myrepo
  4. $ mkdir public_html
  5. $ cd public_html
  6. $ mkdir x86_64
  7. $ exit

 まだ,記事にしていないのだが,実はすでに Apache httpd で suEXEC サポート用の構築をしている。そんなわけで, User と Group はそれ用のものがあるわけだ。この記事に出てくる設定で,ご自分用のリポジトリを作る場合は,各自のシステムに合わせて,用語を読み替えていただきたい。
 
 httpd conf から ‘Options Indexes’ を削除してあるのだが,リポジトリのディレクトリについては,インデックスを表示したい。そのためには, .htaccess において, ‘Options Indexes’ が使えないといけないので,以下のところを変えた。

    VPS の httpd conf において。

  1. userdir.conf (/etc/httpd/conf.d/userdir.conf) の次のところを変えた。
    UserDir enabled normuser1 —>> UserDir enabled normuser1 myrepo
        ↑ これは .htaccess のためではなく, ‘myrepo’ を使えるようにするためである。
    AllowOverride FileInfo AuthConfig Limit Indexes
    —>> AllowOverride FileInfo AuthConfig Limit Indexes Options=Indexes
  2. $ sudo systemctl restart httpd.service
  3. $ sudo su - myrepo
  4. $ cd public_html/x86_64
  5. $ vi .htaccess
    中身は ‘Options Indexes’ の一行。
  6. $ chmod 640 .htaccess
  7. $ exit
    開発用 VM 上。

  1. ‘rpmbuilder’ としてログオンし, rpm ファイルをリビルドする。
     
    注 1) 「初めての VPS-#5」において php.rpm のリビルドについて書いたわけだが,あのままで yum をやると,「パッケージ PACKAGE_NAME.rpm は署名されていません」と言われる。 yum を使うためには, rpm に署名がいるらしい。署名なしの rpm をインストールするには, ‘--nogpgcheck’ オプションを使う。 filezilla.rpm については,その方法でインストールした。
  2. リビルドした rpm ファイルに署名する。
    $ rpm --addsign rpmbuild/RPMS/x86_64/*
     
    当たり前だが,この作業前に GPG キーを作っておかないといけないので,作り方。

    • root 特権のユーザで VM にログオンする。
      $ sudo gpg --gen-key
      $ sudo gpg --export -a 'o6asan' > RPM-GPG-KEY-o6asan
      RPM-GPG-KEY-o6asan は公開鍵のファイルである。これを VPS の myrepo のドキュメントルート内の /x86_64 に Filezilla クライアントでアップロードする。
      $ sudo gpg -o file.secret --export-secret-key o6asan
      file.secret が秘密鍵である。これは, rpmbuilder の ホームディレクトリに移動する。
      $ sudo mv /home/vmowner/file.secret /home/rpmbuilder/file.secret
    • ‘rpmbuilder’ として VM にログオンする。
      $ gpg --import file.secret
      このコマンドは,秘密鍵,公開鍵ともにインポートしてくれる。
       
      $ vi .rpmmacros
      以下の 2 行を追記する。
      %_signature gpg
      %_gpg_name <Owner name>
       
      注 2) 実のところ,リビルドは ‘rpmbuilder’ でやるので,鍵も ‘rpmbuilder’ として作ろうとしたのだが,蹴られた。鍵の作成作業には, root 特権が必要なようである。
  3. すべての rpm ファイルを VPS の myrepo のドキュメントルート内の /x86_64 にアップロードする。
  4. VPS 上。
    $ sudo yum install createrepo
    $ sudo createrepo /path to/x86_64

 やっと,リポができたワイ。 URL は http://www17130ue.sakura.ne.jp/~myrepo/x86_64/
 次回は,使い方を書くつもり。

本家のお世話-#112。(PHP5.6.5へアップデート)

 Windows 版の PHP5.6.5 が Jan-22 03:24:41UTC に出た。結構な数のバグフィックスと CVE-2015-0231 (bug #68710), CVE-2014-9427 (bug #68618), CVE-2015-0232 (bug #68799) へのパッチが含まれているようだ。
 PHP5.6.5 ChangeLog には “Fixed bug #68799” が見つからなかったんだが,書き忘れかな。 5.5.21 のにはあったんだが……。まっ,とにかく,アップデートした。(サーバ OS : Windows7HP+SP1(x86)).

 インストールについて詳しい情報が必要な場合は,「PHP 5.5.16 から PHP 5.6.0 への移行」をご覧ください。

初めての VPS-#5 (php.rpm のリビルド)。

 当初の予定では, suEXEC サポートの話を書くはずだったのだが,ちょっと困ったことが。今回,さくらの VPS には, event + suEXEC + FPM のシステムを構築しようとしているのだが, CentOS7 標準の php.rpm はビルド時に ‘--enable-fpm‘ オプションが付与されていないみたいなのだ。 Apache httpd 上での event + suEXEC については,標準で動きそうなんだけどね。 php.rpm のビルドオプションは, ‘php-devel’ パッケージをインストールすると,下記のコマンドで参照できる。 CentOS の rpm においては ‘php -i’ では,ビルドオプションは見えないようだ。
$ php-config --configure-options
 
 そんなわけで, ‘--enable-fpm’ オプション付きの php.rpm をリビルドすることにした。本当に必要なんかね,これ?まっ,いいけど!!
 VPS に開発系のパッケージは入れたくないので,そこでは rpm を作れない。で, NJ2100 上に開発用仮想環境を作ることにした。仮想マシンには, VMware(R) Player 6.0.4 build-2249910 と CentOS7 (「開発およびクリエイティブワークステーション」を選択し,「開発ツール」にチェックを入れた)を使用。やり方は,「CentOS6の練習-#13(仮想マシンとして使う)」と大体一緒。
 
 大体一緒だったんだけどね,今回の仮想マシンは,イーサネットデバイスを認識してくれなかった。これ,困るじゃん。 NJ2100 には SiS Ethernet Controller がついてる。「どうすりゃいいんじゃ」と思ったが,ネット上にたくさん解決方法のページがあった。私としては,その中のこちらのページをおすすめする。
 
 みーんな,同じこと書いてある。曰く「vmnetcfg.exe と vmnetcfglib.dll をお使いなさい。 VMware-workstation-full-10.0.x-xxxxxxx.exe のような VMware Workstation の無償評価版を展開すれば,手に入るよ。」と。ところがさ,ベンダーさんから,評価版を落として調べてみたけど,入ってなかった。評価版は,すでに ‘VMware-workstation-full-11.0.0-2305329.exe’ になっていて, 64 ビット版に変わっており,どうも仕様が違うようだ。ウェーン。
 
 どっかに, VMware Workstation 10 がないかって探した探した。だって,今,公式からバージョン 10 を落とすとなると,製品版を買うしかないわけだが,それは「なんじゃそれっ?」状態しょっ。結局, filehorse.com で見つけて,ダウンロードした。みんなも問題の 2 ファイルほしいかしらん?一応, zip にしてみたよ。これって,グレーゾーンかな?何はともあれ,ネットにつながる開発用仮想マシンが手に入った。
 
 さて,実際のリビルド作業。当然ながら,すべて仮想マシン上で行う。参考ページとしては,公式のここを見た。

  1. リビルド用の非特権ユーザー (rpmbuilder) を作る。 mockbuild という no logon ユーザも作る。 mockbuild って, ‘rpm’ コマンドがつかうようで,どうも IUS に起因してるようだ。
    $ sudo useradd rpmbuilder
    $ sudo passwd rpmbuilder
     
    $ sudo useradd -s /sbin/nologin mockbuild
  2. rpmbuilder のホームディレクトリに, RPM ビルド用のディレクトリを作る。
    $ sudo su - rpmbuilder
    $ mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
    $ echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros
  3. vault.centos.org から src.rpm をダウンロードする。
    $ wget http://vault.centos.org/7.0.1406/updates/Source/SPackages/ \
    php-5.4.16-23.el7_0.3.src.rpm
  4. インストール。
    $ rpm -ivh php-5.4.16-23.el7_0.3.src.rpm
  5. php.spec の編集
    $ $ cd ~/rpmbuild/SPECS/
    $ vi php.spec
    869 行に ‘--enable-fpm \’ を追加。
  6. $ rpmbuild -ba php.spec
     
    依存関係で,いろいろ足りないよと言われるので,素直に全部インストールののち,再挑戦。
    $ rpmbuild -ba php.spec
     
    ‘--enable-fpm’ オプション付きの php.rpm 入手完了。

 ところで,仮想マシンは, GUI で使っている。ここで, FileZilla を FTP クライアントとして使いたかったんだが,標準のリポジトリにはなかったので, filezilla.rpm も作った。このビルドのときに, wxGTK3-devel を要求されて, epel リポを有効にした。

  1. $ sudo yum install epel-release
  2. $ wget ftp://fr2.rpmfind.net/linux/fedora/linux/development/rawhide/source/ \
    SRPMS/f/filezilla-3.10.0-1.fc22.src.rpm

    $ rpm -ivh filezilla-3.10.0-1.fc22.src.rpm
    $ cd ~/rpmbuild/SPECS/
    $ rpmbuild -ba filezilla.spec

 こんなとこかな。

あけましておめでとうございます。

おめでとう! あけましておめでとうございます。
 皆様,本年もよろしくお願いいたします。

 新しい年が皆様にとって素晴らしい年でありますように!

 おかげさまで、昨年も1月のトンデモ風邪を除いては,元気に過ごせました。今年も,生きているわが身を素直に喜べる年であることを祈っております。