前回、以下のような課題を出された。
ってなわけで順番に片付けていく。
なお、VMware Serverの設定については前回を参照下さい。
前回参照。
ただし、最低限のインストールから始めるため、以下のものをインストールした。
これらをインストールした理由は
「最低限必要っぽいから」
OpenSSHは、OpenSSH Projectによって開発されているSSHプロトコルを実装したソフトウェア。
システムにインストールされている古い OpenSSH を停止して削除
# /etc/rc.d/init.d/sshd stop # yum -y remove openssh
zlibはzipやgzip、画像フォーマットのPNGに使われている
圧縮アルゴリズムをライブラリ化したものをいいます。
DL、コンパイル、インストールは以下の手順で行なう。
# wget -P /usr/local/src http://www.zlib.net/zlib-1.2.5.tar.gz # cd /usr/local/src # tar xzf zlib-1.2.5.tar.gz # cd zlib-1.2.5 # ./configure --prefix=/usr/local # make # make install
「configure」というシェルスクリプトを実行することで、ソースファイルをコンパイルする前に、
インストール対象となるシステム特有の機能/情報をチェックし、チェック状況を記述したMakefileを作成する。
「configure」の実施により作成された「Makefile」を元に、ソースファイルのコンパイルを行う。
「make」コマンドにてコンパイルしたソースファイルをインストールする。
OpenSSLは、「Secure Sockets Layer(SSL v2/v3)」と
暗号プロトコルである「Transport Layer Security(TLS v1)」を実装したライブラリ。
OpenSSLのソースファイルのDL、コンパイル、インストールは以下の手順。
# wget -P /usr/local/src http://www.openssl.org/source/openssl-0.9.8d.tar.gz # cd /usr/local/src # tar xzf openssl-0.9.8d.tar.gz # cd openssl-0.9.8d # ./config --prefix=/usr/local # make # make install
OpenSSHのソースファイルのDL、コンパイル、インストールは以下の手順。
# wget -P /usr/local/src ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-4.5p1.tar.gz # mkdir /usr/local/openssh # cd /usr/local/src # tar xzf openssh-4.5p1.tar.gz # cd openssh-4.5p1 # ./configure --prefix=/usr/local/openssh # make # make install
# /usr/local/openssh/sbin/sshd
起動を確認する
# ps ax | grep sshd
※なお、openSSHを停止するには以下のコマンドをうつ
# kill `cat /var/run/sshd.pid`
以下のファイルを一部書き換える。
/usr/local/openssh/etc/sshd_config
#Protocol 2,1 ↓ Protocol 2 //SSH2のみで接続を許可 #PermitRootLogin yes ↓ PermitRootLogin no //rootでのログインを禁止 #PermitEmptyPasswords no ↓ PermitEmptyPasswords no //パスワードなしでのログインを禁止
useradd 新規ユーザー名 passwd 新規ユーザー名 →新規ユーザーのパスワード
※以下のファイルにユーザー名があるか確認する
/etc/passwd
# /usr/local/openssh/sbin/sshd restart
ifconfigでサーバーのIPアドレスを再確認
Puttyでログイン!
※rootではログイン不可
rootでログインできなくしたのはいいんだけど、
今度は安全を考えて管理者権限が必要なコマンドは「sudo」で行った方がよい
というわけで作成したユーザーにroot権限を与える
まずはLinuxにsudoコマンドがインストールされているかどうかを確認
# rpm -qa | grep sudo sudo-1.7.2p1-7.el5_5
なければ以下のコマンドでインストール
# yum install sudo
早速ユーザーにroot権限を与える
# su パスワード: # visudo ※このコマンドを行なうと「/etc/sudoers」をひらくので、下記を追加 ユーザー名 ALL=(ALL) ALL #exit
これで作成したユーザーにroot権限がふられた。
これによって「root」のパスワードを何度も入力しなくてすむ
以下の手順で行なった。
# wget -P /usr/local/src http://www.apache.org/dist/httpd/httpd-2.3.6.tar.gz # mkdir /usr/local/httpd-2.3.6 # cd /usr/local/src # tar xzf httpd-2.3.6.tar.gz # cd httpd-2.3.6 # ./configure --prefix=/usr/local/httpd --enable-so
※ --enable-so オプションは、DSO(Dynamic Shared Object)拡張モジュールを有効にする。
DSOモジュールはサーバがビルドされるときにコンパイルしたり、Apache拡張ツール(apxs)を使って、
後でコンパイルして追加したりできます。
ここで以下のエラーが発生
error: APR not found
どうやら「apr」がないと言われたので
「The Apache Portable Runtime Project」からダウンロードして入れる。
# wget -P /usr/local/src http://ftp.riken.jp/net/apache/apr/apr-1.4.2.tar.gz # tar xvzf apr-1.4.2.tar.gz # cd apr-1.4.2 # ./configure # make # make install
「apr-util」も必要らしいのでインストール。
# wget -P /usr/local/src http://ftp.kddilabs.jp/infosystems/apache/apr/apr-util-1.3.9.tar.gz # tar xvzf apr-util-1.3.9.tar.gz # cd apr-util-1.3.9 # ./configure --with-apr=/usr/local/apr # make # make install
Apache Portable Runtime(アパッチ・ポータブル・ランタイム、APR)は、Apache HTTP Server のサポートライブラリ。
OSとソフトウェアの間でOSなどの環境の違いを吸収するAPIを提供する。
ここで、再度/usr/local/src/httpd-2.3.6でコンパイルすると、以下のエラーが発生
pcre-config for libpcre not found
ってなわけで、「pcre」が使えるようにする
# wget -P /usr/local/src ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.10.tar.gz # tar xvzf pcre-8.10.tar.gz # cd pcre-8.10 # ./configure # make # make install
…が、うまくいかず…
さっきと同様のエラーがでました…
結構調べてみたけど、よく分からなかったので、以下の禁じ手を実行
# yum install pcre-devel
で、再度以下を実行
# cd httpd-2.3.6 # ./configure --prefix=/usr/local/httpd --enable-so # make # make install
/usr/local/httpd/conf/httpd.conf のファイルで行なえる
# /usr/local/httpd/bin/apachectl start
で、自分のIPアドレスにブラウザからアクセス!!
…繋がらないorz
どうやらSELinuxの設定を無効にしないといけないらしい
# vi /etc/sysconfig/selinux SELINUX=enforcing ↓ SELINUX=disabled
これで再起動して再度アクセス!
…繋がらないorz
SELinuxはセキュリティ強化のための仕組みで、セキュアOS(不正侵入されても被害を受けにくいOS)の実装の一つ
どうやらFirewallが有効になっていると繋がらない(らしい)
なので以下のコマンド実行後、無効にする
# system-config-securitylevel-tui
今度こそ再起動してアクセス!
…繋がった!!!
※どうやらVMWareからはセキュリティレベルが高いとアクセスできないみたいです
以下のコマンドでインストールする
# wget -P /usr/local/src http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.49.tar.gz/from/ftp://ftp.jaist.ac.jp/pub/mysql/ # tar xvzf mysql-5.1.49.tar.gz # cd mysql-5.1.49 # ./configure --prefix=/usr/local/mysql --with-charset=utf8 --with-extra-charset=all --with-mysqld-user=taiga
するとこんなエラーが出てきた
error: No curses/termcap library found
curses/termcapのライブラリが無いらしいのでインストール
# yum install ncurses-devel
再度チャレンジ!
# ./configure --prefix=/usr/local/mysql --with-charset=utf8 --with-extra-charset=all --with-mysqld-user=taiga # make # make install
# /usr/local/mysql/bin/mysql_install_db
# chown -R root /usr/local/mysql # chown -R taiga /usr/local/mysql/var # chgrp -R taiga /usr/local/mysql
MySQL起動
# /usr/local/mysql/bin/mysqld_safe &
# /usr/local/mysql/bin/mysqladmin ping mysqld is alive
まずはrootのパスワードを設定
# /usr/local/mysql/bin/mysql -u root mysql > SET PASSWORD FOR root@localhost=PASSWORD('rootのパスワード'); mysql > USE mysql; mysql > DELETE FROM user WHERE password=''; mysql > exit;
# /usr/local/mysql/bin/mysql -u root -p password: **** mysql > GRANT ALL PRIVILEGES ON ユーザー名.* TO taiga@localhost.localdomain IDENTIFIED BY 'ユーザー用パスワード';
今後、新ユーザーでmysqlを実行する際には以下のコマンド
# /usr/local/mysql/bin/mysqld_safe --user=ユーザー名 &
以下のコマンドでインストールする
# wget -P /usr/local/src http://jp2.php.net/get/php-5.3.3.tar.gz/from/jp.php.net/mirror # tar xvzf php-5.3.3.tar.gz # cd php-5.3.3 # ./configure --with-apxs2=/usr/local/httpd/bin/apxs --with-pdo-mysql=/usr/local/mysql/ --enable-mbstring
するとこんなエラーが出てきた
xml2-config not found. Please check your libxml2 installation.
ってなわけで「xml2-config」を使える状態にする
#yum install libxml2-devel
# ./configure --with-apxs2=/usr/local/httpd/bin/apxs --with-pdo-mysql=/usr/local/mysql/ --enable-mbstring # make # make install
/usr/local/http/conf/httpd.confに以下を追加
AddType application/x-httpd-php .php
# cp php.ini-development /usr/local/lib/php.ini
※設定をいろいろいじるといいと思う
/usr/local/httpd-2.3.6/htdocs/ 以下にちゃんとPHPファイルをつくり、
ちゃんとブラウザからみれるか確認
※再起動も忘れずに!
PEAR をアップデート
# pear upgrade PEAR
するとこんなエラーが出た
-bash: pear: command not found
パスが通ってないらしい
# cd # vi .bash_profile PATH=/usr/local/bin:$PATH # source .bash_profile
これでパスが通ったので、
# pear upgrade PEAR Nothing to upgrade
今度はsymfonyプロジェクトのPEAR チャネルを登録する。
# pear channel-discover pear.symfony-project.com
symfonyをインストールする。
# pear install symfony/symfony
インストールされたかどうか確認
# symfony -V symfony version 1.4.6 (/usr/local/lib/php/symfony)
以下のコマンドでインストールする
# wget -P /usr/local/src http://www.danga.com/memcached/dist/memcached-1.4.0.tar.gz # tar zxvf memcached-1.4.0.tar.gz # cd memcached-1.4.0 # ./configure
すると以下のようなエラーがでる
If it's already installed, specify its path using --with-libevent=/dir/
どうやら「libevent」なるものが無いと怒られているらしいので入れる
#yum install -y libevent-devel.i386
で、再度チャレンジ!!
# ./configure # make # make install
.bash_profileに環境変数を設定
export LD_LIBRARY_PATH=/usr/local/lib/
以下でmemcached起動!!
# memcached -d -m 64-l 192.168.157.128 -p 11211 -u root
今回は、今まで設定していたものがちゃんと使用できるか検証するための
簡単なアプリを作成
やることとしては、アプリケーションを作って
/usr/local/httpd/conf/httpd.conf の DocumentRoot? の設定を変更すればokなはず。
以下、はまったところを追記
symfony1.4系ということで、せっかくなので、Doctrineを使用。
DBを作ってアプリケーションから接続しようとしたら、なぜか接続できない orz
いろいろさぐってみるとこんな記事に遭遇
〜 抜粋 〜 symfony 1.4の場合、PostgreSQLやMySQLにアクセスする際にPDO(PHP Data Object)が必要となった。
マジか orz
というわけで、PHPのコンパイルからやり直す
# ./configure --with-apxs2=/usr/local/httpd/bin/apxs --with-pdo-mysql=/usr/local/mysql/ --enable-mbstring --with-pdo-mysql # make # make install
あとは再起動すれば接続完了!
なぜだか知らんがうまくできていなかった…
というわけで調べた結果、以下を実行
まず、memcachedをPHPで使うには、zlibがPHP側で使えるようになっていなくてはいけない。
要するに--with-zlibでビルドされてないないといけない
# ./configure --with-apxs2=/usr/local/httpd/bin/apxs --with-pdo-mysql=/usr/local/mysql/ --enable-mbstring --with-pdo-mysql --with-zlib # make # make install
奥の手使用
# pecl install memcache
/usr/local/lib/php.iniに追加
extension_dir = "/usr/local/lib/php/extensionsno-debug-zts-20090626" extension=memcache.so
apache再起動して…うごいた!!
参考資料