【Tomcat】Basic認証

Basic認証とは

Basic認証とは、WEB上で利用できる認証システム。
IDとパスワードは64種類の英数字(A-Z、a-z、0-9)のみを使用する。
改ざんが容易であるため特定の人だけにアクセスを許可するときなどに使用されることが多い。
Basic認証は、一度認証を行うとブラウザを閉じるまで有効となる。

設定方法

1.tomcat-users.xmlにログインID、パスワードを設定する

rolename、usarname、passwordは任意の値
※rolenameとrolesは合わせること
C:\Program Files\Apache Software Foundation\Tomcat 9.0\conf

<role rolename="basic"/>
<user username="basicuser" password="basicpassword" roles="basic"/>
2.web.xmlBasic認証の設定を記述する

role-nameはtomcat-users.xmlで設定したrolenameを指定する

<web-app>
    ~~~
    <security-constraint>
        <web-resource-collection>
            <web-resource-name>User Basic Auth</web-resource-name>
            <url-pattern>/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>basic</role-name>
        </auth-constraint>
    </security-constraint>

    <login-config>
        <auth-method>BASIC</auth-method>
        <realm-name>User Basic Auth</realm-name>
    </login-config>

    <security-role>
        <role-name>basic</role-name>
    </security-role>

</web-app>
3.Tomcatを起動/再起動する

使用方法

tomcat-users.xmlで設定したユーザーIDとパスワードを入力する

【Linux】cron

cronとは

Linuxに標準で備わっているプログラムの一種で、設定すると処理を自動で定期的に実行することができる。
cronを実行するにはcrontabを使用する必要がある。

crontabとは

「何月何日何曜日何時何分に、どういう処理を行う」という指示が記載されたファイルのこと。

crontabのコマンド

・crontabファイルはユーザーごとに存在する。
・ファイルを直接編集するのではなく、crontabコマンドをつかって編集する。

# crontabファイルを編集する
crontab -e

# crontabファイルの内容を表示する
crontab -l

# crontabファイルを削除する
crontab -r

# 指定したユーザーのcrontabを設定する(rootユーザーのみ実行可能)
crontab -l ユーザー名

※初回にcrontabを編集した場合にエディタを選択させられるため、2(vim)を選択しておく

crontabの記載方法

1番目 0-59 ”*”を指定すると毎分
2番目 0-23 ”*”を指定すると毎時
3番目 1-31 ”*”を指定すると毎日
4番目 1-12 ”*”を指定すると毎月
5番目 曜日 0-6 ”*”を指定すると毎日(0は日曜日)

分 時 日 月 曜日 コマンド

# 毎分実行
* * * * * /home/ubuntu/sample.sh

# 月曜日の9:00に実行
0 9 * * 1 /home/ubuntu/sample.sh

# 9:00と12:00に実行
0 9,12 * * * /home/ubuntu/sample.sh

# 火曜と金曜日の9:00に実行
0 9 * * 2,5 /home/ubuntu/sample.sh

# 5分おきに実行
*/5 * * * * /home/ubuntu/sample.sh

crontabのファイルの場所

ルートユーザで他ユーザーのファイルを確認可能
/var/spool/cron/

【Apache】httpd.conf

ファイルの場所

C:\Apache24\conf

仕組み

ServerRoot

Apache がインストールされているディレクトリを設定

Define SRVROOT "c:/Apache24"
ServerRoot "${SRVROOT}"

ServerName

Apache が自分自分自身のホスト名とポート番号を表示するときに使用するホスト名とポート番号を設定
ServerName が指定されていない場合は Web サーバの IP アドレスを逆引きしてホスト名を取得する(hostsファイルやDNS

Web サーバのホスト名が www.example.com でポート番号が 80 番の場合の例

ServerName www.example.com:80

ServerAdmin

Apache がエラー表示を行う場合などに問い合わせ先となる連絡先メールアドレスまたは参照先 URL を設定

ServerAdmin contact@example.com

Listen

Apache がどのポート番号や IP アドレスのリクエストを受け付けるかを設定
複数のポート番号を受け付ける場合は Listen ディレクティブを複数記述

#指定したポートのみのリクエストを受け付ける
Listen 80

#指定したIPのみのリクエストを受け付ける
Listen 192.168.128.1:80

DocumentRoot

Apache が Web サーバとして外部に公開するコンテンツを配置するディレクトリを設定
例.DocumentRootのディレクトリにsample.htmlを配置した場合
http://www.example.com/index.htmlで開くことができる

DocumentRoot "c:/Apache24/htdocs"

Directory

ディレクトリに対してオプション設定を行う。基本的にDocumentRootと合わせて設定する

<Directory "c:/Apache24/htdocs">
 ~設定情報を記載する~
</Directory>
Require

ディレクトリのアクセス制御を設定
2.4系以外はアクセス許可の設定の書き方が違う

<Directory "c:/Apache24/htdocs">
    #すべてのアクセスを許可
    Require all granted

    #すべてのアクセスを拒否
    Require all denied

    #ローカルホストからのアクセスを許可
    Require local

    #指定のIPアドレスのみ許可
    Require ip 192.168.0.1
    #IPアドレスの一部でも可能
    Require ip 192.168.0

    #指定のIPアドレスを拒否
    Require not ip 192.168.0.1

    #指定のホスト名のみ許可
    Require host example.jp
    〇 example.jp
    〇 host.example.jp
    ✕ hostexample.jp
    ✕ javadrive.jp

    #指定のホスト名を拒否
    Require not host  example.jp
</Directory>
Options

Optionsに記載した設定した機能だけが有効になる

<Directory "c:/Apache24/htdocs">
    #一行で記載する
    Options オプション1 オプション2 ...

    #すべての機能を有効にする
    Options All

    #すべての機能を無効にする
    Options None

    #DirectoryIndex ディレクティブで指定したファイルが存在しない場合、一覧を表示
    Options Indexes

    #対象のディレクトリ内でシンボリックリンク(ショートカットみたいなもの)の実行を許可する
    Options FollowSymLinks

    #シンボリックリンクの所有ユーザ ID と同じ場合にのみシンボリックリンクの実行を許可する
    Options SymLinksIfOwnerMatch

    #対象のディレクトリ内で CGI のプログラムを実行を許可する
    Options ExecCGI

    #対象のディレクトリ内でSSIが有効になる
    Options Includes

</Directory>

設定が重複する場合、機能を追加する場合は「+」、削除する場合は「-」を使用する。

<Directory d:/pg/Apache/Apache24/htdocs>
  Options Includes ExecCGI
</Directory>

<Directory d:/pg/Apache/Apache24/htdocs/blog>
  Options +FollowSymLinks -ExecCGI
</Directory>
AllowOverride

.htaccess で設定を変更できるかどうかの設定

<Directory "c:/Apache24/htdocs">
    #設定変更を許可
    AllowOverride All

    #.htaccessの利用を許可しない
    AllowOverride None

    #特定のディレクティブの種類の設定を許可
    AllowOverride AuthConfig Options
</Directory>

ディレクティブの種類

[All]
Files
FilesMatch

[Indexes]
DirectoryIndex
DirectorySlash

[Options]
Options

[FileInfo]
Redirect
AddType
SetEnvIf
ErrorDocument
RewriteEngine
RewriteRule
RewriteCond
RewriteOptions

[AuthConfig]
Require
AuthType
AuthName
AuthBasicProvider
AuthUserFile
AuthGroupFile
AuthDigestDomain
AuthDigestProvider

[Limit]
Order
Allow
Deny

DirectoryIndex

例.http://www.example.com/にアクセスするとDirectoryIndexで指定したファイルを開く
対象のフォルダはDirectoryで指定したフォルダ
※使用しないほうが良い

#これが有効になっている(コメントアウトされていない)必要あり
LoadModule dir_module modules/mod_dir.so

<IfModule dir_module>
    #この場合、http://www.example.com/でhttp://www.example.com/index.htmlを開く
    DirectoryIndex index.html
</IfModule>

指定したファイルが存在しない場合かつ、Options Indexesを指定していると一覧を表示
※Options Indexesの一覧の表示イメージ

Alias

DocumentRoot以外のディレクトリを参照可能にする。
DocumentRootは一つしか設定できないため他に参照したいディレクトリがある場合に使用する。

#下記のモジュールを使うためコメントアウトになっていないことを確認する
LoadModule alias_module modules/mod_alias.so

<IfModule alias_module>
    #Alias URLパス ファイルパス
    Alias /test c:/testDir

    <Directory c:/testDir>
      Require all granted
    </Directory>
</IfModule>

リクエスト:
http://localhost/test/index.html
返すファイル:
c:\testDir\index.html

Redirect

リクエストに含まれるパスが特定のパスと一致した場合、指定した URL へリダイレクトする

#下記のモジュールを使うためコメントアウトになっていないことを確認する
LoadModule alias_module modules/mod_alias.so

<IfModule alias_module>
    #先頭から /data と一致した場合に http://www.example.com/dataへリダイレクト
    Redirect /data http://www.example.com/newdata
    #リダイレクト先が同じサーバ内の場合は、ルートディレクトリからの絶対パスで指定可能
    Redirect /data /newdata
</IfModule>

Redirect /data /newdataの場合
リクエスト:
http://(元のホスト名)/data/index.html
リダイレクト先:
http://(元のホスト名)/newdata/index.html

Define

変数を定義する

#定義方法
Define SRVROOT "c:/Apache24"

#使用方法
ServerRoot "${SRVROOT}"

SetEnvIf

リクエストに含まれる情報に基づいて環境変数を設定する
属性値は正規表現を使った値を指定する
環境変数は空白区切りで複数設定することが可能

Remote_Host クライアントのホスト名
Remote_Addr クライアントのIPアドレス
Server_Addr サーバのIPアドレス
Request_Method HTTP リクエストメソッド(GET、POSTなど)
Request_Protocol プロトコル名(HTTP/1.1 など)
Request_URI リクエストのURI
SetEnvIf 属性 属性値 [!]環境変数[=値]
# IP アドレスが192.168.2 で始まるアドレスだった場合は環境変数 client を定義
SetEnvIf Remote_Addr "192\.168\.2\." client
# IP アドレスが192.168.2.100 だった場合だけ環境変数 client の定義を解除
SetEnvIf Remote_Addr "192\.168\.2\.100" !client

# リクエスト URI の末尾が .png または .jpeg だった場合に環境変数を定義
SetEnvIf Request_URI "\.(png|jpeg)$" image_file

# リファラーに www.example.com が含まれている場合に環境変数を定義
SetEnvIf Referer "www\.example\.com" my_site

# ユーザーエージェントに iPhone や iPad または Android が含まれている場合に環境変数を定義
SetEnvIf User-Agent "(iPhone|iPad)" ua=apple
SetEnvIf User-Agent "Android" ua=google

【WSL2】WindowsでLinuxを使用できるようにする

WSLとは

WSLは、Windows上でLinuxを動作させる環境

前提

Windows11で実施

インストール(Ubuntu

1.管理者権限でコマンドプロンプトを起動する
2.下記コマンドを実行する

wsl --install

3.インストール完了後に再起動する

4.Ubuntuのアプリがインストールされているので開く
5.新規ユーザーを登録するために、ユーザー名とパスワードを入力する

Linuxのファイルにアクセスする

エクスプローラーのLinuxからアクセス可能

Linuxからファイルを確認

Ubuntuが起動できない場合

※上記手順は下記を実行後、無効化して実行している
1.「プログラムと機能」から「Windowsの機能の有効かまたは無効化」を実行する
コントロールパネル>プログラム>プログラムと機能

2.「LinuxWindowsサブシステム」を選択し、OKボタンを押す

3.インストールされるので再起動する

文字コード・改行コード

基本の文字コード・改行コード

Windows環境 Linux環境
文字コード Shift_JIS UTF-8
改行コード CRLF(¥r¥n) LF(¥n)

Linux

OSの文字コードの確認方法

下記コマンドを実行する。

localectl


ファイルの文字コード確認方法
$ nkf -g testfile.txt
Shift_JIS
ファイルの改行コードの確認方法
$ file testfile.txt
testfile.txt: Non-ISO extended-ASCII text, with CRLF line terminators

Windows

OSの文字コードの確認方法

コマンドプロンプトで下記コマンドを実行する
結果が932の場合は「shift_jis」、65001の場合は「 utf-8

chcp


ファイルの文字コード、改行コードの確認方法

テキストエディタでファイルで開く
※メモ帳の文字コードのデフォルトがUTF-8になっている

【SVN】ソースマージ(branch⇒trunk)

流れ

①A案件のbranchにtrunkのB案件の内容をマージする(trunk⇒branch)

※他案件が先にtrunkにマージされている場合のみ実施する

1.マージ元のbranchをローカルにチェックアウトする
2.「マージ対象のプロジェクト」上で右クリックし、「チーム」⇒「マージ」を選択
3.URLの「参照」ボタンから「trunk」を選択する
4.「リビジョン」を選択し、「参照」ボタンを押す
5.B案件でマージしたリビジョンを選択する
6.自動で開く「同期化」画面から、差異を確認して問題なければ「受領」を実行する
7.コミットする

②B案件をマージしたbranchをtrunkにマージする(branch⇒trunk)


1.trunkをローカルにチェックアウトする
2.「マージ対象のプロジェクト」上で右クリックし、「置換」⇒「ブランチ」を選択
3.Aのbranchを選択する(ローカルのコンテンツをリモートの内容に置き換えますで「はい」を選択)
4.「マージ対象のプロジェクト」上で右クリックし、「チーム」⇒「リポジトリーと同期化」を選択
5.差異を確認する
6.コミットする

【Apache】Tomcat連携

Tomcatと連携するための拡張モジュールの読み込み設定を追加
Tomcatを連携するためには、「proxy_ajp_module」というモジュールが必要。
このモジュール自体が「proxy_module」のモジュールが必要になるので、どちらも読み込みするように設定変更が必要。
C:\Apache24\conf\httpd.conf

Tomcatへ連携するURLパスを設定
Apacheに来たブラウザなどによるリクエストでどのURLをTomcatに転送するかを設定
C:\Apache24\conf\httpd.conf

TomcatAJPプロトコルでリクエストを受け付けれるようにする
AJP (Apache JServ Protocol) とは、Apache httpd が受け付けたリクエストを Tomcat に連携するプロトコル
C:\Program Files\Apache Software Foundation\Tomcat 9.0\conf\server.xml

④動作確認
ApacheTomcatを実行して下記URLを開く
http://localhost/apdemo/