簡単なWEBシステム環境構築と開発環境について

簡単なWEBシステムを構築する際には、基本的にLAMP環境を使う事が多いです.

■システム運用環境
LAMPとは、以下の頭文字をとったものです.
 Linux :オペレーティングシステム
 Apache :WEBサーバー
 MySQL :データベース
 PHP  :プログラミング言語

なお、PHPは、SmartyとZendFrameworkなんかのフレームワークを使うと、
画面(UI)のコーディングと、PHPのコーディングを並行して進めやすくなるので、
私の場合、これらを使います.

さて、LAMP環境の構築は、細かくは色々設定しないといけませんが、
とりあえず動作させる方法をログしておきます.

Apacheインストール
# cd /usr/local/src/
# tar -xvzf httpd-2.2.14.tar.gz
# cd httpd-2.2.14
# ./configure --enable-so --enable-rewrite=shared
# make
# make install
# /usr/local/apache2/bin/apachectl start

MySQL
# cd /usr/local/src
# groupadd mysql
# useradd -g mysql mysql
# cd /usr/local
# gunzip < /usr/local/src/mysql-5.1.44-linux-i686-glibc23.tar.gz |tar xvf -
# ln -s /usr/local/mysql-5.1.44-linux-i686-glibc23/ mysql
# cd mysql
# scripts/mysql_install_db --user=mysql
# chown -R root .
# chown -R mysql data
# chgrp -R mysql .
# su - mysql
$ cd /usr/local/mysql
$ bin/mysqld_safe --user=mysql &
$ /usr/local/mysql/bin/mysqladmin ping
mysqld is alive
$ /usr/local/mysql/bin/mysql -u root -p
Enter password:
mysql> show databases;
mysql> create database ;

PHP
# cd /usr/local/src
# tar -zxvf php-5.3.1.tar.gz
# cd php-5.3.1
# ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-gd --with-pdo-mysql=/usr/local/mysql --with-zlib --enable-bcmath --enable-mbregex --enable-mbstring --with-mysql=/usr/local/mysql --with-mcrypt
# /usr/local/apache2/bin/apachectl restart
# make
# make install
# cp php.ini-production /usr/local/lib/php.ini
# vi /usr/local/lib/php.ini
doc_root = "/usr/local/apache2/htdocs"
extension_dir = "/usr/local/lib/php/ext"
include_path = ".:/usr/local/include/php:/usr/local/lib/php"
output_buffering = On
output_handler = mb_output_handler
default_charset = "UTF-8"
iconv.input_encoding = UTF-8
iconv.internal_encoding = UTF-8
iconv.output_encoding = UTF-8
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = UTF-8
mbstring.encoding_translation = Off
mbstring.detect_order = auto
mbstring.substitute_character = auto;
mbstring.script_encoding=UTF-8
expose_php = Off
date.timezone = Asia/Tokyo
# vi /usr/local/apache2/conf/httpd.conf

AddType application/x-httpd-php .php


DirectoryIndex index.html index.php

# /usr/local/apache2/bin/apachectl restart

ZendFramework
# cd /usr/local/src/
# tar -xvzf ZendFramework-1.11.1.tar.gz
# cd ZendFramework-1.11.1
# cp -r library/Zend/ /usr/local/lib/php/

Smarty
# cd /usr/local/src/
# tar -xvzf Smarty-2.6.26.tar.gz
# mkdir /usr/local/lib/php/Smarty
# cp -Rf Smarty-2.6.26/libs/* /usr/local/lib/php/Smarty/
# /usr/local/apache2/bin/apachectl restart
※重要
各template_cフォルダのパーミッションを777にする




システム開発環境
パソコンで単純にプログラムの動作を確認しながら開発したいので、
WindowsとXAMPPを用いて、開発環境を用意することが多いです.
http://www.apachefriends.org/jp/xampp.html

DB設計・実装では、MySQL Workbenchを用いると、SQLも生成できるので便利です.
http://www-jp.mysql.com/products/workbench/


※開発したシステムを本番運用環境で動作させるには、
本番運用環境へシステム移行が必要になので、細かい環境設定には注意が必要です.


PHPのプログラミングは、eclipse PHP Developper TOOL(PDT)で行います.
http://www.eclipse.org/pdt/downloads/

PDTのインストール後に最低限必要なことは?
1. トップメニューの Window>Preferences>PHPPHP Executables で PHP をインストールしたフォルダを指定
2. トップメニューの Window>Preferences>PHPPHP Servers で PHP が動作するサーバの URL を指定
3. パースペクティブPHP になっていない場合、PHP に切り替え
4. PHP プロジェクトを作成
5. 文字エンコーディングの設定
 Window>Preferences>General>Workspace の「Text file encoding」をUTF-8
6. マニュアルサイトの設定
 Window>Preferences>PHPPHP Manual で日本語サイト(http://www.php.net/manual/ja)を追加
7. エディタの文字フォントは Window>Preferences>General>Appearance>Colors and Fonts の Basic>Text Font 等で設定
8. エディタのスペルチェック機能を切る
  Window>Preferences>General>Editors>Text Editors>Spelling でチェックを外す

eclipseプラグインに便利なものもいくつかあるので、気に入ったものを使えばいいと思います.

他お役立ちツールとしては、

Firebug
https://addons.mozilla.org/ja/firefox/addon/firebug/

「携帯電話ブラウザシミュレーター Firefox plugin」
http://firemobilesimulator.org/

「astah* community 」
astah* community は、ユーザー登録することでどなたでもご利用いただける無償のUMLモデリングツールです。
UML以外のダイアグラムについては参照のみ対応しています)
http://astah.change-vision.com/ja/product/astah-community.html
ロバストネス図とは
http://journal.mycom.co.jp/series/UML_zero/017/index.html

Webアプリケーション向けのセキュリティ脆弱性スキャナ「Skipfish」
SkipfishはクロスサイトスクリプティングSQLインジェクションなど、
Webアプリケーションで発生する可能性のあるセキュリティホールをスキャンして検出するツール。誤検知を抑えた高度なセキュリティチェックを導入、とらえにくいセキュリティホールを検出できるとしている。Cで実装されており、HTTPハンドリング向けに最適化することで速度を改善、LAN環境で毎秒2000件以上のHTTP要求を処理できるという。また、使い勝手が良い点も特長としている。
http://code.google.com/p/skipfish/