この記事は、14年前に書かれました。
- はじめに
- インストールパーテイション
- アクセス制御方法inetd経由の場合(最終的にはiptablesでやった)
- iptablesにアクセス許可IPを設定する方法(192.168.1.100からの場合)
- CentOS-4の文字コードをUTF-8からEUC-JPにする
- Apache設定
- Perlコマンドへ/usr/local/bin/perlでもアクセスできるようにする。
- DNSサーバー設定ファイル編集(内部DNS)
- 正引き(ドメイン名⇒IPアドレス)ゾーンデータベース作成
- 逆引き(IPアドレス⇒ドメイン名)ゾーンデータベース作成
- DNSサーバー再起動
- nameサーバが正しく動作しているかチェック
- Windowsからテスト
- バーチャルドメインでサーバにアクセスする
- 時刻サーバ(NTP)設定
- rootになれるユーザを限定する
- ファイヤーウォール設定(iptables)
- Mysql導入
- FTPサーバの設定(PROFTPDを使用)
- PHPの日本語環境の設定
- XAMPP Linuxインストール
- Postfixでのoutbandブロックの解決方法
- CakePHP関連
- Postgres関連
- VMWarePlayerにCentOSを入れてサーバー化する
- SE LINUX無効化
- OPENSSLのインストール
- PerlからのNet::SSLメール送信準備
はじめに
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