apache httpd
当方ではこちらを使う機会が多い。ただ一画面に複数のイメージ画像を表示させるのならnginxが有利と聞く。
ここでは構造式表示をタイル形式で表示するばあであろうと思われるRDKit/Cartridge/web
ここではメモ的なことを列挙する
一台のマシンで複数のwebサイトを用意するには?httpdの定義で作成可能。今ではdockerを使うのもありなのでしょうか
VirtualHostディレクティブを使用して複数のサイトを作る。
名前ベースです。なのでDNSでcnameらでサイトを作るが、指し示すIPは同じ。
弊サイトはddnsで1つのIPを頂いてweb.chapreon.jpを名前として登録している。例えばこれにcnameとして
を作り、すべてweb.chapreon.jpに繋がるようにするとする。
そしてhttpd.confにおいて
:
<VirtualHost *:80>
ServerName web.chaperone.jp
DocumentRoot "/var/www/html"
</VirtualHost>
<VirtualHost *:80>
ServerName alpha.chaperone.jp
DocumentRoot /var/www/alpha
</VirtualHost>
<VirtualHost *:80>
ServerName beta.chaperone.jp
DocumentRoot /var/www/beta
</VirtualHost>
<VirtualHost *:80>
ServerName gamma.chaperone.jp
DocumentRoot /var/www/gamma
</VirtualHost>
:
とすれば、それぞれのリクエストのあったサイトごとにコンテンツ(/var/www/{html,alpha,beta,gamma})が応答するようになる
内部のwebコンテンツを表示させたい場合
大抵はルーターなどで外部から直接内部へは繋げられない。そこで中継役proxyを立てて内部コンテンツを外部に流す。
ここでは、内部の 2nd.sybyl.local/abc/ コンテンツを外部で web.chaperone.jp/abc/ として提示する例を示す
web.chaperone.jpで
[root@c ~]# vi /etc/httpd/conf/httpd.conf
:
ProxyPass /abc http://2nd.sybyl.local/abc/
ProxyPassReverse /abc http://2nd.sybyl.local/abc/
[root@c ~]#
とする
下記はweb.chaperone.jpとalpha.chaperone.jp(Proxy経由で内部のalpha.sybyl.local)をhttpsで公開する設定の例
SSLCertificateFile /etc/letsencrypt/live/web.chaperone.jp/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/web.chaperone.jp/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/web.chaperone.jp/chain.pem
<VirtualHost *:443>
ServerName web.chaperone.jp:443
DocumentRoot "/var/www/html"
</VirtualHost>
<VirtualHost *:443>
ServerName alpha.chaperone.jp:443
SSLProxyEngine on
ProxyPass / http://alpha.sybyl.local/
ProxyPassReverse / http://alpha.sybyl.local/
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
</VirtualHost>
既存のアクセスログの日付部分が
[16/Apr/2017:03:33:04 +0900]
と表記される。っが、読みにくい、加え加工し辛いのでLogFormatを使ってもう一つログファイルを作ってみた
既存のログファイル(access_log)は、fail2ban向けに使用させるのでそのまま
[root@c ~]# vi /etc/httpd/conf/httpd.conf
:
LogFormat "%a %{%Y-%m-%d %H:%M:%S}t \"%r\" %>s %b" common
CustomLog "logs/common_log" common
:
[root@c ~]#
httpdの再起動後に有効となり、
192.168.0.10 2017-04-17 14:33:37 "GET /w/index.php?chaperone HTTP/1.1" 200 99814
なログを書き出すようになる。
CentOS7では既定でapacheデーモンが/tmpにファイルを置く事ができないみたい
有効にするには PrivateTmp フラグを修正sる
[root@c ~]# vi /lib/systemd/system/httpd.service
:
-PrivateTmp=true
+PrivateTmp=false
:
[root@c ~]#
[root@c ~]# systemctl daemon-reload
[root@c ~]# systemctl restart httpd
PrivateTmpを無効にする
留意
yum updateで更新すると、この書き換えた部分が元に戻ってしまうときがあるみたい。
その場合は、一旦現行のhttpdを停止して、無効にしてから
オリジナルの httpd.service を/etc/systemd/system/にコピーして修正と読み込み(systemctl daemon-reload)を行う。
以降は、有効にして、起動させる。
[root@c ~]# systemctl stop httpd.service
[root@c ~]# systemctl disable httpd.service
Removed symlink /etc/systemd/system/multi-user.target.wants/httpd.service.
[root@c ~]# cp /lib/systemd/system/httpd.service /etc/systemd/system/
[root@c ~]# vi /etc/systemd/system/httpd.service
[root@c ~]# systemctl daemon-reload
[root@c ~]# systemctl list-unit-files httpd.service
UNIT FILE STATE
httpd.service disabled
1 unit files listed.
[root@c ~]# systemctl enable httpd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /etc/systemd/system/httpd.service.
[root@c ~]# systemctl start httpd.service