-
Postfix設定(基本)
1
cp
-pi /etc/postfix/main.cf /etc/postfix/main.cf.org
2
vi
/etc/postfix/main.cf
下記内容を追加 # 自FQDN名を指定 # hostnameコマンドの戻り値を設定する。 # 私の環境では「z-area.net」になるが、1つのサーバで # 複数の機能(ウェブサーバ、メールサーバ)を持っている場合、 # OSのホスト名は利用できないため、先頭にmailをつけました。 myhostname = mail.z-area.net # 自ドメイン名を指定 # 上記のmyhostnameの先頭mailを削除した値を設定する。 mydomain = z-area.net # メール送信時の送信元メールアドレス@以降にドメイン名を付加 # Postfixの機能でOSユーザ名のみを宛先に指定した場合、@以降を自動で補完する。 myorigin = $mydomain # メールボックス形式をMaildir形式 home_mailbox = Maildir/ # メールサーバーソフト名の隠蔽化 smtpd_banner = $myhostname ESMTP unknown # 受信メールサイズ制限 message_size_limit = 10485760 # SMTPのVRFYコマンドを使用禁止 # VRFYはアカウントが実在するか確認するコマンドで、 # でたらめなユーザ問い合わせを行う悪質なプログラムによりアカウント流出を防ぐ。 disable_vrfy_command = yes # sasl認証に対応していないメーラーを拒否 broken_sasl_auth_clients = yes
下記内容を変更 # 外部からのメール受信を許可 # 127.0.0.1を指定するとローカルから外部への配送のみ許可 inet_interfaces = localhost ↓ inet_interfaces = all # 自ドメイン宛メールを受信許可 mydestination = $myhostname, localhost.$mydomain, localhost ↓ mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
【メールサーバ】Postfix導入
メールサーバを構築します。
メールのプロトコルは主に3種類。
SMTP:Simple Mail Transfer Protocol メールサーバが電子メールを他のサーバへ送信したり、受信するためのプロトコル POP:Post Office Protocol メールサーバ内のメールスプールに含まれているメッセージを受信したり削除するためのプロトコル IMAP:Internet Message Access Protocol メールスプールのメッセージに対して、移動や検索等を行うプロトコル
送信ではSMTPを利用するので、Postfixを導入します。
-
Postfixの導入確認
1
yum list installed |
grep
postfix
postfix.x86_64 2:2.6.6-6.el6_5 @updates
1
postconf mail_version
mail_version = 2.6.6
-
Postfixの導入
インストール済ではない場合は下記コマンドでインストールします。1
yum -y
install
postfix
sendmailがインストールされている場合、起動を止めておきます。
1
/etc/rc.d/init.d/sendmail stop
2
chkconfig --del sendmail
-
Postfixの導入確認(SMTP-Auth)
SMTP-Authとはメール送信時にユーザ名とパスワードで認証を行う機能です。1
yum list installed |
grep
cyrus-sasl
cyrus-sasl.x86_64 2.1.23-15.el6_6.1 @updates cyrus-sasl-lib.x86_64 cyrus-sasl-plain.x86_64
-
Postfixの導入(SMTP-Auth)
インストール済ではない場合は下記コマンドでインストールします。1
yum -y
install
cyrus-sasl
【VPNサーバ】OpenVPN導入その5
ASUSのタブレットを購入したので、こちらにもOpenVPNを導入します。
-
OpenVPN設定(クライアント用の証明書と鍵作成(追加))
RaspberryPiでタブレット用の証明書と鍵を作成します。1
cd
/etc/openvpn/easy-rsa
2
source
./vars
3
./build-key クライアント名(タブレット)
作成した証明書や鍵のうち、
クライアントで利用する下記ファイルをWindowsにUSB等で持ってきて、設定を行います。ca.crt クライアント名(タブレット).crt クライアント(タブレット).key ta.key(iPhone優先のため、利用していませんが、一応)
-
クライアント設定ファイル(タブレット用)
クライアント設定ファイルとして「クライアント名(タブレット).ovpn」ファイルを作成します。
設定内容は「OpenVPN導入その3」の設定値と全く一緒です。
-
はまったこと
タブレットにOpenVPNをインストールするとデスクトップに「OpenVPN GUI」の
ショートカットが作成されるので、ダブルクリックして実行し、接続します。
単純に実行するとOpenVPNには接続し、IPが割り振られますが、
OpenVPN内の他のクライアントに接続できませんでした。
pingももちろん飛びません。ipv6が悪さをしているのかと色々勘ぐりましたが、
ちゃんとクライアント側のログを見てみると下記エラーが出力されていました。ROUTE: route addition failed using CreateIpForwardEntry: アクセスが拒否されました。[status=5 if_index=12] Route addition via IPAPI failed [adaptive] Route addition fallback to route.exe env_block: add PATH=C:\Windows\System32;C:\WINDOWS;C:\WINDOWS\System32\Wbem ERROR: Windows route add command failed [adaptive]: returned error code 1
Cドライブ内のexeファイルを実行できていないようです。
これを解決するには「OpenVPN GUI」のショートカットを
常に管理者権限で実行する必要があります。「OpenVPN GUI」のショートカットを右クリックからプロパティを開き、
「互換性」タブの「管理者としてこのプログラムを実行する」のチェックボックスをチェックします。
これで無事、OpenVPN内のクライアントにも接続できました。
【APサーバ】warファイル配置
-
Tomcat設定ファイルの内容確認
1
/usr/
local
/tomcat/conf/server.xml
# 下記内容が設定されていることを確認 <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
warファイルは「/usr/local/tomcat/webapps」に配置します。
上記設定内容がtrueになっていると、
配置した瞬間にTomcatの起動中にもかかわらず、同階層に自動で展開されます。
-
Apache2とTomcatの連携設定追加
WebアプリのURLが「http://z-area.net/コンテキスト名/」である場合、
ポート番号を指定せずに接続するための設定を追加します。1
vi
/etc/httpd/conf/httpd.conf
下記を最終行に追加 <Location /コンテキスト名/> ProxyPass ajp://localhost:8009/コンテキスト名/ allow from all </Location>
【APサーバ】Apache2とTomcat連携
ポート番号を指定せずにTomcatにアクセスします。
-
Tomcat側の設定
1
vi
/usr/
local
/tomcat/conf/server.xml
下記をコメントアウト <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> 下記がコメントアウトされていないことを確認 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
-
Apache2側の設定
1
vi
/etc/httpd/conf/httpd.conf
下記がコメントアウトされていないことを確認 LoadModule proxy_ajp_module modules/mod_proxy_ajp.so 下記を最終行に追加 <Location /examples/servlets/> ProxyPass ajp://localhost:8009/examples/servlets/ allow from all </Location>
-
Apache2とTomcatの連携動作確認
1
/etc/rc.d/init.d/httpd stop
2
sudo
-u tomcat /usr/
local
/tomcat/bin/
shutdown
.sh
3
sudo
-u tomcat /usr/
local
/tomcat/bin/startup.sh
4
/etc/rc.d/init.d/httpd start
5
/etc/rc.d/init.d/iptables start
http://z-area.net/examples/servlets/
ポート指定なしで繋がるようになるため、iptablesは有効のままにしておきます。
【APサーバ】Tomcat導入
-
Tomcat専用ユーザ作成
1
useradd
-s /sbin/nologin tomcat
/sbin/nologinシェルを指定し、通常利用不可とする。
-
Tomcat導入
バージョンは「apache-tomcat-7.0.50.tar.gz」にしました。
サーバーに配置しておきます。1
tar
xvzf apache-tomcat-7.0.50.
tar
.gz
2
mv
apache-tomcat-7.0.50 /usr/
local
3
cd
/usr/
local
4
chown
-R tomcat.tomcat apache-tomcat-7.0.50
5
ln
-s apache-tomcat-7.0.50 tomcat
-
環境変数の設定
下記3つのうちのどれかに記載します。
【共通設定】 /etc/profile 「JAVA_HOME」や「CATALINA_HOME」の値を設定する。 【環境変数設定】 $CATALINA_HOME/bin/setenv.sh 「JAVA_OPTS」や「CATALINA_OPTS」の値を設定する。 【クラスパス設定】 $CATALINA_HOME/bin/setclasspath.sh 追加のjarファイル等を設定する。
1
vi
/etc/profile
今回は共通設定に追加します。
下記を最終行に追加 export JAVA_HOME=/usr/lib/jvm/java export CATALINA_HOME=/usr/local/tomcat
環境変数を適用しておきます。
1
source
/etc/profile
-
Tomcat起動確認
1
/etc/rc.d/init.d/iptables stop
2
sudo
-u tomcat /usr/
local
/tomcat/bin/startup.sh
http://z-area.net:8080/examples/servlets/
「Servlet Examples with Code」の画面が出れば成功です。
併せてrootユーザではなくtomcatユーザで動作していることを確認します。1
ps
-ef |
grep
tomcat
tomcat プロセスID 親プロセスID プロセッサ使用率 プロセスの起動時刻 制御端末 累積時間 略
startup.shはrootユーザで実行しないこと。
初回でrootユーザで実行するとログファイルがrootユーザで作成されてしまい、
tomcat専用ユーザでstartup.shを実行しても権限がないと言われてしまうので、
そうなった場合、1度ログを削除すれば問題なし。起動確認ができたのでTomcat停止し、iptablesを有効にしておきます。
1
sudo
-u tomcat /usr/
local
/tomcat/bin/
shutdown
.sh
2
/etc/rc.d/init.d/iptables start
【APサーバ】Java導入
-
Java導入
1
yum search openjdk
読み込んだプラグイン:downloadonly, fastestmirror, security 略 ============================= N/S Matched: openjdk ============================= java-1.6.0-openjdk.x86_64 : OpenJDK Runtime Environment java-1.6.0-openjdk-demo.x86_64 : OpenJDK Demos java-1.6.0-openjdk-devel.x86_64 : OpenJDK Development Environment java-1.6.0-openjdk-javadoc.x86_64 : OpenJDK API Documentation java-1.6.0-openjdk-src.x86_64 : OpenJDK Source Bundle java-1.7.0-openjdk.x86_64 : OpenJDK Runtime Environment java-1.7.0-openjdk-demo.x86_64 : OpenJDK Demos java-1.7.0-openjdk-devel.x86_64 : OpenJDK Development Environment java-1.7.0-openjdk-javadoc.noarch : OpenJDK API Documentation java-1.7.0-openjdk-src.x86_64 : OpenJDK Source Bundle java-1.8.0-openjdk.x86_64 : OpenJDK Runtime Environment java-1.8.0-openjdk-demo.x86_64 : OpenJDK Demos java-1.8.0-openjdk-devel.x86_64 : OpenJDK Development Environment java-1.8.0-openjdk-headless.x86_64 : OpenJDK Runtime Environment java-1.8.0-openjdk-javadoc.noarch : OpenJDK API Documentation java-1.8.0-openjdk-src.x86_64 : OpenJDK Source Bundle 略
今回はJDK1.7を導入します。
1
yum
install
java-1.7.0-openjdk-devel
依存性関連をインストールしました: flac.x86_64 0:1.2.1-6.1.el6 giflib.x86_64 0:4.1.6-3.1.el6 略 xorg-x11-fonts-Type1.noarch 0:7.2-9.1.el6 完了しました!
-
Java導入確認
1
java -version
java version "1.7.0_71" OpenJDK Runtime Environment (rhel-2.5.3.1.el6-x86_64 u71-b14) OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode)
-
JavaHOMEの設定
JAVA_HOMEを設定する場合は下記パスを設定する。
Tomcat導入のエントリーで一緒に設定するので、ここでは省略。/usr/lib/jvm/java
上記はシンボリックリンクになっており、
実体は下記パスを参照している。/etc/alternatives/java_sdk
さらに「java_sdk」もシンボリックリンクになっており、
実体は下記パスを参照している。/usr/lib/jvm/java-1.7.0-openjdk.x86_64
さらにさらに「java-1.7.0-openjdk.x86_64」もシンボリックリンクになっており、
実体は下記パスを参照している。/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71.x86_64
こんな回りくどいことになっているのは
Javaは1つのOSに複数バージョン混在できる可能性があるため。「alternatives」コマンドで利用したいJavaバージョンを変更できるようになっており、
いちいちJAVA_HOMEの変更、アンインストール、インストールをせずに
シンボリックリンクの参照だけを変更してくれているようです。
【WordPress】SyntaxHighlighterでクリップボードへコピー画像が表示されない
WordPressのプラグインでSyntaxHighlighterの2.0を利用していますが、
ツールバーにでクリップボードへコピー画像が表示されず、コピーができない。
画像は下記パスに配置されています。
/var/www/html/任意ディレクトリ名/wp-content/plugins/syntaxhighlighter/syntaxhighlighter2/scripts/clipboard.swf
確認するとサイズ0です。
プラグインを入れなおしても変わらないので、ファイルが壊れているようです。
下記公式サイトからSysntaxHighlighter2.0をダウンロードし、壊れていないファイルを手に入れ再配置。
http://alexgorbatchev.com/SyntaxHighlighter/
IEのキャッシュをクリアして再接続すれば画像が表示されます。
【CentOS】iptables設定
-
iptablesのテーブル概念
iptablesは下記3つのテーブルを持つ。filter:パケットフィルタリング nat:IPアドレスの変換 mangle:IPヘッダの書き換え
filterはssh、http、https等のポートを通したり。
natはRaspberry PiのOpenVPNでも設定しましたが、
「10.8.0.0」を「192.168.XXX.XXX」に変換したり。
mangleは利用したことありませんので、説明省略。
-
iptableの設定確認
各々の設定内容は下記コマンドで確認する。1
iptables -t テーブル -L
「-t テーブル」を省略すると自動的に「-t filter」と同義になる。
または下記コマンドで確認する。
対象テーブルはfilterのみとなる。1
/etc/init.d/iptables status
-
iptableの起動
1
/etc/init.d/iptables start
または
1
service iptables start
-
iptableの停止
1
/etc/init.d/iptables stop
または
1
service iptables stop
-
iptablesの設定追加
現状のままだと外からWordPressにアクセスできないため、
ルーターのポート80、443をNUCのIPに向け、
さらにiptablesのfilterテーブルに設定を追加します。1
iptables -I INPUT 5 -p tcp -m tcp --dport 80 -j ACCEPT
2
iptables -I INPUT 6 -p tcp -m tcp --dport 443 -j ACCEPT
3
service iptables save
-I:チェインの任意の行番号に挿入 -p:プロトコルを指定(icmp、 tcp、udp、all) -m:マッチング条件拡張(今回の例でいうと「tcp --dport」でパケットの送信先ポートを指定) -j:マッチングした際のターゲット(ACCEPT、 DROP、QUEUE、RETURN、LOG、REJECT等)
チェインはテーブルごとに利用できる範囲があります。
filter:FORWARD、INPUT、OUTPUT nat:PREROUTING、POSTROUTING、OUTPUT
5行目と6行目に設定を追加した理由は、今回の設定を追加前の最終行目(5行目)に
全ての通信を拒否する設定があるからです。
iptablesは上から順に設定内容を評価するため、
全ての通信を拒否する設定より前に許可したいポートの設定をしておく必要があります。
【NTPサーバ】NTPd導入
-
既にインストール済か確認
1
yum list installed |
grep
ntp
fontpackages-filesystem.noarch ntp.x86_64 4.2.6p5-1.el6.centos ntpdate.x86_64 4.2.6p5-1.el6.centos
-
NTPd設定
1
cp
-pi /etc/ntp.conf /etc/ntp.conf.org
2
vi
/etc/ntp.conf
下記内容を「#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap」のすぐ下に追加 restrict 192.168.XXX.0 mask 255.255.255.0 nomodify notrap 下記内容をコメントアウト #server 0.centos.pool.ntp.org iburst #server 1.centos.pool.ntp.org iburst #server 2.centos.pool.ntp.org iburst #server 3.centos.pool.ntp.org iburst 下記内容を追加 server ntp1.jst.mfeed.ad.jp server ntp2.jst.mfeed.ad.jp server ntp3.jst.mfeed.ad.jp
-
手動で時刻設定(初回のみ)
1
ntpdate ntp.nict.jp
-
NTPd自動起動
1
/etc/rc.d/init.d/ntpd start
2
chkconfig ntpd on
3
chkconfig --list ntpd
ランレベルが2~5でonを確認する。