「ServersMan@VPS」にPHP5.3,MySQL5.1,PostgreSQL8 をインストールする

Posted by admin | CentOS, Linux, MySQL, PEAR, PECL, PHP, PostgreSQL, apache, yum, サーバー管理, 開発環境構築 | 日曜日 22 8月 2010 1:39 AM

DTI(ドリーム・トレイン・インターネット)が提供中の「ServersMan@VPS
(仮想専用サーバー)を契約してみてPHP5.3,MySQL5.1,PostgreSQL8 をインストールしてみました。

ServersMan@VPS」とは?
初期費用0円
月額料金490円~(今なら2ヶ月無料キャンペーン中)
メモリ:256MB
HDD:10GB

という、とってもお得な仮想専用サーバーです。
料金プランは3種類あって、Entry 、Standard、Proです。
自分は、Standardプランを契約しました。


さて、実際のコマンドですが自分用メモなので凄く簡単にまとめたものになっています。

▼yum
※「–enablerepo=remi」は、PHP、MySQLの最新バージョンを入れる為に必要です。
詳しくは、「PHP5.3 やMySQL5.1 などの最新版をyum でインストールする方法」をご参照下さい。


$ sudo yum --enablerepo=remi install mysql mysql-{server,devel}
$ sudo yum --enablerepo=remi install postgresql postgresql-{server,devel}
$ sudo yum --enablerepo=remi install php php-{devel,gd,mbstring,mcrypt,mysql,pgsql,pear}



▼mysql


$ sudo /sbin/chkconfig mysqld on
$ sudo /etc/init.d/mysqld start

$ /usr/bin/mysql_secure_installation

$ sudo mv /etc/my.cnf /etc/my.cnf.org
$ sudo cp /usr/share/doc/mysql-server-5.1.50/my-medium.cnf /etc/my.cnf


▼postgres


$ sudo /sbin/chkconfig postgresql on
$ sudo /etc/init.d/postgresql start

$ sudo /usr/bin/passwd postgres
$ sudo -u postgres psql template1


▼phpMyAdminのインストール。


$ sudo yum --enablerepo=remi install phpMyAdmin

※インストールすると以下の所にファイル等があります
/etc/phpMyAdmin
/etc/httpd/conf.d/phpMyAdmin.conf
/etc/phpMyAdmin/config.inc.php
/usr/share/phpMyAdmin
/var/lib/phpMyAdmin



$ sudo cp -p /etc/phpMyAdmin/config.inc.php /etc/phpMyAdmin/config.inc.php.org
※$cfg['blowfish_secret'] の値を適当な値に書き換えます

$ sudo vi /etc/httpd/conf.d/phpMyAdmin.conf
※allow from [IPアドレス]

$ sudo /etc/init.d/httpd restart



▼phpPgAdmin のインストール


$ sudo yum --enablerepo=remi install phpPgAdmin

※インストールすると以下の所にファイル等があります
/etc/phpPgAdmin
/etc/httpd/conf.d/phpPgAdmin.conf
/etc/phpPgAdmin/config.inc.php-dist
/usr/share/phpPgAdmin

$ sudo mv /etc/phpPgAdmin/config.inc.php-dist /etc/phpPgAdmin/config.inc.php
$ sudo /etc/init.d/httpd restart




▼php.iniの変更


$ sudo cp -p /etc/php.ini /etc/php.ini.20100821
$ sudo vi /etc/php.ini
$ diff /etc/php.ini.20100821 /etc/php.ini
> error_log = /var/log-php/php_errors.log
> default_charset = "UTF-8"
> include_path = ".:/usr/share/pear/"
> mbstring.language = Japanese
> mbstring.internal_encoding = UTF-8
> mbstring.http_output = UTF-8
> mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII

$ sudo /etc/init.d/httpd restart



▼CentOSにphpコンパイラのapcをインストール


$ sudo yum --enablerepo=remi install php-pecl-apc
$ sudo /etc/init.d/httpd restart



以上です。





SQL の結果をファイルに出力したいとき(csv)

Posted by admin | PostgreSQL | 日曜日 11 7月 2010 10:18 PM

SQL の結果をファイルに出力したいときの方法
以下は、PostgreSQL の場合


\pset format unaligned
\pset fieldsep ','    ##フィールドのセパレータにカンマ区切りを指定
\o psql_out.csv    ##出力ファイル名の指定
\i select.sql      ##SQL文が書かれたファイルを指定
\o
\q






[PHP]オープンソースのウェブメールまとめ

Posted by admin | JavaScript, MySQL, PHP, PostgreSQL, ソフトウェア | 水曜日 24 9月 2008 10:39 AM

PHP言語で書かれたオープンソースのwebmailの紹介です。

1.squirrelmail



公式サイト:
http://www.squirrelmail.jp/

SquirrelMailはPHPベースのWEBメールシステムです。40以上の多くの言語に対応、外部サーバーのサポート、プラグインによる機能拡張など多くの機能を備えています。

特徴

  • 日本語(多言語:40以上の多くの言語)対応
  • データベース不要(しかし、MySQLなどにも対応)
  • プラグインによる機能拡張
  • IMAP4、SMTPサーバー





2.AtMail




公式サイト:
http://atmail.org/

AtMailはPHP言語によって開発されたWEBメーラーで、IMAPに対応しています。また、Ajax技術を使用しているため、デスクトップアプリケーションに匹敵するぐらいの快適な操作性を実現しています。

特徴

  • Ajax技術を使用した快適な操作性
  • ビデオメール
  • 見栄えの良いデザイン
  • IMAPサポート
  • スペルチェック





3.RoundCube




公式サイト:
http://roundcube.net/

RoundCube Webmailはデスクトップアプリケーションのようなユーザーインタフェースを持っているブラウザベースの多言語IMAPクライアントです。データベースはMySQLかPostgreSQLを必要とします。

特徴

  • 多言語対応
  • MIMEとHTMLメッセージに対するフルサポート
  • アドレス帳
  • 外部SMTPサーバのサポート
  • スペルチェック







2008年5月のアクセス数の多かった人気記事TOP5

Posted by admin | 月別人気記事 | 月曜日 2 6月 2008 10:18 AM

先月(2008年5月)のアクセス数が多く人気のあった記事のトップ5です。

  1. CSRの生成方法 Apache2 OpenSSL
  2. sendmailでSMTP認証の設定メモ(SMTP-Auth)
  3. PHPライブラリの効率の良い探し方
  4. PostgreSQLパフォーマンスチューニング(重いSQLを見つける方法)
  5. 無くなって初めて気づく定期的自動バックアップの大切さ
定期的なバックアップは大事ですよね。





無くなって初めて気づく定期的自動バックアップの大切さ

Posted by admin | MySQL, PostgreSQL, サーバー管理 | 金曜日 23 5月 2008 3:16 PM

という事で、約40分で理解する定期的自動バックアップ方法のメモです。

参考url:
http://www.hyperdyne.co.jp/~oohashi/work/redhat/etc/remotebackup.shtml

今回はpostgresqlを例にしてみます。

なにをやるかですが、

  1. 遠く離れたLinuxマシン上で、自動的にデータを定期的に圧縮・保管する
  2. 圧縮は、週1回はフルで行ない、差分(追加・修正されたファイルのみ。削除されたファイルは反映されない)だけを毎日とる
  3. 手元にあるLinuxマシンが自動的にFTPでログインし、圧縮・保管されているファイルを毎日ゲットする
です。


1.の定期的にバックアップする

まず遠く離れたところにあるLinuxマシンで、データを定期的に圧縮・保管するようにします。ここでは、システム全体のバックアップは行なわず、データ のバックアップだけを行なうようにとどめ、バックアップにあたっては、ユーザのディレクトリごとに行ない、週1回そのフルバックアップを行ない、そのうち変 更・追加されたファイルのバックアップを毎日行なうようにします。

バックアップはシェルスクリプトを使い、cronによって自動的に行ないます。まずシェルスクリプト「dailybackup.sh」を、次の内容で記述します。

#!/bin/sh
set `date +%y%m%d`
cd /var/www
find html/ -mtime 1 \! -type d -print > /var/backup/html$1.txt
if test -s /var/backup/html$1.txt
then
tar zcvf /var/backup/html$1.tar.gz -T /var/backup/html$1.txt
fi
cd /home
find webmaster/ -mtime 1 \! -type d -print > /var/backup/webmaster$1.txt
if test -s /var/backup/webmaster$1.txt
then
tar zcvf /var/backup/webmaster$1.tar.gz -T /var/backup/webmaster$1.txt
fi
su -l postgres -c '/usr/bin/pg_dump database_1 > database_1.dump'
mv /var/lib/pgsql/database_1.dump /var/backup/database_1$1.dump
set `date --date '1 days ago' '+%y%m%d'`
rm -f /var/backup/*$1.txt
rm -f /var/backup/*$1.tar.gz
rm -f /var/backup/*$1.dump

ここでは、バックアップしたデータを格納するディレクトリを「/var/backup」としています。「/var/backup」のオーナーは「root」ですが、バックアップファイルをあとでFTPでゲットできるよう「webmaster」を例えば「webmaster」というようなグループに所属させ、そのグループにも読み書き・削除できる権限を与えておく必要があります。「chmod 770」です。

# ls -la
合計 74
drwxr-xr-x   27 root     root         4096 May  8 12:17 .
drwxr-xr-x   17 root     root         1024 Feb 17 04:15 ..
drwxrwx---    2 root     webmaster    8192 Jun 19 15:41 backup

シェルスクリプトなので先頭に「#!/bin/sh」が必要です。2行目の「set `date +%y%m%d`」は、dateコマンドから「010621」(2001年6月21日)というパラメータを作るためのもので、「$1」がこのパラメータに置き換わります。

「cd /var/www」でバックアップしたいディレクトリのひとつ上に移動します。「find html/ -mtime 1 \! -type d -print > /var/backup/html$1.txt」は、findコマンドで1日(24時間)以内に修正・追加されたファイルをリストアップします。リス トアップされたファイルリストは「html010618.txt」のように日付「010608」が付いたファイル名で保存されます。

findコマンドでは、「find <検索を開始するディレクトリ> <検索の条件> <コマンド>」という書式になります。


if test -s /var/backup/html$1.txt
then
tar zcvf /var/backup/html$1.tar.gz -T /var/backup/html$1.txt
fi

「if」文で分岐処理しています。先に実行するfindコマンドでは、変更・追加がなくてもファイルが作られるため、testコマンドを使ってそのファイルが空かどうかをチェックします。空でない場合、そのファイルリストをもとにtarコマンドで、リストにあるファイルを圧縮します。


su -l postgres -c '/usr/bin/pg_dump database_1 > database_1.dump'
mv /var/lib/pgsql/database_1.dump /var/backup/database_1$1.dump

は、PostgreSQLのデータベースをバックアップしています。


set `date --date '1 days ago' '+%y%m%d'`
rm -f /var/backup/*$1.txt
rm -f /var/backup/*$1.tar.gz
rm -f /var/backup/*$1.dump

は、前日の不要なファイルを削除するステップです。「set `date –date ‘1 days ago’ ‘+%y%m%d’`」で1日前を「010617」のようなパラメータとし、rmコマンドで不要なファイルを削除しています(daysはdayという単数形でもいいようです)。


以上のような内容のシェルスクリプトを作ったら、オーナーrootで「chmod 700」として実行権を与えておきます。スクリプトに誤りがないか確認したら、実行して動作を確認します。
実行して動作に問題が無ければ最後に、「/etc/crontab」に登録します。

30 4 * * * root /var/backup/dailybackup.sh > /dev/null 2 >&1

毎日明け方4時30分にスクリプト「dailybackup.sh」が実行されます。

同様にして「weeklybackup.sh」という名前のシェルスクリプトを次の内容で作ります。

#!/bin/sh
set `date +%y%m%d`
cd /var/www
tar zcvf /var/backup/html$1.full.tar.gz ./html/*
cd /home
tar zcvf /var/backup/webmaster$1.full.tar.gz ./webmaster/*
set `date --date '1 weeks ago' '+%y%m%d'`
rm -f /var/backup/*$1.full.tar.gz

dailybackup.shとほとんど同じ内容ですが、「なんとか+日付.full.tar.gz」という日付付きの名前で圧縮ファイルを作るようになります。rmコマンド行は、1週間前の不要なファイルを削除するステップです。「set `date –date ‘1 weeks ago’ ‘+%y%m%d’`」で1週間を「010617」のようなパラメータとし、rmコマンドで不要なファイルを削除しています(weeksはweekという単数形でもいいようです)。

dailybackup.shと同じように「/etc/crontab」に登録します。

50 4 * * 0 root /var/backup/weeklybackup.sh > /dev/null 2 >&1




3.のリモートマシンからFTPでバックアップファイルをゲットする

次に近くにあるLinuxマシンから自動的にリモートサーバにFTPでファイルをゲットする仕組みを作ります。まず次のような内容のシェルスクリプト(たとえば、「remote.sh」というような名前で)を作ります。

#!/bin/sh
cd /usr/bin
ftp -n < /home/xxxxxxx/login.www

「/usr/bin」ディレクトリにあるftpコマンドを使っています。続いて「/home/xxxxxxx」ディレクトリに「login.www」というような名前のファイルを作り、次のようなftpコマンドを記述しておきます。

open www.hyperdyne.co.jp
user webmaster xxxxxxxxxxxx
idle 600
prompt
hash
lcd /home/xxxxxxxx/www/
cd /var/backup
bin
mget *.tar.gz
ascii
mget *.dump


openコマンドでサーバを指定し、そのあとでuserコマンドでユーザ名とパスワードを渡しています。「xxxxxxxxxxxx」となっているところにパスワードが入ります。FTPではテキストでパスワードが流れてしまいます。lcdはlocal側のcd(Change Directory)です。ローカル側とリモート側でディレクトリを移動してからmgetコマンドで複数のファイルをgetします。

getするときには、バイナリファイルに対しては「bin」を、テキストファイルには「ascii」をあらかじめ実行しておきます。「hash」は進行状況を表示するコマンドです。実際に運用するときは不要です。

作ったシェルスクリプトを実行させてみてうまく動作するようでしたら、cronに登録しておきます。
以上です。お疲れ様でした。





Page 1 of 212