データベースサーバー:MySQL

MySQL

インストール

MySQLインストール
# yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
# yum install mysql mysql-devel mysql-server mysql-utilities

初期化
mysqld –user=mysql –initialize

初期パスワード確認
grep password /var/log/mysqld.log

MySQL初期設定
# mysql_secure_installation
パスワードを設定します。

MySQL自動起動設定
# chkconfig –level 3 mysqld on

MySQLバージョン確認
# mysql –version

設定

CakePHP3/非集約カラムをSELECTできる様にする
※my.cnf
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

操作

MySQLログイン
mysql -u root -p
管理者:rootでログイン

既存データベース一覧表示
show databases;

データベース作成
create database (データベース名);

MySQLログアウト
exit
WEBサーバーへ戻ります。

操作対象データベース指定
use (データベース名)

phpMyAdmin

ブラウザから遠隔操作できるデータベースソフト
CentOSで自宅サーバー構築」参照

インストール
https://www.phpmyadmin.net/downloads/
のファイル一覧からから最新バージョンのURLをコピー

# wget https://files.phpmyadmin.net/phpMyAdmin/4.8.4/phpMyAdmin-4.8.4-all-languages.tar.gz
# tar xzvf phpMyAdmin-4.8.4-all-languages.tar.gz
# mv phpMyAdmin-4.8.4-all-languages /var/www/~/phpMyAdmin

yumでインストールすると古いバージョンがインストールされる(2018/12/16現在)
# yum –enablerepo=epel install -y phpMyAdmin
/etc/phpMyAdmin
/usr/share/phpMyAdmin
が作成される

php-mysqlインストール確認
# rpm -q php-mysql

設定

設定ファイル
/etc/phpMyAdmin/config.inc.php

設定ファイル作成(初回)
# cp config.sample.inc.php config.inc.php
インストール時のデフォルト設定ファイルをコピー

パーミッション変更
# chmod 660 config.inc.php

所有者変更
# chown apache:apache config.inc.php

設定ファイル変更内容
$cfg[‘blowfish_secret’] = ”;

$cfg[‘blowfish_secret’] = ‘(パスワード)’;
追加(日本語化)
$cfg[‘Lang’] = ‘ja-utf-8’;

phpMyAdmin用Apache設定ファイル作成
# vi /etc/httpd/conf.d/phpmyadmin.conf

設定内容
<Location /phpmyadmin>
Order deny,allow
Deny from all
Allow from 127.0.0.1
Allow from 192.168.X
</Location>

暗号化機能拡張
$ yum install php-mcrypt

プロになるためのWeb技術入門

JavaでのWEBアプリを作成するに当たって読みました。
JSP,サーブレットといった技術はまさに理解したかった項目だったので良かったです。
過去、ネットワーク越しに文書を共有したいというニーズがあってHTTPが生まれた。

クライアントの操作によって対象を動作させたいというニーズがあってCGIが生まれた

CGIを高速に大量に動作させる為にServletが生まれた

Servletのモジュールをクライアント側とサーバ側で分離させる為にJSPが生まれた
という様に時系列に沿って各技術を説明してくれています。
結果、アプリケーションサーバ(Tomcat)、JSP、サーブレット
に多くのページを割いていますが、非Javaエンジニアに取っては分かり難くないでしょうか?
大丈夫でしょうか? PHPやRubyエンジニアに取ってもこれらは有用でしょうか?
.Net限定エンジニアに取っては難しいと思います。
ただここを理解すればIISの設定等も格段にやりやすくなるとは思いますが。
WEBの技術がPerl→Javaを経て現在に至る事の証左とも言えるでしょう。

他、以下について説明しています。
サーバ, クライアントモデル
HTTPプロトコル
IPアドレス
URL, URI
GET, POST
CGI
Cookie
Session
Web システム構成
WEB サーバ
DB サーバ
アプリケーションサーバ
Webアプリーション
フレームワーク
Web アーキテクチャ
MVC Pattern
layer Pattern

本サイトの参照記事
[JAVA]

クラウド

SaaSとは

Software as a Service
(サース)
アプリケーション(ソフトウエア)をサービスとして提供する
クライアント端末から操作し、
データもクラウド上に保存するサービス
ユーザーは提供されたサービスの一部を必要のみ利用する
Google Apps等

PaaSとは

Platform as a Service
(パース)
アプリケーション開発から稼働までの基盤(プラットフォーム)をサービスとして提供する
ユーザーは望む開発環境に応じたOS、データベース、WEBサーバー等を選択して利用する。
レンタルサーバーと違い、利用量の増加に伴いスケールアップ/スケールアウトが可能
Google App Engine、Azure等

PaaS例
Google App Engine
Java、Python、GOをインターネット上で開発・公開できるサービス
一定数のアクセスまで無料。以降は有料。
Heroku
Ruby on Rails、Java、Node.jsをインターネット上で開発・公開できるサービス
利用時間、データベース容量に応じて課金される
Asure
.Net言語、Java、PHP、Python、Ruby、Node.jsをインターネット上で開発・公開できるサービス
データベース容量に応じて課金される

IaaSとは

Infrastructure as a Service
(イァース)
サーバー、CPU、ストレージなどのインフラをサービスとして提供する
CPUやストレージ等の資源は振り分けが可能でユーザーは必要分のみを利用する
OSのインストールまで可能
AWS、VPS等

一覧

 IaaS   Paas   SaaS 
 アプリケーション  × ×
ミドルウェア ×
OS
ハードウェア
ネットワーク

HTTPプロトコル

HTTPプロトコルとは?

WEBサーバーとクライアント(ブラウザ等)が、相互に通信する為の仕組み
クライアントからの閲覧要求(HTTPリクエスト)
WEBサーバーからの応答(HTTPレスポンス)
から成る。
送信時はリクエストメッセージをWEBサーバーに送り、
受信時はレスポンスメッセージをWEBサーバーから受け取る。
ブラウザはレスポンスメッセージ内のHTMLデータを解釈して画面に表示する。

HTTPリクエスト

メッセージヘッダ リクエストライン メソッド
URI
HTTPバージョン
リクエストヘッダ ユーザーエージェント
リファラ
データ形式
クッキー
メッセージボディ ポストデータ

(1)リクエストライン
メソッドURIHTTPバージョン
(2)メッセージヘッダー
日付、クライアントが扱えるデータ種類、言語、圧縮方式、ソフトウェア名称、ソフトウェアバージョン、データの有効期限等、ブラウザによって異なる。
(3)メッセージボディ
POSTメソッドでデータを送る際のパラメーター等

HTTPリクエストライン

「何を」「どうする?」というメッセージを、クライアントからサーバーに送信する。
「何を」= URI
「どうする?」= メソッド(GET/POST等)
URL欄に直接アドレスを記入した場合は自動的に「GET」命令
ボタン押下等のプログラムが実行された場合は、多くの場合「POST」命令が実行される様にプログラムされている。

メソッド

GET
WEBサーバーからデータを取得する
この時、メッセージボディにはデータ無し
パラメータをWEBサーバーに送る場合はURLの末尾に付加される。
(例)https://office-yone.com/~?prm1=100&prm2=AAA

POST
WEBサーバーへデータを渡す
この時、メッセージボディにサーバーに渡すデータが設定される

URI

OSI参照モデル プレゼンテーション/アプリケーション層/URI」参照

HTTPバージョン

HTTP 1.0
HTTP 1.1
HTTP 2.0(予定)

HTTPリクエストヘッダー

ユーザーエージェント

(User-Agent)
ブラウザの種類やOSの情報。
多くの場合ブラウザ

リファラ

Referer
(※英語としてReferrerが正しいが↑を用いる)
リファラ例(1)
ページAのリンクをクリック

ページBへ遷移
ページBへのHTTPリクエスト
リファラ=ページAのURI

リファラ例(2)
ページCを表示(画像有り)

内部で画像のみ再リクエスト
リファラ:ページCのURI

クッキー

Cookie
セッション情報を表すテキストデータ
過去ではIDやパスワード、
現在ではセッションID

データ形式

画像の種類、言語、文字コード

HTTPレスポンス

メッセージヘッダ ステータスライン HTTPバージョン
ステータスコード
レスポンスヘッダ コンテンツタイプ
再利用期限
データの最終更新日時(Last-Modified)やエンティティ情報(ETag)
移動先
メッセージボディ HTML、JSON、CGI・WEBアプリ実行結果

(1)ステータスライン
HTTPバージョンステータスコード、レスポンスフレーズ(ステータスの説明文)
(2)レスポンスヘッダー
リクエストメッセージにおけるメッセージヘッダーと同じ
(3)メッセージボディ
(レスポンスボディ)
HTML文、CGIアプリケーションの出力結果、画像・映像データ等

HTTPステータスコード

分類 番号 メッセージ 説明
情報 100 Continue 処理を継続しています。続きのリクエストを送信してください。
101 Switching Protocols Upgrade ヘッダで指定したプロトコルに変更して再要求してください。
成功 200 OK 成功しました。リクエスト受信成功。レスポンス送信済み
201 Created Location ヘッダで指定した場所に新しいコンテンツが作成されました。
202 Accepted 要求は受理されました。ただし処理は完了していません。
203 Non-Authoritative Information 応答ヘッダはオリジナルサーバーが返したものとは異なりますが、処理は成功です。
204 No Content コンテンツはありませんが、処理は成功しました。
205 Reset Content 要求を受理したので、現在のコンテンツ(画面)を破棄してください。。
206 Partial Content コンテンツを一部のみ返却します。
転送 300 Multiple Choices コンテンツ入手方法について複数の選択肢があります。
301 Moved Permanently Location ヘッダで指定された別の場所に移動しました。
302 Found Location ヘッダで指定された別の場所に見つかりました。そちらを見てください。
(リクエスト先サーバーで移動先を指定している場合)
303 See Other Location ヘッダで指定された他の場所を見てください。
304 Not Modified 更新されていません。If-Modified-Since ヘッダを用いた場合に返却されます。
305 Use Proxy Location ヘッダで指定したプロキシを使用してください。
306 (Unused) 未使用。
307 Temporary Redirect 別の場所に一時的に移動しています。
クライアントエラー 400 Bad Request 要求が不正です。
401 Unauthorized 認証されていません。
ユーザー認証失敗
402 Payment Required 支払いが必要です。
403 Forbidden アクセスが認められていません。
アクセス禁止
404 Not Found 見つかりません。
リクエストされたURIが無い(アクセス権限が無い)
405 Method Not Allowed 指定したメソッドはサポートされていません。
406 Not Acceptable 許可されていません。
407 Proxy Authentication Required プロキシ認証が必要です。
408 Request Timeout リクエストがタイムアウトしました。
409 Conflict リクエストがコンフリクト(衝突・矛盾)しました。
410 Gone 要求されたコンテンツは無くなってしまいました。
411 Length Required Content-Length ヘッダを付加して要求してください。
412 Precondition Failed If-… ヘッダで指定された条件に合致しませんでした。
413 Request Entity Too Large 要求されたエンティティが大きすぎます。
414 Request-URI Too Long 要求された URI が長すぎます。
415 Unsupported Media Type サポートされていないメディアタイプです。
416 Requested Range Not Satisfiable 要求されたレンジが不正です。
417 Expectation Failed Expect ヘッダで指定された拡張要求は失敗しました。
サーバーエラー 500 Internal Server Error サーバーで予期しないエラーが発生しました。
内部エラー
(CGIエラー、.htaccess等設定ファイル記述ミス)
501 Not Implemented 実装されていません。
502 Bad Gateway ゲートウェイが不正です。
503 Service Unavailable サービスは利用可能ではありません。
サービス提供不可(サーバーメンテナンス時、過負荷時等)
504 Gateway Timeout ゲートウェイがタイムアウトしました。
505 HTTP Version Not Supported このHTTPバージョンはサポートされていません。

HTTPレスポンスヘッダー

コンテンツタイプ

(Content-Type)
データがHTMLなのか画像なのかや、文字コードなどの情報。

ファイル形式 拡張子 MIME
テキストファイル .txt text/plain
HTML .htm,.html text/html
CSVファイル .csv text/comma-separated-values
TSVファイル .txt, .tsv text/tab-separated-values
XMLファイル .xml text/xml
Microsoft Wordファイル .doc, .docx application/msword
Microsoft Excelファイル .xls, xlsx application/msexcel
Microsoft PowerPointファイル .ppt, pptx application/mspowerpoint
PDFファイル .pdf application/pdf
ビットマップファイル .bmp image/bmp
GIFファイル .gif image/gif
JPEGファイル .jpg image/jpeg
PNGファイル.png .png image/png
ZIPファイル .zip application/zip
LZHファイル .lzh application/lha
スタイルシートファイル .css text/css
JavaScriptファイル .js text/javascript
VBScriptファイル .vbs text/vbscript
実行ファイル .exe application/octet-stream
再利用期限

(Expires)
取得したデータを再度サーバーに問い合わせなくてもブラウザが再利用して良い期限

データの最終更新日時(Last-Modified)やエンティティ情報(ETag)

いつ更新されたものかの情報
サーバー上のファイルの場所ID
ファイルのサイズ
更新日時などから算出した更新チェック情報。
次回同じデータをリクエストする際に、これらの情報を使って更新されているかどうかを確認

移動先

(Location)
リクエストと違う場所からデータを取得するように示す指示。
リダイレクト先URI

タイムアウト

要求時
(=コネクション)

種類 内容 ステータス
コネクション
タイムアウト
接続時 408
リクエスト
タイムアウト
408
リード
タイムアウト
要求~応答まで
セッション
タイムアウト
同一セッションを維持できる時間
ゲートウェイ
タイムアウト
504

DNSサーバー:BIND9

BIND9とは?

DNSサーバーのデファクトスタンダード。
世の中のDNSサーバーの大半で用いられているらしい。

インストール

BIND9
yum -y install bind

BIND9ユーティリティ
yum -y install bind-utils

ドメイン、サーバー定義ファイル
/etc/named.conf

ドメイン正引きzoneファイル
/var/named/(ドメイン名).org.zone

ドメイン逆引きzoneファイル
/var/named/(ドメイン名).org.rev

DNS

コンテンツサーバ(ゾーンサーバ)

ドメイン名をインターネットに公開する
(自ドメイン名に対する問い合わせに応える)

マスターゾーンサーバ

ドメイン情報(ゾーンデータ)を所有するサーバ
ドメイン情報は通常ローカルファイルを使用

スレーブゾーンサーバ

バックアップ用

キャッシュサーバ

クライアントの問い合わせに応える
ドメイン情報を持たず、過去の問い合わせ履歴をキャッシュとして保存する

FQDN

Fully Qualified Domain Name
完全修飾ドメイン名
インターネット上の特定のコンピュータを特定する文字列
ホスト名+ドメイン名
ホスト名
ネットワーク上のコンピュータを特定する文字列。
ドメイン名
インターネット上のネットワークを特定する文字列

正引き

Forward DNS Lookup
IFQDN→IPアドレス変換
(root)DNSサーバから目的となるホストのIPアドレスを知るネームサーバまで問い合わせを繰り返す。
office-yone.com(ホスト名) → 160.16.109.221(IPアドレス)
への変換

逆引き

Reverse DNS Lookup
IPアドレス→FQDN変換
IPアドレスを逆に並べ、逆引き用の特殊なドメインを付けて問い合わせる。
160.16.109.221(IPアドレス) → office-yone.com(ホスト名)
への変換

リソースタイプ

Type 意味
SOA Start of Authority ドメイン管理情報
NS Name Server ネームサーバー
MX Mail Exchanger メールホスト名
A Address ドメインに登録するアドレス
CNAME Canonical Name ホスト別名
PTR Domain Name Pointer IPからホスト名をマップする
TXT Text コメント

サブドメイン

メインのドメイン(例:office-yone.com)の他に、
サブドメイン(例:sub.office-yone.com)を設定する場合
①ゾーン設定ファイルを編集。サブドメインを追加する。

 エントリ名   タイプ   データ 
@ A XXX.XXX.XXX.XXX
(サーバーアドレス)
MX
CNAME @
www CNAME @
ftp CNAME @
mail A
sub CNAME @

サブドメイン名(例:sub)を追加する

② /etc/httpd/conf/httpd.conf を編集
#<VirtualHost *:80>
# ServerAdmin webmaster@dummy-host.example.com
# DocumentRoot /www/docs/dummy-host.example.com
# ServerName dummy-host.example.com
# ErrorLog logs/dummy-host.example.com-error_log
# CustomLog logs/dummy-host.example.com-access_log common
#</VirtualHost>


NameVirtualHost XXX.XXX.XXX.XXX(サーバーアドレス)
<VirtualHost XXX.XXX.XXX.XXX(サーバーアドレス):80>
 DocumentRoot /var/www/html
 ServerName ドメイン名(例:office-yone.com)
</VirtualHost>
<VirtualHost XXX.XXX.XXX.XXX(サーバーアドレス):80>
 DocumentRoot /var/www/sub
 ServerName サブドメイン名(例:sub.office-yone.com)
</VirtualHost>

WordPress サブドメイン設定方法

サブドメインとは?

サイト内容を区分する為に、元のドメインと分けたURL
例:
元ドメイン office-yone.com
office-yone.com/blog/page1/
サブドメイン sub.office-yone.com
sub.office-yone.com/blog/page1/
サブディレクトリは
office-yone.com/blog1/~
office-yone.com/blog2/~
の様なドメイン下の階層の事。

サーバー設定方法

DNSサーバー:BIND9/サブドメイン」参照

WordPress設定方法

①wp-config.phpを編集(1回目)
例: /var/www/html/wp-config.php
/* 編集が必要なのはここまでです
の前に↓ を追加
define('WP_ALLOW_MULTISITE', true);

②WordPressプラグインを全て無効化

③WordPressネットワークインストール
WordPress管理画面
「ツール」→「ネットワークの設定」(新しく追加される)を選択
「サブドメイン」を選択
「インストール」を実行

④wp-config.phpと.htaccessをバックアップ

⑤wp-config.phpを編集(2回目)
/* 編集が必要なのはここまでです
の前に↓ を追加
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', true);
define('DOMAIN_CURRENT_SITE', 'office-yone.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

⑥.htaccess編集
↓ を追加
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]

# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ – [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]

FTPサーバー:vsftpd

vsftpdとは?

Very Secure Ftp Daemon
Linuxにおける標準的FTPサーバー

インストール

# yum -y install vsftpd

サービス

vsftpd起動
# /etc/rc.d/init.d/vsftpd start
(service fsftpd start も可?)
vsftpd自動起動設定
chkconfig vsftpd on
vsftpd自動起動設定確認
# chkconfig --list vsftpd
vsftpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
ランレベル2~5のon確認

設定ファイル編集

設定ファイルパス

# vi /etc/vsftpd/vsftpd.conf

匿名ユーザのログイン禁止
anonymous_enable=NO

アスキーモードでのアップロードを許可
ascii_upload_enable=YES

アスキーモードでのダウンロードを許可
ascii_download_enable=YES

FTPログイン時にソフト名とバージョンが表示禁止
ftpd_banner=Welcome to blah FTP service.

ホームディレクトリより上層へのアクセスを禁止
chroot_local_user=YES

ホームディレクトリより上層へのアクセス禁止を除外するユーザリストの有効化
chroot_list_enable=YES

ホームディレクトリより上層へのアクセス禁止を除外するユーザリストパス
chroot_list_file=/etc/vsftpd/chroot_list

ディレクトリごとの削除許可
ls_recurse_enable=YES

以下を最下行へ追加
タイムスタンプ時間を日本時間に
use_localtime=YES

SSLの有効化
ssl_enable=YES

サーバー証明書を指定
rsa_cert_file=~

ログイン時にSSL接続を強制しない
暗号化しない接続もできるようにする場合
force_local_logins_ssl=NO

データ転送時にSSL接続を強制しない
暗号化しない接続もできるようにする場合
force_local_data_ssl=NO

hosts.allow/hosts.denyによるアクセス制限の有効化
tcp_wrappers=YES
設定は「ホスト制限」参照

PASVモード設定

(追記)

PASVモード接続先IPアドレスをホスト名から取得する
pasv_addr_resolve=YES

PASVモード接続先IPアドレスが牽けるホスト名
pasv_address=centossrv.dip.jp

PASVモード接続時の最小ポート番号
pasv_min_port=60000

PASVモード接続時の最大ポート番号
pasv_max_port=60030

PASVモードとは?

PassiveMode
パッシブモード
FTP通信においてデータ転送のためのコネクション(ポート番号通知)をクライアントから発信する方式
クライアントがファイアウォールの内側にあり、
外部から直に接続要求を行うことができないような環境ではファイルの送信が行えない。
PORTモードの場合(通常)、コネクション(ポート番号通知)をサーバーから行う

外部リスト

ユーザー制限

FTP利用不可ユーザー一覧
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list (変更可)

ホスト制限

/etc/hosts.allow
vsftpd : XXX.XXX.XXX.XXX

/etc/hosts.deny
vsftpd : ALL

TCPWrappers」参照

chroot制限

chroot禁止除外リスト
/etc/vsftpd/chroot_list
※/etc/vsftpd/vsftpd.conf
chroot_local_user=YESの場合

user_listをFTP利用可能ユーザー一覧へ

userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list

WEBサーバー:Apache

Apacheとは

現在最も使用されているフリーのサーバーソフトウェア。
WEBページを公開するにはこの種類のアプリケーションが必要。
サーバーソフトウェアには他に、IIS(Microsoft)、lighttpd等がある。

インストール

インストール
# yum install httpd
アンインストール
#yum remove httpd

起動/終了

起動
# service httpd start
終了
# service httpd stop
再起動
# service httpd restart

起動設定

自動起動設定
# chkconfig –level 3 httpd on
自動起動設定確認
# chkconfig –list httpd
httpd 0:off 1:off 2:off 3:on 4:off 5:off 6:off
と表示されると成功。

バージョン確認

httpd -v
または
apachectl -v

設定ファイル編集

設定ファイル編集後は、
service httpd restart
が必要

場所

/etc/httpd/conf/httpd.conf

エラーページ

エラーページ等でサーバー情報を表示しない
ServerSignature On

ServerSignature Off

サーバー名

#ServerName www.example.com:80

ServerName office-yone.com:80

ポート番号

Listen 80

外部設定ファイル読み込み

Include (ファイルパス)

モジュール読み込み

LoadModule (モジュール名) (モジュールファイルパス)

ログ出力設定

access.log
CustmLog “logs/access.log” common
#CustmLog “logs/access.log” combined

error.log
ErrorLog “logs/error.log”

動作テスト

apachectl configtest

モジュール

LoadModule (モジュール名) (モジュールファイルパス)

mod_rewriteモジュール

URLの書き換えを行うモジュール
ユーザー(検索エンジン)からのリクエストURLを変更し別URLへリダイレクトする
アパッチは個別の機能を持つ各モジュールをアパッチサーバー起動時に読み込む
Webサーバに対する静的なURL要求→動的URLへの書き換え
(WordPressで利用)
※httpd.conf
rewrite_module読み込み
#LoadModule rewrite_module modules/mod_rewrite.so

LoadModule rewrite_module modules/mod_rewrite.so
<Directory />
400~500~エラー時でも独自のページへ遷移させる場合
ErrorDocument (ステータスコード) (遷移先ページパス)
ErrorDocument 503 /maintenance.html

書き換え実行設定
RewriteEngine On

実行条件
RewriteCond (実行条件)
RewriteCond %{REQUEST_URI} !=/maintenance.html

書き換え
RewriteRule (書き換え前) (書き換え後)
RewriteRule ^old/test\.html$ new/test.html
RewriteRule ^.*$ – [R=503,L]

</Directory>

Tomcat連携

リバースプロキシ設定を行うモジュール
プロキシサーバー/リバースプロキシ」参照
※httpd.conf
proxy_module読み込み
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
#proxy setting
Include conf/httpd-proxy.conf
※httpd-proxy.conf
<Location />
ProxyPass ajp://localhost:8009/AppTest/
</Location>

公開ディレクトリ

<Directory “/var/www/html”>
Options Includes FollowSymLinks
AllowOverride None
</Directory>

.htaccess設定

サイト毎に設定を分ける場合に利用
.htaccessファイルを自分で作成し公開ディレクトリに配置する事で優先的に.htaccessの設定値が利用される。
WordPressにおいて、投稿名によるパーマリンク設定を行う場合には必須
AllowOverride None

AllowOverride All

Options
オプション 意味
All 全て許可
None 全て不許可
ExecCGI CGIを許可
FollowSymLinks シンボリックリンクを許可
Includes SSIを許可
IncludesNOEXEC execを除くSSIを許可
Indexes ファイル一覧表示を許可
SymLinksIfOwnerMatch ファイル所有者に限り、シンボリックリンクを許可
エラー表示

php_value display_errors on
php.ini等よりこちらが優先される

電子証明書

概要

公開鍵が真正であることを証明するデータ。
以下を証明できる。
・データが改ざんされていないこと。
・データの作成者の信頼性

構成要素

電子証明書は実世界における印鑑証明書に当たる。

印鑑証明書 電子証明書
印鑑の印影 公開鍵
印鑑の持ち主の情報 公開鍵の持ち主の情報
印鑑証明書を発行した自治体名 証明書を発行した認証局の情報
発行元自治体の印 発行元認証局の署名

認証局(CA)

Certification Authority
電子証明書を発行する機関
Root認証局
他の認証局に対して証明書を発行する機関
自らの信頼性は、機関の公開情報、厳しい監査、運用実績、知名度によって自ら構築する
信頼性が揺らぐと過去に発行した証明書の信頼性が全て揺らぐ為に社会的な責任も発生する。

中間認証局
Root認証局以外の認証局。
Root認証局に証明書を発行してもらうことで自らの信頼性を構築する。

証明書の種類

サーバー証明書

=SSLサーバー証明書
情報通信先のサーバのサイト運営組織が実在していることの証明書
WebブラウザとWebサーバ間(またはサーバ同士)でSSL通信が行える。
認証局により発行される電子証明書の一種。

クライアント証明書

端末認証やメール署名・暗号化に使用する個人の証明書
PC・スマートフォン・タブレットなどに格納
クライアントを証明するので証明できない端末からのアクセスを制限できる

コードサイニング証明書

ソフトウェアの配布元を認証。
なりすましや内容の改ざんなどがされていないことを保証する。
WindowsアプリをClickOnceで実行する場合、
自己作成の証明書が自動で作成されるが1年に1回期限を延長する必要がある。
認証局から購入した証明書の場合はその作業が不要になる。

電子証明書の利用方法

WEBブラウザ等、電子証明書を利用するソフトウェアには、Root認証局の証明書が同梱されている。

certification
※InternetExplorerの証明書一覧

電子証明書を要する通信を行うWEBサイトを閲覧する場合、
最初にWEBサイトからサーバー証明書を取得する。
secure_pki1
次にWEBサイトの電子証明書の信頼性を確認する為に、中間認証局の証明書、Root認証局の証明書を順に確認する。
ブラウザにはRoot証明書が最初から同梱されているので、サーバー証明書がRoot認証局の認可を受けていれば、信頼性は確保できる。

secure_pki2

secure_pki3
上から
ルート認証局証明書
中間認証局証明書
サーバー証明書

ファイル

サーバー証明書

CSR

Certificate Signing Request
証明書の申請時に提出するファイル
公開鍵の情報、組織情報等を含む
拡張子:.csr、.txt等。無しでも何でも良い
中身
「--BEGIN CERTIFICATE REQUEST--」

「--END CERTIFICATE REQUEST--」

秘密鍵

拡張子:.key、.txt等。無しでも何でも良い
中身
「--BEGIN RSA PRIVATE KEY--」

「--END RSA PRIVATE KEY--」

公開鍵

=SSL証明書
拡張子:.crt、.cert、.ca、.txt等。無しでも何でも良い
Certificate(=証明書)の略
中身
「--BEGIN CERTIFICATE --」

「--END CERTIFICATE--」

キーペア

秘密鍵とそれに対応する公開鍵
拡張子:.snk等。無しでも何でも良い

個人情報交換ファイル

PKCS #12
Public Key Cryptography Standard #12
拡張子
.p12等
公開鍵証明書、秘密鍵からなるファイル
作成方法は「個人情報交換ファイル」参照

キーストア

クライアントが参照する鍵と証明書の情報ファイル
このファイルに情報が無い証明書は使用できない
=サイトにアクセスできない
Javaが実行時にデフォルトで使用するキーストア
C:\Program Files\Java\jreX.X.XXX\lib\security\cacerts

トラストストア

サーバが参照する鍵と証明書の情報ファイル

さくらVPSへのWordPress構築方法

概要

WEBサイト(htmlファイル)が公開できる状態になっている事が前提。
さくらVPSでのWEBサイト公開方法」参照。
php、MySQL、WordPressのインストールを行う。

PHP

インストール

WordPressの動作にはPHPが必要なのでインストール。
PHPインストール
# yum install php

日本語ライブラリ
# yum install php-mbstring

PHP開発用
# yum install php-devel

MySQL関連ライブラリ
# yum install php-mysql

画像ライブラリ
# yum install php-gd

標準拡張ライブラリ
# yum install php-pear

ここまでの状態でhtmlフォルダにindex.phpを配置すると、phpファイルがブラウザで閲覧できます。

PHP設定

PHPバージョン確認
# php -v

php情報表示
php -i
php --ini
php.iniパス
Debian
/etc/php5/cli/php.ini

CentOS
/etc/php.ini

PHP設定ファイルバックアップ
# cp /etc/php.ini /etc/php.ini.org
アップロードファイルサイズ拡大
post_max_size = 128M
アップロードサイズ拡大
upload_max_filesize = 128M
エラー表示/非表示
display_errors = On/Off
表示エラーレベル(全て/軽微なエラーを除いたエラー)
error_reporting = E_ALL/E_NOTICE

MySQL

WordPressはデータベースMySQLを使用する為、これもインストールします。
データベースサーバー:MySQL/MySQL」参照

phpMyAdmin

クライアントのブラウザから遠隔操作できるデータベースソフトのインストール(必須ではない)
データベースサーバー:MySQL/phpMyAdmin」参照

WordPress

WordPress.orgの日本語版サイト」より最新のWordPressバージョンを確認しておきます。
htmlディレクトリへ移動
# cd /var/www/html
WordPressダウンロード
# wget
圧縮ファイルの解凍
# tar xvzf wordpress-4.3.1-ja.tar.gz
WordPress関連ファイルをhtmlディレクトリへ移動
# mv wordpress/* /var/www/html
WordPress関連ディレクトリの操作権限付与
# chown -R apache:vpsuser *
# chmod -R g+w *

ここまでの時点でIPアドレスをブラウザに入力するとWordPressをブラウザで閲覧できる。
初回はWordPressの初期設定が自動的に開始される。

パーマリンク設定時の設定

WordPressファイルの上書き設定
これをしないとパーマリンクによるURL制御が行えない。