2017/07/06

php 5.x + apache httpd 2.4.x を make する

php 5.x 系の最新版と httpd 2.4.x 系の最新版を make したログ


環境

  • Scientific Linux release 7.2 (Nitrogen)
  • Apache httpd 2.4.26
  • php 5.6.30



httpd 2.4.26 の make

  • # yum install -y wget apr apr-devel apr-util apr-util-devel gcc pcre pcre-devel perl perl-devel libtool libtool-devel systemd-devel
  • # wget http://ftp.tsukuba.wide.ad.jp/software/apache//httpd/httpd-2.4.26.tar.gz
  • # tar xzf httpd-2.4.26.tar.gz
  • # cd httpd-2.4.26
  • # ./configure --enable-rewrite
    • とりあえず rewrite くらいで。
    • 必要なものは ./configure --help にあるものから確認して追加していけば良い
  • # make
  • # make install
ちなみに /usr/local/apache2 の下に bin とかが入ります。


httpd を systemd 管理下に置く

このままだと起動するのが面倒なので systemd 経由で起動できるように。
この記事を参考に service を作る。
私は apr も apr-util も pcre も yum にあるものを作ったのでこんな感じ。


こいつで systemd に認識させてやるといつも通りの
  • # systemctl status httpd
  • # systemctl start httpd
とかできるようになります。

  • $ curl http://localhost
して It Works! が出たら httpd が動いています。



php 5.x を make する

  • # yum install -y libxml2 libxml2-devel
  • # wget http://jp2.php.net/get/php-5.6.30.tar.gz/from/this/mirror -O php-5.6.30.tar.gz
  • # tar xzf php-5.6.30.tar.gz
  • # cd php-5.6.30
  • # ./configure --with-apxs2=/usr/local/apache2/bin/apxs
    • ポイントはここ。
    • libphp5.so を作るために apx を指定します。
    • これを書いておくと httpd.conf で LoadModule できる場所に libphp5.so ができる。
  • # make
  • # make test
  • # make install
これで php が入りました。
/usr/local/apache2/modules/libphp5.so とかができているはずです。


httpd に php を認識させる

両方とも make できたのであとは設定。
httpd の DocumentRoot はデフォルトでは /usr/local/apache2/htdocs/ なので
  • # vi /usr/local/apache2/htdocs/hoge.php
    • <?php phpinfo() ?>
    • とか。
  • # vi /usr/local/apache2/conf/httpd.conf
    • LoadModule php5_module modules/libphp5.so
    • <FilesMatch \.php$>
    •     SetHandler application/x-httpd-php
    • </FilesMatch>
    • あたりを追記。
    • LoadModule は勝手に追記されてたりします。
  • # systemctl restart httpd
  • $ curl http://localhost/hoge.php
大量の html が流れてきたら php が動いています。
ブラウザからアクセスすると php の情報が見られるはずです。やったね。



参考

2017/07/05

rpm を tar.bz2 や .spec ファイルからビルドする

rpm ファイルをビルドする機会があったのでそのログ。


環境

  • Scientific Linux release 6.8 (Carbon)
  • rpmbuild 4.8.0(たぶん)
  • httpd 2.4.26
  • distcache 1.5.1


tar.gz ファイルから直接ビルドする

アーカイブ内部に *.spec ファイルがある場合は直接 rpmbuild で指定できます。
  • $ wget http://ftp.riken.jp/net/apache//httpd/httpd-2.4.26.tar.bz2
  • $ rpmbuild -tb httpd-2.4.26.tar.bz2
/root/rpmbuild/RPMS 以下に .rpm ファイルが作成されます。
アーカイブ指定の時は -tb オプション。


.spec ファイルからビルドする

アーカイブに *.spec が無かったりする場合もあります。
その場合は *.spec ファイルを作ってそれを指定してビルドします。
例えば distcache 1.5.1-1 の spec ファイルはこちらのブログ にサンプルがあります。
*.spec ファイルから rpm を作る場合は SOURCES に必要なソースを配置します。
  • $wget https://downloads.sourceforge.net/project/distcache/1.%20distcache-devel/1.5.1/distcache-1.5.1.tar.gz
  • $ mv distcache-1.5.1.tar.gz ~/rpmbuild/SOURCES/
  •  wget -O /root/rpmbuild/SOURCES/distcache-1.5.1.patch https://ja.osdn.net/users/matsuand/pf/LFScripts/scm/blobs/master/BLFS/patch/distcache-1.5.1.patch?export=raw
  • $ rpbuild -bb distcace.spec
スペックファイル指定の場合は -bb オプション。

rpm のインストール

rpm -i とか。消す時は rpm -e。
リストは rpm -aq とかなので rpm のオプションは結構素っ気無い感じ。


参考文献

2017/07/03

NeoVim に移行した

そろそろ NeoVim に移行したいなー、と思っていたので気合を入れて移行しました。


環境

  • macOS Sierra 10.12.5
  • NeoVim 0.2.0
  • Homebrew 1.2.3-121-gb5529084
  • Homebrew/homebrew-core (git revision 72126; last commit 2017-07-02)
  • tmux 2.5 + EastAsianAmbiguous Patch


やったこと

まずは neovim の install 。
  • brew tap neovim/neovim
  • brew install neovim
くらいで。

その後は NeoVim の CheckHealth が通るようにいろいろと。
  • tmux.conf の default-terminal を screen-256-color に変更
  • gem install neovim
  • python2 を入れて easy_install neovim
  • python3 を入れて pip3 install neovim
とかとか。自己診断機能便利。

次に .vimrc の移動。
neovim はデフォルトで ~/.config/nvim/init.vim を読みにいくのでそこに元の .vimrc を配置。
.vimrc は source ~/.config/nvim/init.vim を見るようにした。
それからプラグインの変更。
  • NeoBundle から dein へ
  • neocomplete から deoplete へ
  • Unite から Denite へ
Unite 以外はそんなに問題無く移行できました。
Unide は file_rec のオプションとか grep のオプションとかを denite 用に書き直す。
あとは自作していた unite command を denite に対応させる。
help が充実していてありがたいですね。流石は暗黒美無王さん。

とかなんとかしていたgitのログはこの辺からこの辺までかな。


まとめ

移行にかかった時間は合計して丸一日くらい?
file_rec が超高速になったのでうれしい。
Unite とちょっと使い勝手が違うけれど、その辺りも変更するオプションがありそう。
help の example が大変ありがたかった。
あと先人の知恵は貴重だった。質問に高速で返答が来るのはありがたい。

ということで Vim から NeoVim へと移行しました。

2017/06/22

blogger を https 対応させる

タイトル通り。 自分のブログのポストを見たら http だったので今の時代これはまずいなー、と。

どうやら http -> https のリダイレクトもしてくれるようなので設定しない手は無い。
blogger > 設定 > 基本 > HTTPS > HTTPSリダイレクト にチェックを入れる。
これで https 対応とリダイレクトもしてくれる。便利。

参考

Jenkins でビルドの情報を Slack に投稿する

Jenkins ネタでもう一つ。
ビルドの開始や失敗、成功を Slack に流したくなったのでそのログ。


環境

  • CentOS Linux release 7.0.1406 (Core)
  • Docker version 1.12.6, build 1398f24/1.12.6
  • Jenkins ver. 2.46.3
  • Slack Notification Plugin 2.2


構築方法(Slack)

  • Slack 側の Add Integration で Jenkins を指定
  • 通知させたいチャンネル名を指定
  • 発行された token をコピーしておく


構築方法(Jenkins)

  • Manage Jenkins > Plugin Management > Available
    • Slack Notification Plugin をチェック
    • install without restart 
  • Manage Jenkins > Plugin Management
    • team subdomain: 通知したい Slack の subdomain
    • 例えば hoge.slack.com なら hoge
    • Integration Token は先程コピーした  token で
    • Channel は通知したいチャンネル
    • Is Bot User ? にはチェックを入れない
  • Test Connection できちんと Slack にポストされていれば設定はOKです


構築方法(Jenkins Project)

  • 通知させたい Project の Configure を開く
  • Post-build Actions
    • に Slack Notifications を追加
    • 通知させたいイベントにチェックを入れる
  • Project > serval > Post-build Actions > Advanced
    • は特別設定しなければ先程のグローバル設定が使われるので空白で良いです
    • 私は Notification message includes を commit list with authors only に設定しました


まとめ

この設定をすることで  Jenkins がビルドした時に Slack へ通知が行なわれます。
今回面倒だったこととしては、 Is Bot User? にチェックを入れていた時、Test Connection ではきちんと通知がされるのに、ビルドした時だけは通知がされないという絶妙な状態になることがありました。どうしてチェックを入れたらダメなのだろ。


参考