2013年8月12日月曜日

RaspberryPiでのapache2


暫く他のことをしていたため更新が滞ってしまいました。

外部サーバーにapacheをたててRaspberryPiから外部サーバーに接続してコントロールする構成にしていましたが、たまにコマンドが詰まってしまって外部サーバーのdaemonを再起動しないと動作しなくなってしまう現象が起きていたので接続方法を変えることにしました。

今回は、RaspberryPiにapacheを立てて、ここからha1control daemonをcgi経由で叩くようにしました。
外部との接続は別途作ることにして取り敢えずはLAN内でうまく動作するようにしていきます。

まずはRaspberryPiにapache2とphpをinstallします。phpは将来の拡張用です。

# sudo apt-get install apache2
# sudo apt-get install libapache2-mod-php5
# a2enmod rewrite

/etc/apache2/ports.confを編集してapache2のLAN内でのアクセス方法を設定します。

ServerName hogehoge.jp
NameVirtualHost *:47911
Listen 47911
<IfModule mod_ssl.c>
    Listen 47910
</IfModule>

あとで外部サーバーを立てるときのためにWANとLANで同じアクセスで出来るようにhttps経由にします。
ただRaspberryPiにはSiri-proxyのportもhttpsの443で開けているのでapache2側のhttpsのポートを他のところに移動します。どこでも構わないのですが今回は47910を使いました。
LAN内でのアクセス件debug用に47911にhttpのportも開けておきます。ここを開ける場合はLANのWiFiのSecurityをきちんと設定しないと危険です。

/etc/apaches/site-available/defaultの編集
<VirtualHost *:47911>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Includes ExecCGI FollowSymLinks
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                Options ExecCGI SymLinksIfOwnerMatch
                AllowOverride None
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        LogLevel warn
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>


/etc/apaches/site-available/default-sslの編集
<IfModule mod_ssl.c>
    <VirtualHost *:47910>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www>
                Options Includes ExecCGI FollowSymLinks
                AllowOverride None
                Order allow,deny
                allow from all
                AuthUserFile /etc/apache2/htpasswd
                AuthName "HA-1 Control authentication"
                AuthType Basic
                require valid-user
                SSLOptions +FakeBasicAuth +StdEnvVars
                SSLRequireSSL
        </Directory>
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                Options ExecCGI SymLinksIfOwnerMatch
                AllowOverride None
                Order allow,deny
                Allow from all
                SSLOptions +StdEnvVars
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        LogLevel warn
        CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined

        SSLEngine on
        SSLCertificateFile    /etc/apache2/ssl/private_ha1server.crt
        SSLCertificateKeyFile /etc/apache2/ssl/private_ha1server.key
        SSLCACertificateFile /etc/apache2/ssl/ha1server_cert.pem
        SSLVerifyClient require
        SSLVerifyDepth  1

        <FilesMatch "\.(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
        </FilesMatch>

   </VirtualHost>
</IfModule>

sslの設定を有効にします。
# a2ensite default-ssl
# service apache2 reload

RaspberryPiのIPアドレスが192.168.0.100だとすると、PCのbrowserで http://192.168.0.100:47911/ を開いた時に'It works!'のメッセージが表示されるのを確認します。

ここまで出来れば、とりあえずhttpアクセスのapacheの動作としてはOKです。
ha1control daemonへの接続とhttpsアクセスの設定についてはまた今度。

0 件のコメント:

コメントを投稿