【APサーバ】warファイル配置

  • Tomcat設定ファイルの内容確認

    /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/コンテキスト名/」である場合、
    ポート番号を指定せずに接続するための設定を追加します。

    vi /etc/httpd/conf/httpd.conf
    
    下記を最終行に追加
    <Location /コンテキスト名/>
            ProxyPass ajp://localhost:8009/コンテキスト名/
            allow from all
    </Location>
    

【APサーバ】Apache2とTomcat連携

ポート番号を指定せずにTomcatにアクセスします。

  • Tomcat側の設定

    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側の設定

    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の連携動作確認

    /etc/rc.d/init.d/httpd stop
    sudo -u tomcat /usr/local/tomcat/bin/shutdown.sh
    sudo -u tomcat /usr/local/tomcat/bin/startup.sh
    /etc/rc.d/init.d/httpd start
    /etc/rc.d/init.d/iptables start
    

    http://z-area.net/examples/servlets/

    ポート指定なしで繋がるようになるため、iptablesは有効のままにしておきます。

【APサーバ】Tomcat導入

  • Tomcat専用ユーザ作成

    useradd -s /sbin/nologin tomcat
    

    /sbin/nologinシェルを指定し、通常利用不可とする。

  • Tomcat導入

    バージョンは「apache-tomcat-7.0.50.tar.gz」にしました。
    サーバーに配置しておきます。

    tar xvzf apache-tomcat-7.0.50.tar.gz
    mv apache-tomcat-7.0.50 /usr/local
    cd /usr/local
    chown -R tomcat.tomcat apache-tomcat-7.0.50
    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ファイル等を設定する。
    
    vi /etc/profile
    

    今回は共通設定に追加します。

    下記を最終行に追加
    export JAVA_HOME=/usr/lib/jvm/java
    export CATALINA_HOME=/usr/local/tomcat
    

    環境変数を適用しておきます。

    source /etc/profile
    
  • Tomcat起動確認

    /etc/rc.d/init.d/iptables stop
    sudo -u tomcat /usr/local/tomcat/bin/startup.sh
    

    http://z-area.net:8080/examples/servlets/

    「Servlet Examples with Code」の画面が出れば成功です。
    併せてrootユーザではなくtomcatユーザで動作していることを確認します。

    ps -ef | grep tomcat
    
    tomcat    プロセスID  親プロセスID プロセッサ使用率 プロセスの起動時刻  制御端末 累積時間 略
    

    startup.shはrootユーザで実行しないこと。
    初回でrootユーザで実行するとログファイルがrootユーザで作成されてしまい、
    tomcat専用ユーザでstartup.shを実行しても権限がないと言われてしまうので、
    そうなった場合、1度ログを削除すれば問題なし。

    起動確認ができたのでTomcat停止し、iptablesを有効にしておきます。

    sudo -u tomcat /usr/local/tomcat/bin/shutdown.sh
    /etc/rc.d/init.d/iptables start
    

【APサーバ】Java導入

  • Java導入

    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を導入します。

    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導入確認

    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の設定確認
    各々の設定内容は下記コマンドで確認する。

    iptables -t テーブル -L
    

    「-t テーブル」を省略すると自動的に「-t filter」と同義になる。

    または下記コマンドで確認する。
    対象テーブルはfilterのみとなる。

    /etc/init.d/iptables status
    
  • iptableの起動

    /etc/init.d/iptables start
    

    または

    service iptables start
    
  • iptableの停止

    /etc/init.d/iptables stop
    

    または

    service iptables stop
    
  • iptablesの設定追加
    現状のままだと外からWordPressにアクセスできないため、
    ルーターのポート80、443をNUCのIPに向け、
    さらにiptablesのfilterテーブルに設定を追加します。

    iptables -I INPUT 5 -p tcp -m tcp --dport 80 -j ACCEPT
    iptables -I INPUT 6 -p tcp -m tcp --dport 443 -j ACCEPT
    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導入

  • 既にインストール済か確認

    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設定

    cp -pi /etc/ntp.conf /etc/ntp.conf.org
    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
    
  • 手動で時刻設定(初回のみ)

    ntpdate ntp.nict.jp
    
  • NTPd自動起動

    /etc/rc.d/init.d/ntpd start
    chkconfig ntpd on
    chkconfig --list ntpd
    

    ランレベルが2~5でonを確認する。

【WordPress】WordPress移行

  • WordPress移行
    Raspberry PiのWordPressをNUCのWordPressに移行します。
    移行元の管理画面から「ツール」-「エクスポート」を選択し、xmlファイルでエクスポートしておきます。

    移行先の管理画面から「ツール」-「インポート」を選択すると
    インポート元のシステムを選択する画面になるので、「WordPress」を選択します。
    「WordPress Importer」というプラグインをインストールし、
    先ほどエクスポートしておいたxmlファイルを指定して移行完了です。

    ・・・となるはずが、画面が変わらず反応がありません。

  • 試したこと1
    ダッシュボードの設定をある程度同じにしておかないとエラーになるのかと思い、
    設定変更後に挑戦しましたが、変わらず。

  • 試したこと2
    xmlファイルを読めていないのかと思い、phpのプラグインをインストール。

    yum -y install php-xml
    

    だめでした。

  • 試したこと3
    本家のBBSに下記のような記事がありました。
    https://wordpress.org/support/topic/wordpress-importer-04-not-importing

    Jon Caveさんの解決方法を試してみました。

    cd /var/www/html/任意ディレクトリ名/wp-content/plugins/wordpress-importer
    cp -pi parsers.php parsers.php.org
    vi parsers.php
    
    下記内容に変更
    if ( extension_loaded( 'simplexml' ) ) {
    ↓
    if ( false && extension_loaded( 'simplexml' ) ) {
    

    修正したif文の上でparseメソッドを呼び出しており、
    戻り値がfalseになってしまうので、falseが返ってきても
    強制的に処理を進めてしまうよう変更しています。

    かなり強引ですが、この解決方法で無事インポートできました。
    プラグインの設定を行い、ドキュメントルートからのパスは一緒なので、画像は再配置のみで
    NUCへの移行が完了しました。
    管理画面はNUCの方が性能が良いからなのか体感で早く感じます。

【WordPress】WordPress導入

  • WordPress導入

    mysql -u root -pデータベースパスワード
    
    create database データベース名;
    grant all privileges on データベース名.* to データベースユーザ名@localhost identified by "データベースパスワード";
    exit
    
    cd /var/www/html
    wget http://ja.wordpress.org/latest-ja.zip
    unzip latest-ja.zip
    mv wordpress/ 任意ディレクトリ名
    chown -R apache.apache 任意ディレクトリ名/
    cd 任意ディレクトリ名
    cp -pi wp-config-sample.php wp-config.php
    vi wp-config.php
    
    # 下記内容を変更
    define('DB_NAME', 'database_name_here');
    ↓
    define('DB_NAME', 'データベース名');
    
    define('DB_USER', 'username_here');
    ↓
    define('DB_USER', 'データベースユーザ名');
    
    define('DB_PASSWORD', 'password_here');
    ↓
    define('DB_PASSWORD', 'データベースパス');
    
    # 下記内容を「編集が必要なのはここまで(略)」より上に追加
    /* リビジョン無効 */
    define('WP_POST_REVISIONS', false);
    
    /* ログイン・管理画面SSL強制 */
    define('FORCE_SSL_LOGIN', true);
    define('FORCE_SSL_ADMIN', true);
    
    cd ../
    rm -f latest-ja.zip
    /etc/rc.d/init.d/iptables stop
    

    http://z-area.net/任意ディレクトリ名/wp-admin/install.php

    手順にそってインストールを行います。
    インストール後にログイン画面に飛ぶと自動でSSLに遷移もします。

【PHP】php5導入

php5インストール

yum -y install php php-mbstring php-mysql

拡張モジュールはmbstringとmysqlの2つ。

php5設定

vi /etc/httpd/conf/httpd.conf
下記内容を変更
DirectoryIndex index.html index.html.var
↓
DirectoryIndex index.html index.htm index.cgi index.php

下記内容を追加(「AddType application/x-gzip .gz .tgz」の下)
AddType application/x-httpd-php .php
vi /etc/php.ini
short_open_tag = Off
↓
short_open_tag = On

expose_php = On
↓
expose_php = Off

max_execution_time = 30
↓
max_execution_time = 300

;default_charset = "iso-8859-1"
↓
default_charset = "UTF-8"

post_max_size = 8M
↓
post_max_size = 20M

upload_max_filesize = 2M
↓
upload_max_filesize = 20M

;date.timezone =
↓
date.timezone = Asia/Tokyo

;mbstring.language = Japanese
↓
mbstring.language = Japanese

;mbstring.internal_encoding = EUC-JP
↓
mbstring.internal_encoding = UTF-8

;mbstring.http_input = auto
↓
mbstring.http_input = UTF-8

;mbstring.http_output = SJIS
↓
mbstring.http_output = pass

;mbstring.encoding_translation = Off
↓
mbstring.encoding_translation = On

;mbstring.detect_order = auto
↓
mbstring.detect_order = auto

;mbstring.substitute_character = none;
↓
mbstring.substitute_character = none;
/etc/rc.d/init.d/httpd restart
  • php5の動作確認

    echo "<?php phpinfo(); ?>" > /var/www/html/info.php
    /etc/rc.d/init.d/iptables stop
    

    http://192.168.11.30/info.php

    php5の情報が表示されれば正常です。

    /etc/rc.d/init.d/iptables start
    rm -f /var/www/html/info.php