FedoraCoreを用いたxoopsグループウェアサーバ構築
Linux+apache+MySQL+PHP構成のWebアプリケーションサーバ構築

サーバー設定

設定したrootでログイン

 ランレベル5(GUIモード)で起動

サーバーサービスの有効化とランレベル設定


autofs--------- 345
canna --------- 345
crond --------- 345
haldaemon------ 345(USBメモリの自動マウントに必要)
httpd --------- 345
iiim ---------- 345(GUIモードに必須)
iptables ------ 345
messagebus----- 345(USBメモリの自動マウントに必要)
mysqld -------- 345
network ------- 345
ntpd ---------- 345
sshd ---------- 345
syslog -------- 345
vsftpd -------- 345
xinetd -------- 345

 □GUIでは
  アプリケーション→システム設定→サーバ設定→サービスを起動
  ランレベルの編集→3,4,5全てのランレベルをそれぞれ編集し、上記の設定をして保存をクリック

  ※設定を保存することにより再起動後、サービスが上記設定のとおり自動起動します

 □textでは下記のようにコマンドで設定できる
  ※使わないサービスの停止を忘れないように!

  #chkconfig --level 345 サービス名 on若しくはoff

デフォルトのランレベルを3(textモード)にする

 デスクトップの何もないところで右クリックして「端末を開く」

 ▽/etc/inittabの編集(viエディタにて編集)

  #vi /etc/inittab
  (shift+Aで編集モードに)

  id:3:initdefault: に変更

  保存方法:escを押してコマンドモードに戻し :wq
  init 6で再起動し、textモードになっているかどうか確認

  ※以後はinit 5(GUIモード),init 3(TEXTモード)で切り替え
   initはランレベル変更のためのコマンド
   (0:shutdown,3:text,5:GUI,6:reboot)

テキストモードの文字化け対策

 ▽デフォルトのUTF-8をeucJPにする
  #vi /etc/sysconfig/i18n

   LANG="ja_JP.eucJP"
   SUPPORTED="ja_JP.eucJP:ja_JP:ja"

 ▽manコマンド文字化け対応
  # vi /etc/man.config

   PAGER /usr/bin/less -is
   ↓
   PAGER /usr/bin/lv

 これでコンソール上で日本語表示をしたい場合はkonコマンドを実行すればOK
 日本語表示から抜ける場合はexit

 ※sshでリモート運用する場合はクライアントで文字コードをEUCにする

FTPの設定 /etc/vsftpd/vsftpd.confを編集

 ▽anonymousFTPの無効化

  anonymous_enable=NO

 ▽FTPのASCII転送許可(CGIスクリプト転送用設定)
  下記の設定項目の#をとる

  ascii_upload_enable=YES
  ascii_download_enable=YES

 ▽クライアントのディレクトリ削除を有効化
  下記の設定項目の#をとる

  ls_recurse_enable=YES

 ▽FTPで日本標準時間を使用する
  下記を記述

  use_localtime=YES

 ※設定を有効にするためvsftpdを再起動

  #/etc/rc.d/init.d/vsftpd restart

apacheの設定 /etc/httpd/conf/httpd.confを編集

 ▽http接続時のOS表示を無効(セキュリティ対策)

  ServerTokens OS  (OSは表示)
  ↓
  ServerTokens Prod (表示しない)

 ▽172.16.0.0のネットワークからのアクセスのみを許可。172.16.からのアクセスを一部拒否したい(たとえば172.16.2.*のサブネットからはアクセスさせたくない)というような場合はdenyに記述。

  □該当箇所を変更

   <Directory "/var/www/html">

    AllowOverride Limit

    Order allow,deny
    Allow from 172.16.
    deny from 172.16.2.

   </Directory>

 ※すべてを拒否し、172.16.0.0のサブネットだけを許可する場合は下記のように記述する。

   <Directory "/var/www/html">

    AllowOverride Limit

    Order deny,allow
    deny from all
    allow from 172.16.0.0

   </Directory>

※アクセス許可設定に関する参考サイト

アクセス制限の記述(Order, Allow, Deny)

アクセス制限の記述(Order, Allow, Deny) - アクセス制限 - Apache入門


▽public_htmlの有効化
  http://ドメイン若しくはIPアドレス/~ユーザー名/でサイト公開

  <IfModule mod_userdir.c>
   #UserDir disable (#をつけてコメントに)
   UserDir public_html (#をとって有効に)
  </IfModule>

  <Directory /home/*/public_html>
  から
  </Directory>
  までの#を削除

 ▽URLのディレクトリ指定でindex.phpを読み込み可能にする
  ・DirectoryIndexにindex.phpを追加

   DirectoryIndex index.php

 ▽CGI(perl)を利用するための設定

  □httpd.confに下記の記述を加えます。

   <Directory /home/*/public_html/cgi-bin>
    Options ExecCGI
   </Directory>

  □CGIスクリプトを有効にします。
   下記の設定項目の#をとる

    AddHandler cgi-script .cgi

  □/homeにあるユーザーのホームディレクトリのpublic_htmlにcgi-binディレクトリを作成する。  (このcgi-bin以下にcgiファイルを配置すれば動作します)
   スクリプト作成の際のCGIのパスは

    #!/usr/bin/perl

   です。

 ▽デフォルトの文字コードを無効にする
  標準だとUTF-8なのでブラウザの文字化けを回避するため

  AddDefaultCharset off

 ▽オープンオフィスのMIME設定
  下記を追加

AddType application/vnd.oasis.opendocument.text .odt
AddType application/vnd.oasis.opendocument.graphics .odg
AddType application/vnd.oasis.opendocument.presentation .odp
AddType application/vnd.oasis.opendocument.spreadsheet .ods
AddType application/vnd.oasis.opendocument.database .odb
AddType application/vnd.oasis.opendocument.formula .odf

 ※設定を有効にするためhttpdを再起動

  #/etc/rc.d/init.d/httpd restart

mysqlに関する設定

 ▽Linuxのmysql管理ユーザーにパスワードを設定
  #passwd mysql
  パスワードは任意。2回聞かれます。

 ▽mysqlデータベースのroot管理者にパスワードを設定
  #/usr/bin/mysql
  mysql>SET PASSWORD FOR root@localhost=PASSWORD('任意のパスワード');
  mysql>exit;

 ▽パスワードを持たないデフォルトユーザを削除(セキュリティ対策)
  #/usr/bin/mysql -u root -p
  Enter password:任意のパスワード
  mysql>USE mysql;
  mysql>DELETE FROM user WHERE password=('');
  mysql>exit;

 ▽デフォルトのデータベース"test"を削除(デフォルトの余分なDB削除)
  #/usr/bin/mysql -u root -p
  Enter password:任意のパスワード
  mysql>drop database test;
  mysql>exit;

 ▽匿名ユーザ削除後にMySQLの起動が失敗することに対する対処
  □localhostからのみ接続できる無権限のguestユーザをパスワードなしで登録

   #/usr/bin/mysql -u root -p
   Enter password:任意のパスワード
   mysql>grant usage on *.* to guest@localhost;
   mysql>exit;

  □MySQL起動スクリプト修正

   #vi /etc/rc.d/init.d/mysqld

   ping="/usr/bin/mysqladmin -uUNKNOWN_MYSQL_USER ping"
   ↓
   ping="/usr/bin/mysqladmin -u guest ping"

phpの設定 /etc/php.iniの編集

 ▽phpのメモリの消費上限をアップ
  ※デフォルト添付ファイル上限(8MB)の4倍で算出

  memory_limit = 32M ; Maximum amount of memory a script may consume (8MB)

  post_max_size = 32M

  upload_max_filesize = 8M

 ▽phpスクリプトでブラウザからファイルを開けるようにする
  セッションキャッシュの有効化

  session.cache_limiter = nocashe
  ↓
  session.cache_limiter = private

xoopsのユーザー作成とweb公開の設定

 ▽ユーザー作成(xoops)

  #useradd xoops

  □ユーザーパスワード設定

   #passwd xoops パスワードを2回聞かれます

 ▽web公開用ディレクトリの作成
  /home/xoopsにpublic_htmlディレクトリを作成

  #mkdir /home/xoops/public_html

 ▽所有者をxoopsユーザーに変更

  #chown xoops:xoops /home/xoops/public_html

 ▽SELinux対策
  (Linuxセキュア機能の設定:やらないとアクセスできない)

  □/home以下のタイプラベル初期化

   #restorecon -R /home

  □Linux側のxoopsディレクトリアクセス設定

   #chmod 711 /home/xoops

バックアップ用ユーザーとディレクトリの設定

 ▽/homeのバックアップファイル保存用のディレクトリ作成

  #mkdir /backup

 ▽バックアップ用ユーザー作成(backup)

  #useradd backup

 ▽ユーザーパスワード設定

  #passwd backup パスワードを2回聞かれます

 ▽/backupディレクトリの所有者をbackupユーザーに変更

  #chown backup:backup /backup

 ▽/backupディレクトリをbackupユーザーへアクセス許可

  #chmod 700 /backup

DB及び/homeの自動backup設定

 ▽xoopsDBの自動バックアップ設定

  □DBバックアップスクリプトの作成
   /etc/cron.daily/xoopsback.shを下記内容で作成

#!/bin/sh
backupname='mysqlxoops'`date +'%d'`'.dump'
/usr/bin/mysqldump -u root -pパスワード xoops > /backup/$backupname

  ※ファイル名には%dで日が入るようにしています。必要に応じて%Y%m%dを設定すれば年月日などをファイル名につけることが出来ます。作成日付で世代管理をする必要がなければ$backupnameの代わりにmysqlxoops.dumpなどの固定ファイル名にしておけばバックアップファイルが増えすぎてディスクフルになる危険性が減ります。

  □属性の変更

   #chmod 700 /etc/cron.daily/xoopsback.sh


 ▽/homeの自動バックアップ設定

  □/homeバックアップスクリプトの作成
   /etc/cron.daily/homeback.shを下記内容で作成

#!/bin/sh
backupname='home'`date +'%d'`'.tar.gz'
tar cvfz /backup/$backupname /home

  □属性の変更

   #chmod 700 /etc/cron.daily/homeback.sh

※上記設定のバックアップは同一ハードウェア上にファイルがありますので、FTPのフリーソフトなどで別のPCに自動的にコピーするよう設定しましょう。

ssh(リモートログイン)のセキュリティ強化

 /etc/ssh/sshd_configを編集

 ▽ログインをセキュアなssh2プロトコルに限定

  Protocol 2

 ▽rootログイン禁止

  PermitRootLogin no

 ▽ログインするユーザの限定(xoopsユーザのみ許可)
  ファイル末尾に追記

  AllowUsers xoops

/var/www/html グループウェアサーバーのドキュメントルートへのアクセスをxoopsホームに転送

 ▽index.phpの作成
  /var/www/htmlに下記の内容でindex.phpを作成する

  <?
  header("Location:http://DNSに登録されたホスト名かサーバIP/~xoops/html/");
  ?>

phpMyAdminの利用(この設定は任意です)

 mysqlの内容を直接ブラウザで編集出来るようにphpMyAdminをアップロード

 ▽config.default.phpの修正
  phpmyadminのパス、認証の種類、mysqlのパスワード部分を修正変更

  $cfg['PmaAbsoluteUri'] = 'http://DNSに登録されたホスト名かサーバIP/~xoops/phpMyAdmin/';
  $cfg['Servers'][$i]['auth_type'] = 'http'; // Authentication method (config, http or cookie based)?
  $cfg['Servers'][$i]['password'] = 'mysqlのパスワード'; // MySQL password (only needed

 ▽phpmyadminをアップロード
  phpMyAdmin-2.7.0-pl2をphpMyAdminと名前を変えて/home/xoops/public_htmlにフォルダごとFTPでアップ

 ※あとはブラウザでhttp://DNSに登録されたホスト名かサーバIP/~xoops/phpMyAdmin/とURLを入力し、mysqlの管理者(Linuxではなくmysqlデータベースの管理者)のユーザー名とパスワードで利用可能になる。

障害復旧

 障害復旧の場合はここまで設定した後、/homeのバックアップファイルを書き戻し、mysqlのxoopsDBをバックアップから書き出せばバックアップ時の状態に復旧できます。


FirstUpload 10/03/20-14:56 : LastUpdate 10/03/23-10:56

Copyright © FedoraCoreを用いたxoopsグループウェアサーバ構築 All Rights Reserved.
Script by Petit CMS Designed by info-cache.com | admin