CentOSでrailsアプリケーションをlighttpd - fastcgi経由で動かすためのfcgi導入ではまった記録
会社のrailsアプリケーションは、lighttpd - fastcgi - ruby-fcgi という形でつないで動かしている。
で、今回環境構築をしていてはまった箇所があったので、記録がてらさらしてみます。
環境を徒然に書いていくと、
今回はCentosのインストールが終わって、いろいろ設定して、という先から。
lighttpdのインストール
この時点で、ncurses-develやgccなど、おおかたソースからコンパイルするときに使いそうなものは、yum経由で導入済み。
lighttpdのビルドに必要なライブラリの導入
sudo yum install pcre-devel sudo yum install bzip2-devel
opensslのビルド
cd ~/src wget http://www.openssl.org/source/openssl-1.0.0d.tar.gz tar xzvf openssl-1.0.0d.tar.gz cd openssl-1.0.0d ./config --openssldir=/usr/local/ssl make sudo make install
lighttpdのビルド
cd ~/src wget http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.29.tar.gz tar xzvf lighttpd-1.4.29.tar.gz cd lighttpd-1.4.29 ./configure --with-openssl=/usr/local/ssl make sudo make install
起動用スクリプトを設置
cd ~/src/lighttpd-1.4.29/doc/initscripts sudo cp rc.lighttpd.redhat /etc/init.d/lighttpd
/etc/init.d/lighttpdを編集
-lighttpd="/usr/sbin/lighttpd" +lighttpd="/usr/local/sbin/lighttpd"
chkconfigを設定
sudo chkconfig lighttpd on
ここまでは問題なし。
lighttpd.confの設定やらなんやらはスキップ
railsのアプリに関する内容や、fcgiファイルに付いてもスキップ
fcgiのインストール
で、fastcgiのHP(http://www.fastcgi.com)から、DL&インストール
wget http://www.fastcgi.com/dist/fcgi-2.4.0.tar.gz tar xzvf fcgi-2.4.0.tar.gz cd fcgi-2.4.0 ./configure make
エラー発生
fcgio.cpp:50: error: 'EOF' was not declared in this scope fcgio.cpp: In member function 'virtual int fcgi_streambuf::overflow(int)': fcgio.cpp:70: error: 'EOF' was not declared in this scope fcgio.cpp:75: error: 'EOF' was not declared in this scope fcgio.cpp: In member function 'virtual int fcgi_streambuf::sync()': fcgio.cpp:86: error: 'EOF' was not declared in this scope fcgio.cpp:87: error: 'EOF' was not declared in this scope fcgio.cpp: In member function 'virtual int fcgi_streambuf::underflow()': fcgio.cpp:107: error: 'EOF' was not declared in this scope make[1]: *** [fcgio.lo] エラー 1 make[1]: ディレクトリ `/home/admin/src/fcgi-2.4.0/libfcgi' から出ます make: *** [install-recursive] エラー 1
で、'EOF' was not declared というエラーメッセージを頼りに検索していくと以下のページを発見。
http://www.cyrius.com/journal/gcc
C++ header dependencies got cleaned up in GCC 4.3, which broke a lot of code which relied on headers to be included indirectly through some other headers. I found some new build failures with GCC 4.4 related to missing #includes; in particular, #include
is missing in a lot of code.
#include
ということで、気をとりなおして、エラーが発生しているファイル(libfcgi/fcgio.cpp)に対して、includeの羅列の次に、以下の行を追加。
#include <cstdio>
で、続きを行うと、
make
sudo make install
できたー
あとは、gemをインストールして、完了!
結局、includeがないだけだったけど、自分はCをまだ勉強していないので、そもそもうまくエラーがたどれずでした。