VMWarePlayer+CentOSで環境構築した時のメモ

サーバー関連
この記事は約22分で読めます。

この記事は、14年前に書かれました。

はじめに

VMWarePlayerにCentOSを入れて開発用サーバーを立ちあげた際のメモ

インストールパーテイション

hdaドライブ(20G)
/boot 100M
/ 残りすべて

hdbドライブ(30G)
/var  10G
/home 20G

アクセス制御方法inetd経由の場合(最終的にはiptablesでやった)

/etc/hosts.deny でALL:ALLで全部拒否
/etc/hosts.allowで192.168.0.5よりHTTPD、VSFTPD、INTELNETのみ許可

iptablesにアクセス許可IPを設定する方法(192.168.1.100からの場合)

iptables -A MY-FIREWALL -s 192.168.1.100 -j ACCEPT
確認は  iptables -t filter -L -v --line-number

iptablesの設定を恒久的に保存する(実行しないと設定した内容が再起動で消えてしまう)
service iptables save

CentOS-4の文字コードをUTF-8からEUC-JPにする

vi /etc/sysconfig/i18n
<下記のように変更>
LANG="ja_JP.eucJP"
SUPPORTED="ja_JP.eucJP:ja_JP:ja"
SYSFONT="latarcyrheb-sun16"

「/etc/man.config」ファイルの「PAGER」の部分を「lv」に置き換える。
PAGER /usr/bin/lv

Apache設定

/etc/httpd/conf/httpd.conf

・HOSTNAME local.testnk.jp

・LanguagePriorityの順番を変更
jaを先頭へ

・AddDefaultCharaset ISO-8859-1 をコメントアウトする

・ブラウザでのエラー表示時にOSやApacheの種類を表示しないようにする
ServerTokens OS  → ProductOnly変更
ServerSignature →offへ変更



・ディレクトリ内でCGIを有効にする。.htaccessを有効にする
<Directory "var/www/html">
    Option Includes ExecCGI FollowSymlinks 変更
    AllowOverride ALL へ変更 (.htaccessを有効にする意味)

・CGI実行ファイルの設定
AddHandler cgi-script .cgi .pl


・文字化け対策 先頭に # を付けてコメントにし無効。
#AddDefaultCharset ISO-8859-1

・home(ユーザDIR)を有効にする<Directory "var/www/html">ディレクティブ
  #UserDir "disable" ←/~IDでアクセスさせない
  UserDir /home/*/www/public_html (例

・DirectoryIndex index.html index.php index.cgi

(ドキュメントルートを/var/www/html/から/home/*/www/public_htmlへ変更する例)
ドキュメントルートを変更する場合
DocumentRoot /home/nk/www/public_html

/etc/httpd/conf/httpd.conf

・HOSTNAME local.testnk.jp

・LanguagePriorityの順番を変更
jaを先頭へ

・AddDefaultCharaset ISO-8859-1 をコメントアウトする

・ブラウザでのエラー表示時にOSやApacheの種類を表示しないようにする
ServerTokens OS  → ProductOnly変更
ServerSignature →offへ変更



・ディレクトリ内でCGIを有効にする。.htaccessを有効にする
<Directory "var/www/html">
  Option Includes ExecCGI FollowSymlinks 変更
  AllowOverride ALL へ変更 (.htaccessを有効にする意味)

・CGI実行ファイルの設定
AddHandler cgi-script .cgi .pl


・文字化け対策 先頭に # を付けてコメントにし無効。
#AddDefaultCharset ISO-8859-1

・home(ユーザDIR)を有効にする<Directory "var/www/html">ディレクティブ
  #UserDir "disable" ←/~IDでアクセスさせない
  UserDir /home/*/www/public_html (例

・DirectoryIndex index.html index.php index.cgi


(ドキュメントルートを/var/www/html/から/home/*/www/public_htmlへ変更する例)
ドキュメントルートを変更する場合
DocumentRoot /home/nk/www/public_html

<Directory "/var/www/html">を変更する
	↓
<Directory "/home/*/www/public_html">

<Directory "/va/www/cgi-bin">を変更する
	↓
<Directory "/home/*/www/public_html/cgi-bin">

・Apache再起動
	/etc/init.d/httpd restart

Perlコマンドへ/usr/local/bin/perlでもアクセスできるようにする。

ln -s /usr/bin/perl /usr/local/bin/perl
whereis perl  ←Perlのパスを確認

DNSサーバー設定ファイル編集(内部DNS)

/var/named/chroot/etc/named.conf

追加(ここから)
allow-query{
            127.0.0.1;
            192.168.24.0/24; ← このDNSサーバーを使用するのは内部のみ
};
allow-recursion{
            127.0.0.1;
            192.168.24.0/24; ← このDNSサーバーをキャッシュサーバーとして使用するのは内部のみ
};
allow-transfer{
            127.0.0.1;
            192.168.24.0/24; ← このDNSサーバーのゾーンデータの転送先は内部のみ
};
forwarders{
            192.168.24.1; ← ルーター経由接続環境の場合はルーターのIPアドレスを指定※
            XXX.XXX.XXX.XXX; ← PPPoE接続環境の場合はプロバイダから通知されたDNSサーバー(プライマリ)のIPアドレスを指定
            XXX.XXX.XXX.XXX; ← PPPoE接続環境の場合はプロバイダから通知されたDNSサーバー(セカンダリ)のIPアドレスを指定
};

追加(ここから)
zone "local.testnk.jp" IN {← 正引きゾーンデータベース宣言(バーチャルドメイン運用する場合はこのディレクティブを同じように追加する)
        type master;
        file "named.testnk";
        allow-update { none; };
};
zone "24.168.192.in-addr.arpa" IN {← 逆引きゾーンデータベース宣言
        type master;
        file "24.168.192.in-addr.arpa.db";
        allow-update { none; };
};

正引き(ドメイン名⇒IPアドレス)ゾーンデータベース作成

vi /var/named/chroot/var/named/named.testnk

$TTL    86400
@       IN      SOA     local.testnk.jp.  ns.local.testnk.jp.(
                                      2010083002 ; Serial     ←シリアルはセカンダリへの書き換えのため、変更の度に常に新しい数字にする
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
        IN NS    ns.local.testnk.jp.
ns      IN A     192.168.24.210
ftp     IN CNAME ns.local.testnk.jp. ←別名でアクセスする場合はCNMAEで登録し、IPではなくNSに入れたドメイン名で登録すること
soho    IN CNAME ns.local.testnk.jp.
roland  IN CNAME ns.local.testnk.jp.

逆引き(IPアドレス⇒ドメイン名)ゾーンデータベース作成

vi /var/named/chroot/var/named/24.168.192.in-addr.arpa.db

$TTL    86400
@       IN      SOA     local.testnk.jp.  ns.local.testnk.jp.(
                                      2010083001 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
              IN      NS    ns.local.testnk.jp.
210           IN      PTR   ns.local.testnk.jp.  ←サーバーIPアドレス最下位部(192.168.24.210)とドメイン名を指定

DNSサーバー再起動

/etc/rc.d/init.d/named restart

cat /var/log/messages で起動にエラーがないか確認

nameサーバが正しく動作しているかチェック

dif @127.0.0.1 local.testnk.jp soa  ←SOAレコードチェック
    ANSWER SECTIONに設定された内容が表示されるか?

Windowsからテスト

nslookup ドメイン名  (ドメイン名でIPが返ってくるか)
nslookup IPアドレス  (IPでドメイン名が返ってくるか)

バーチャルドメインでサーバにアクセスする

・/etc/httpd/conf/httpd.confにバーチャルホストを設定する
・Virtualディレクティブに以下のように設定する。バーチャルドメインごとにまるごとコピーして設定。

<Virtual Host 192.168.11.10>
    ServerAdmin testnk@local.testnk.jp
    ServerName soho.local.testnk.jp
    DocumentRoot /var/www/html/
    <Directory "/var/www/html/">
    Options ExecCGI Includes FollowSymLinks
    AllowOverride All
    Allow from all
    Order allow,deny
    </Directory>
    #ErrorLog logs/nk_error.log
    #CustomLog logs/nk_access.log
</Virtual>

・/var/named/chroot/var/named/named.testnk にも修正が必要。その時Serialを書き換えること!!反映されない

時刻サーバ(NTP)設定

/etc/ntp.conf

restrict default ignore   ←NTPサーバには以降で設定したホストのみアクセス許可する設定
restrict 192.168.0.5 mask 255.255.255.0 nomodify notrap ←192.168.05からのみ許可する。ただし192.168.0.5からのサーバへの時刻変更は受け付けない

restrict 210.173.160.27 mask 255.255.255.255 nomodify notrap noquery ←時刻サーバIP設定(数種類可)

ntpdが自動で起動するように設定しておく

rootになれるユーザを限定する

vi /etc/login.defs
最終行に以下を追加
SU_WHEEL_ONLY yes

vi /etc/pam.d/su
下記の行のコメントを外す
auth       required     /lib/security/$ISA/pam_wheel.so use_uid

スーパーユーザになることを許可する一般ユーザをwheelグループに追加。(この場合はnkユーザがスーパーユーザになれる)
vi /etc/group
wheel:x:10:root,hoge

ファイヤーウォール設定(iptables)

/etc/sysconfig/iptables をバックアップしておく

<ローカルLANからしかアクセスを許可しない 例)192.168.0.5からのみ
iptables -t filter -F  ←以下4行ルールを削除
iptables -t filter -X
iptables -t nat -F
iptables -t nat -X

iptables -t filter -P INPUT DROP ←すべて拒否
iptables -t filter -P FORWARD DROP ←すべて拒否
iptables -t filter -P OUTPUT ACEPT ←すべて許可 

iptables -N MY-FIREWALL ←ユーザ定義チェイン作成

iptables -A MY-FIREWALL -i lo -j ACCEPT ←ローカルループバックからは許可
iptables -A MY-FIREWALL -s 192.168.11.5 -j ACCEPT ←192.168.11.5からのみから許可

iptables -A MY-FIREWALL -m state --state  ESTABLISHED,RELATED -j ACCEPT  ←確立済みの接続は許可

iptables -A INPUT -j MY-FIREWALL
service iptables save  ←ルールを保存する

OK表示が出れば完了
<確認>
iptables -t filter -L -v

<行追加>
iptables -t filter -L --line-number で空行を確認する
iptables -t filter -I MY-FIREWALL 1 -s 192.168.0.6 -j ACCEPT  ←1行目に192.168.0.6の許可を追加
service iptables save  ←ルールを保存する

Mysql導入

yum -y install mysql-server

・文字コード問題について
	mysqlサーバでコマンドにてチェック。
		status
		show variables like "char%";

vi /etc/my.conf で設定を変更する
default-character-set = utf8 ← 追加(MySQLサーバーの文字コードをUTF-8にする)

[mysql]
default-character-set = utf8

/etc/rc.d/init.d/mysqld start ← MySQL起動

自動起動設定
chkconfig mysqld on


・稼動状況確認
mysqladmin ping で mysqld is alive と出れば稼動中

・mysqlを使う
mysql -u root

・mysqlを使う(PASSあり)
mysql -u root -p

・rootにパスワードを設定する(アクセスサーバごとに設定できる)
mysqlを起動
mysql> set password for root@localhost=password('rootパスワード');  ←接続元ホストがlocalhostのrootユーザにパスワード設定
mysql> set password for root@local.testnk.jp=password('rootパスワード');  ←接続元ホストがlocal.testnk.jpのrootユーザにパスワード設定

・匿名ユーザ削除しておく
デフォルトでユーザ名のないユーザが登録されている
mysql> delete from mysql.user where user='';


・使用するデータベースを指定する
	use ******

・現在使用しているデータベースを確認する
	show processlist;

・EUC環境のPHPからアクセスする場合の文字化け対策について。
	DB接続後に下記を実行する1文を追加。
	$db->query("SET NAMES ujis");  ※文字コードの部分は適宜変更

FTPサーバの設定(PROFTPDを使用)

・vsftpdが干渉するので削除しておく

・vi /etc/yum.repos.d/dag.repo
最終行の includepkgs= 以下に proftpd を追加
includepkgs=clamd clamav* proftpd

・インストール
yum -y install proftpd

・vi /etc/proftpd.conf
ServerType inetd ←inet経由で起動に変更

DefaultRoot                     ~/www !wheel ← ルートディレクトリを~/wwwとする
※ただしwheelグループ所属ユーザは除く


--追加(ここから)--

<Limit LOGIN> アクセスする制限IP
  Order allow, deny
  Allow from 127.0.0.1, 192.168.0.5 192.168.0.6
  Deny from all
</Limit LOGIN>

--追加(ここまで)--

PHPの日本語環境の設定

現在のphpのモジュール関係を調べる
yum list | grep php

インストールする
yum install php-mbstring

etc/php.ini を変更する

mb_string 関連のコメントを外す

apacheを再起動する

php.info()でmbstringがenableになっていればOK

XAMPP Linuxインストール

http://www.apachefriends.org/jp/xampp-linux.html
http://sourceforge.net/projects/xampp/files/XAMPP%20Linux/

$tar xvfz xampp-linux-1.6.tar.gz -C /opt


・XAMPPとバッティングするので既存のhttpdとMysqlを停止する
$/etc/init.c/httpd stop
$mysqladmin -u root -p***** shutdown(*****はPASS)
・XAMPPの起動
$/opt/lampp/lampp start
$/opt/lampp/lampp startssl(SSLサポートでの起動)


・XAMPPの停止
$/opt/lampp/lampp stop

・セキュリティの設定変更
$/opt/lampp/lampp security

・phpのバージョンを切り替える
$/opt/lampp/lampp php4
$/opt/lampp/lampp php5

アンイストール
$rm -rf /opt/lampp
$rm -rf /opt/xampp

/lampp/bin  		XAMPPのコマンドが格納されています。たとえばmysqlを実行するとMySQLが実行されます
/lampp/htdocs  		Apacheのコンテンツが格納されているフォルダです(ドキュメントルート)
/lampp/etc/httpd.conf 		Apacheの設定ファイルです。Apacheの設定ファイルはextraフォルダーに分かれて保存されています。必要な設定ファイルをhttpd.confにインクルードしてください
/lampp/etc/my.cnf 		MySQLの設定ファイルです
/lampp/etc/php.ini 		PHPの設定ファイルです
/lampp/etc/proftpd.conf 		ProFTPDの設定ファイルです(XAMPP 0.9.5以降で対応)
/lampp/phpmyadmin/config.inc.php 		phpMyAdminの設定ファイルです


・phpmyadminへのパス
	http://soho.local.testnk.jp/phpmyadmin/

・XAMPPでのPerlモジュールのインストール方法
$/opt/lampp/bin/cpan  を実行
後は通常どおりモジュールインストール

Postfixでのoutbandブロックの解決方法

プロバイダの中継サーバーを経由するように設定する

$/etc/postfix/main.cf 

relayhost の箇所にプロバイダ指定の中継サーバを指定する
例:relayhost = [relay-mta.auone-net.jp]

$service postfix restart

CakePHP関連

Xampp for Linux 環境でbakeする場合、デフォルトの/var/lib/をを見に行ってしまうためMySQLのエラーとなる
解決策は下記のようにシンボリンクリンクを張る
ln -s /opt/lampp/mysql/mysql.sock /var/lib/mysql.sock

bakeコマンドは sh cake bake -app /opt/lampp/htdocs/****/app

Postgres関連

インストール
#yum -y  install postgresql-server

開始(☆これ重要!!!)
#/etc/init.d/postgresql start

#su - postgres 

#psql

終了
#\q
#exit

ユーザー作成例
#su - postgres 
#createuser -APdE nk
※作成ユーザー(ID PASS)
	postgres  postgres
	nk nk

データベースの作成例
#createdb --encoding EUC_JP nktest

データベースリスト
#psql -l

postgresql設定
#vi /var/lib/pgsql/data/postgresql.conf
tcpip_socket = true ← 追加(TCP/IP経由でのデータベース接続許可)

#vi var/lib/pgsql/data/pg_hba.conf 
host all all 127.0.0.1 255.255.255.255 trust ← 追加



phpPgAdminのインストール
#yum -y install php-pgsql  ←PHPのpostgres接続パッケージインストール
#wget http://downloads.sourceforge.net/phppgadmin/phpPgAdmin-4.2.2.tar.gz
#tar -zxvf phpPgAdmin-4.2.tar.gz
#mv phpPgAdmin-4.2.2 phpPgAdmin  ←ディレクトリ名を変更

ブラウザより http://soho.local.testnk.jp/phpPgAdmin/ でアクセス

・phpPgAdminでのエクスポート、インポート
左よりデータベース名を選択し、右でエクスポートを選択
「構造とデータ」を選択しフォーマットSQLを選択
オプションで「ダウンロード」にチェックをいれて実行

インポートは左よりデータベース名を選択し、右でSQLを選択。
「SQLスクリプトをアップロード」でダンプファイルを選択して実行する

VMWarePlayerにCentOSを入れてサーバー化する

VMware Network Adapter VMnet8のIPを192.168.24.209とした
ブリッジ接続(物理ネットワーク接続の状態を複製ON)

CentOS側のネットワーク設定
eth0:	IP 192.168.24.210/subnetmask 255.255.255.0/gateway 192.168.24.1
DNS 192.168.24.210/192.168.24.1

httpd自動起動
httpdとftpのサービスをON

SE LINUX無効化

[root@centos ~]# getenforce ← SELinux状態確認
Enforcing ← SELinux有効

[root@centos ~]# setenforce 0 ← SELinux無効化

[root@centos ~]# getenforce ← SELinux状態確認
Permissive ← SELinux無効

[root@centos ~]# vi /etc/sysconfig/selinux ← SELinux設定ファイル編集
SELINUX=enforcing
↓
SELINUX=disabled ← システム起動時にSELinuxを無効化

OPENSSLのインストール

yum install openssl
yum install mod_ssl
※証明書エラーが出るが問題ない

PerlからのNet::SSLメール送信準備

下記モジュールは最低必要だが、依存関係に注意すること
Net::SSLeay
IO::Socket::SSL
Net::SMTP
Net::SMTP::SSL
Net::SMTP::TLS
Net::POP3
Authen::SASL

※Net::SSLeayを入れるにはopensslが必要
※IO::Socket::SSLはNet::IDN::Encode, Net::LibIDN がないとインストールに失敗
※IO::Socket::SSLはSSLeay.pmがインストールされていないとインストールに失敗
※Net::SMTP::SSLはSSL.pmがインストールされていないとインストールに失敗
※Net::SMTP::TSLはIO::Socket::SSLがインストールされていないとインストールに失敗

TLSで送信時に下記エラーが発生する場合の対処!!!!!
invalid SSL_version specified at /usr/local/share/perl/5.14.2/IO/Socket/SSL.pm line 332
バグがあるらしいので下記のように修正

chmod 755 /usr/local/share/perl/5.14.2/IO/Socket/SSL.pm
vi /usr/lib/perl5/site_perl/5.8.8/IO/Socket.pmの下記箇所を修正

m{^(!?)(?:(SSL(?:v2|v3|v23|v2/3))|(TLSv1[12]?))$}i
↓
m{^(!?)(?:(SSL(?:v2|v3|v23|v2/3))|(TLSv1[12]?))}i 

参考URL http://jujurou.blog34.fc2.com/blog-entry-346.html   http://raspberrypi.stackexchange.com/questions/2118/sendemail-failure