XAMPP ドメイン・SSL設定

httpd.conf

Apache起動時に読み込まれる設定ファイル
更に以下の設定ファイルを読み込む

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

# Secure (SSL/TLS) connections
Include conf/extra/httpd-ssl.conf

httpd-vhosts.conf

※C:\xampp\apache\conf\extra\httpd-vhosts.conf

バーチャルホスト有効設定

この設定は新し目のapatche、xamppでは不要

##NameVirtualHost *:80

NameVirtualHost *:80
NameVirtualHost *:443

デフォルト設定

<VirtualHost *:80>
 DocumentRoot "C:/xampp/htdocs"
 ServerName localhost
</VirtualHost>

バーチャルホスト設定

<VirtualHost *:80>
<VirtualHost *:443>
 DocumentRoot C:/xampp/htdocs/test/
 ServerName test
 ServerNameはURLに含まれるドメイン名とは関係無し
 サーバ証明書の対象サーバを指す
 SSLEngine on
 SSLCertificateFile "conf/ssl.crt/test.crt"
 SSLCertificateKeyFile "conf/ssl.key/test.key"
</VirtualHost>

<Directory "C:/xampp/htdocs/test/">
 order deny,allow
 allow from ALL
</Directory>

httpd-ssl.conf

※C:\xampp\apache\conf\extra\httpd-ssl.conf

バーチャルホスト設定

以下をhttpd-vhosts.confに書くのか、
httpd-ssl.confの末尾に書くのか、
両方に必要なのか不明。xammpのバージョンによる?


<VirtualHost *:443>
DocumentRoot "C:/xampp/htdocs/test/"
ServerName test:443
SSLEngine on
SSLCertificateFile "conf/ssl.crt/test.crt"
SSLCertificateKeyFile "conf/ssl.key/test.key"
</VirtualHost>

内容はhttpd-vhosts.confと同じ

サーバー証明書

サーバー証明書参照

hosts

管理者権限で書き込む
※C:\Windows\System32\drivers\etc\hosts

# localhost name resolution is handled within DNS itself.
# 127.0.0.1    localhost
# ::1       localhost
127.0.0.1 localhost
127.0.0.1 test.local
URL「test.local」を127.0.0.1に変換

SendMail

php.ini

※C:\xampp\php\php.ini
[mail function]
GMail利用時
SMTP=smtp.gmail.com
smtp_port=587
sendmail_from = XXXXXXX@gmail.com
sendmail_path =C:\xampp\sendmail\sendmail.exe
mail.add_x_header=Off

sendmail.ini

※C:\xampp\sendmail\sendmail.ini
[sendmail]
GMail利用時
smtp_server=smtp.gmail.com
smtp_port=587
smtp_ssl=auto
error_logfile=error.log
auth_username=XXXXXXX@gmail.com
auth_password=XXXXXXX

XAMPP インストール・設定

XAMPPとは?

発音:ザンプ
Webサーバーソフトウェア:Apache
JAVAプラットフォーム:Tomcat
DB:MySQL
開発言語(PHP、Perl)
等をまとめたパッケージ
Windows等のローカル環境でサーバーの動作を実現できる。

インストール・設定

インストール方法(windows,mac,linux共通)
公式サイトからインストールファイルをダウンロード

管理画面

http://localhost/dashboard/jp/

Apache

起動

XAMPP起動後
XAMPP2

Webサーバーソフトウェア:「Apache」起動後
XAMPP3

DocumentRoot

Apache表示対象ディレクトリ
XAMPP4
インストール先+htdocs

Apache表示対象フォルダのhtmlファイルをブラウザで表示
XAMPP5
http://localhost/index.html
【~\xampp\htdocs\index.html】
<html>
  <head>
    <title></title>
  </head>
  <body>
    <h1>It works!</h1>
  </body>
</html>

Apache表示対象フォルダのphpファイルをブラウザで表示
XAMPP6
※php拡張子のファイルがブラウザで表示されるという事は、phpのインタプリタが動作する事を示している。
【~\xampp\htdocs\test.php】
<?php phpinfo();?>

ポート番号

\xampp\apache\conf\httpd.conf
Listen 80
他のアプリと競合する場合

Listen 8080

MySQL

バージョン

コマンドプロンプト(Windowsの場合)にて、
cd (xamppインストールフォルダ)\mysql\bin
C:\xampp\mysql\bin
mysql --version

起動

コントロールパネルの「MySQL」> 「Start」

操作

ログイン
コマンドプロンプト(Windowsの場合)にて、
cd (xamppインストールフォルダ)\mysql\bin
C:\xampp\mysql\bin
mysql -u root
(インストール状態ではrootのパスワードは無し)

MySQL操作に関しては「データベースサーバー:MySQL」参照
XamppにおけるMySQL操作は実サーバーにおける操作と同じ

WordPress

(1) 公式サイトからWordPress実行ファイルをダウンロード&解凍
(2) (インストール先)/htdocsへ移動
例 C:/xampp/htdocs/wordpress
(3) http://localhost/wordpress/ へアクセス
XAMPP/Apacheを起動しておく事
XAMPP/MySQLを起動しておく事
XAMPP/phpMyAdminにてデータベース(データは空でOK)
(4) インストール開始
※(3)で作成したDB名、ユーザー名:root、パスワード:(空) を入力

SendMail

※C:\xampp\php\php.ini
[mail function]

;sendmail_path =

sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"
「sendmail」のパスを指定

Gメールサーバを利用する場合
※C:\xampp\sendmail\sendmail.ini
[sendmail]
smtp_server=smtp.gmail.com
smtp_port=587
auth_username=~@gmail.com
auth_password=XXXXXXXX
force_sender=~@gmail.com

2018年6月現在の設定
https://myaccount.google.com/にアクセス
[ログインとセキュリティ]を選択
安全性の低いアプリの許可を「有効」※下の方

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

インストール

リポジトリ登録

# wget https://download.postgresql.org/pub/repos/yum/9.X/redhat/rhel-7-x86_64/pgdg-centos96-9.X.noarch.rpm
# yum install pgdg-centos9X-9.X.noarch.rpm -y

PostgreSQLインストール

yum install postgresql9X-server -y

設定

PHPからのモジュール読み込み

※php.ini
;extension=php_pgsql.dll

extension=php_pgsql.dll

データベース操作

PostgreSQL バックアップ/リストア
PostgreSQL コマンド

データベースサーバー: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

intlモジュールインストール

参考

さくらのレンタルサーバPHP7環境でintlモジュール有効化

ディレクトリ作成

% mkdir -p ~/usr/local/src
% mkdir -p ~/usr/local/php/extension

ICUのビルド

% cd ~/usr/local/src
% wget http://download.icu-project.org/files/icu4c/58.1/icu4c-58_1-src.tgz
% tar zxvf icu4c-58_1-src.tgz
% cd icu/source
% ./configure –prefix=$HOME/usr/local
% gmake
% gmake install

intlのビルド

php-7.1.7に同梱されているintlをビルド
% cd ~/usr/local/src
% wget https://github.com/php/php-src/archive/php-7.1.7.zip
% unzip php-7.1.7.zip
% mv php-src-php-7.1.7/ext/intl ./intl-php-7.1.7
% rm -rf php-src-php-7.1.7
% cd intl-php-7.1.7
% phpize
% ./configure –with-icu-dir=$HOME/usr/local –with-php-config=/usr/local/php/7.1/bin/php-config
% make

実行ファイルを拡張モジュールディレクトリへ移動

modulesフォルダにできたintl.soを、拡張モジュール指定用のフォルダへコピー
% cp ~/usr/local/src/intl-php-7.1.7/modules/intl.so ~/usr/local/php/extension/

php.ini編集

extension_dir = /home/さくらのユーザー名/usr/local/php/extension
extension=intl.so

root権限を持つ一般ユーザー作成方法

wheelグループ

UNIX系システム上でスーパーユーザー(root)特権を得ることのできるユーザーの属するOS固有のグループ
$ su
$ sudo
が可能

wheelグループへユーザー追加

# useradd (新規ユーザー名)
# passwd (新規ユーザー名)
[パスワードの設定]
# usermod -G wheel (新規ユーザー名)

wheelグループのユーザーのみにsudoの使用を許可

※ /etc/sudoers を編集
# visudo
※ /etc/sudoers がオープンされる
# Allows people in group wheel to run all commands
# %wheel ALL=(ALL) ALL

%wheel ALL=(ALL) ALL

特定のグループのユーザーのみに管理者権限(root)切り替えを許可

※ /etc/pam.d/su を編集
auth required pam_wheel.so use_uid

wheelグループユーザーのみにsuコマンド実行を許可

※ /etc/login.defs を編集
追加
SU_WHEEL_ONLY yes

テスト

# useradd test
# passwd test
# su test
# sudo
# su –
# テスト終了後は、テスト用のユーザーをホームディレクトリとともに削除
# userdel -r test

SSHサーバー:OpenSSH

インストール

yum -y install openssh-server

Rootログイン禁止

/etc/ssh/sshd_config
PermitRootLogin yes

PermitRootLogin no

ポート番号変更

/etc/ssh/sshd_config
Port 22

Port XXX

クライアント側操作

リモートマシンにsshプロトコル(Secure Shell)でログインした上で指定のコマンドを実行する


指定のホストにログイン
$ ssh 192.168.0.1
$ ssh example.com

指定のホストに指定のユーザーでログイン
$ ssh user@192.168.0.1
$ ssh user@example.com

ログイン&コマンド実行
$ ssh 192.168.0.1 pwd

秘密鍵を指定して指定のホストに指定のユーザーでログイン
$ ssh -i /tmp/secret.txt user@example.com

ホストOSから仮想環境上のゲストOSにsshでログイン
$ ssh

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>

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等よりこちらが優先される