読者です 読者をやめる 読者になる 読者になる

来週からは新入社員なのでVMwarePlayer+CentOS6.x+phpenv+php-buildで開発環境をつくる

f:id:razokulover:20130326181015j:plain


彼女と同棲をはじめてからもう3週間ほどでしょうか。毎朝朝食がでてくるしいろいろはかどってます。ちなみに冒頭の写真は彼女がデザインからカッティングまですべて一から制作したウォールアートです。


ここから下は彼女との話が一切でてこないのであしからず。




では本題。来週から新入社員として新たな生活を始める前に開発環境を作っていたのですが、
案外はまりまくってしまったので新たな仲間のためにもここにメモをしておきます。

大まかな流れとしては、

  • windos7が入ったPCでVMwarePlayer上にCentOS6.xをゲストOSとして作成
  • phpの複数バージョンが使えるようにphpenv+php-buildの導入
  • phpenvでapacheのモジュールを変更できるようにphpenv-apache-versionを導入

となります。

ただ、VMwarePlayerとCentOSの導入までは以下のサイトにこと細かにまとまっているので
今回は割愛します。
導入するパッケージも特にこだわりがなければ以下のサイトにしたがってよいと思います。


もしネットワーク設定ではまった場合は以下のリンクをご覧ください。
ここで少しはまったのですが僕の場合はVMNet8の設定だけすれば大丈夫でした。
デスクトップも入れていたのでCentOS側では自動イーサネットを設定すれば楽にできました。

phpbuild+phpenvを利用して複数バージョンのphpで開発できるようにする

(以下ルート権限で実行します)

phpbuild+phpenvの導入方法はweb上にたくさんあります。
なのでここでは情報の少ないPHP5.2.17を例にしていきたいと思います。

  • やり方手順
    • まず以下リンク先の”依存モジュールのinstall”まで行う

phpenvとphp-builtおよび必要なライブラリのインストール

php-buildのインストール時にgit clone git://...ができないときがあります。そのときはgit://をhttp://に変更
*epelのリポジトリhttp://qiita.com/items/662e41376efa97251575を見て追加してください

PHPのインストール

コンパイルオプションの追加。
これは完全に好み。mssqlも使えるようにしました。

$vim /root/.phpenv/plugins/php-build/share/php-build/definitions/5.2.17

↓を元々あるconfigure_optionと置き換えます(configure_option -R ほげほげ~は残しておく)

configure_option "--with-apxs2=/usr/sbin/apxs --disable-fpm --enable-fileinfo --enable-hash --enable-json --enable-sysvsem --enable-sysvshm --enable-sysvmsg --enable-bcmath --with-bz2 --enable-ctype --with-iconv --enable-ftp --with-gettext --enable-mbstring --with-onig=/usr --with-pcre-regex --with-mysql=mysqlnd --with-mysql-sock=/tmp/mysql.sock --enable-phar --enable-shmop --enable-sockets --enable-simplexml --enable-dom --with-libxml-dir=/usr --enable-tokenizer --with-zlib --with-kerberos=/usr --with-openssl=/usr --enable-soap --enable-zip --with-mhash=no --without-mm --with-enchant=/usr --with-zlib-dir=/usr --with-gd --enable-gd-native-ttf --with-gmp=/usr --with-jpeg-dir=/usr --with-xpm-dir=/usr/X11R6 --with-png-dir=/usr --with-freetype-dir=/usr --with-imap=/usr --with-imap-ssl --enable-intl --with-t1lib=/usr --with-mcrypt=/usr --with-snmp=/usr --enable-calender --enable-mbregex --enable-zend-multibyte --enable-pdo --enable-force-cgi-redirect --enable-fastcgi --with-ltdl=/usr/lib --with-mssql=/usr/local/freetds"

追加で必要なパッケージをインストールする。
エラーがでたらだいたいパッケージの不足なのでひたすらyum install し続ける

$yum install flex libtool-ltdl libtool-ltdl-devel
$wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-stable.tgz -P /usr/local/src
$cd /usr/local/src
$tar zxvf freetds-0.91.tgz
$cd /usr/local/src/freetds-0.91
$./configure --prefix=/usr/local/freetds --enable-msdblib 
$make
$sudo make install
$phpenv install 5.2.17

確認

$php -v
$phpenv global 5.2.17
$php rehash
$phpenv -v

うまくバージョンが変わっていればOK

phpenvでPHPのモジュールの切り替え

$vim /etc/httpd/conf/httpd.conf
#LoadModule php5_module /usr/lib/httpd/modules/libphp5.so ← コメントアウト

/etc/httpd/conf.d/php.confの修正

$vim /etc/httpd/conf.d/php.conf

内容は以下

#
# PHP is an HTML-embedded scripting language which attempts to make it
# easy for developers to write dynamically generated webpages.
#

LoadModule php5_module modules/libphp5.so

#
# Cause the PHP interpreter to handle files with a .php extension.
#
AddHandler php5-script .php
AddType text/html .php

#
# Add index.php to the list of files that will be served as directory
# indexes.
#
DirectoryIndex index.php

#
# Uncomment the following line to allow PHP to pretty-print .phps
# files as PHP source code:
#
#AddType application/x-httpd-php-source .phpsa

libphp5.soが上書きされるのに備える

$mv /etc/httpd/modules/libphp5.so /root/.phpenv/versions/5.2.17/
phpenv-apache-versionのインストール
$ git clone https://github.com/garamon/phpenv-apache-version ~/.phpenv/plugins/phpenv-apache-version
$phpenv apache-version 5.2.17

もしエラーが出たときは

$setenforce Permissive

を実行して一時的にSELinuxのセキュリティを無効にします。

MySQLの確認
$mysql

を実行して>mysqlのプロンプトに移動したらOK

もしMySQLに接続できないときは

$service mysqld stop

をしてから

$service mysqld start

をすればよいです。
たいていはmysql.sockがないとかmysql.sockのパスが違うなど。各自検索すれば対処方法がでてきます。


以上です。
参考になれば幸いです。


・参考にしたサイトさま一覧
モダンなPHP開発環境を構築する phpenv + php-build で 複数のPHPバージョンを管理する
virtualbox(centos)でphpenv+php-buildインストールメモ(5.3,5.4変更確認まで)
phpenv-apache-version
中心となるconfigureオプション一覧
FreeTDS