åºè«
æ¬çš¿ã¯ å åžåœ¹æè·å¡ãWEBããã°ã©ãã«è»¢è·ãããŸã§ã®ããŒãããã ã®é£èŒèšäºã®äžéšã§ãã
åå: Dockerfileã§å§ããIaC
ApacheãµãŒãåºç€ç¥è
ApacheãµãŒãèšå®ãã¡ã€ã«
ApacheãµãŒãã®èšå®ãã¡ã€ã«ã®çœ®ãå Žæã¯ãRedHatç³»LinuxïŒCentOSçïŒãšDebianç³»LinuxïŒUbuntuçïŒã§å€§ããå€ãããããæ £ããªããã¡ã¯æžæãããšãå€ãã§ãã
ãããåºæ¬çã«ã¯ã以äžã®ãããªæ§æã«ãªã£ãŠããããšãèŠããŠããã°å€§äžå€«ã§ãã
# --- RedHatç³» ---
/etc/httpd/
|_ conf/
| |_ httpd.conf # ã¡ã€ã³èšå®ãã¡ã€ã«ã§ /etc/httpd/conf.d/*.conf ãã¡ã€ã«ã include ãã
| ## â» ãã®ãã¡ã€ã«èªäœãç·šéããããšã¯åºæ¬çã«ãªã
|_ conf.d/ # ãŠãŒã¶èšå®ãã¡ã€ã«ã眮ããã£ã¬ã¯ããª
## ã«ã¹ã¿ãã€ãºèšå®ã¯ããã®äžã« .conf ãã¡ã€ã«äœæããŠèšè¿°ãã
# --- Debianç³» ---
/etc/apache2/
|_ apache2.conf # ã¡ã€ã³èšå®ãã¡ã€ã«ã§ä»¥äžã®èšå®ãã¡ã€ã«ãincludeãã
| ## - /etc/apache2/mods-enabled/*.conf
| ## - /etc/apache2/sites-enabled/*.conf
| ## - /etc/apache2/conf.d/*.conf
| ## - /etc/apache2/ports.conf
| ## â» ãã®ãã¡ã€ã«èªäœãç·šéããããšã¯åºæ¬çã«ãªã
|
|_ ports.conf # ããŒãèšå®ïŒããã©ã«ãã§ã¯80çªããŒããéããŠããïŒ
|
|_ mods-enabled/ # çŸåšæå¹ãªApache2ã®ã¢ãžã¥ãŒã«ã眮ããã£ã¬ã¯ããª
| |_ (*.conf) <ââââ ## éåžžããã®äžã«çŽæ¥ .conf ãã¡ã€ã«ãäœæããããšã¯ãªã
| â
| â # <= a2enmod ã³ãã³ãã§ mods-available/*.conf ã®ãªã³ã¯ã貌ãããšã§èšå®ãæå¹åãã
| â
|_ mods-available/ â # Apacheã«ã€ã³ã¹ããŒã«ãããïŒå©çšå¯èœãªïŒã¢ãžã¥ãŒã«çœ®ãå Ž
| |_ *.conf âââââââ
|
|_ sites-enabled/ # çŸåšæå¹ãªWebãµã€ãåºæèšå®ã眮ããã£ã¬ã¯ããª
| |_ (*.conf) <âââââ ## éåžžããã®äžã«çŽæ¥ .conf ãã¡ã€ã«ãäœæããããšã¯ãªã
| â
| â # <= a2ensite ã³ãã³ãã§ sites-available/*.conf ã®ãªã³ã¯ã貌ãããšã§èšå®ãæå¹åãã
| â ## â» 000-default.conf ã ãã¯æåãããªã³ã¯ã貌ãããŠããïŒæå¹åãããŠããïŒ
| â
|_ sites-available/ â # å©çšå¯èœãªWebãµã€ãåºæèšå®ãã¡ã€ã«çœ®ãå Ž
| |_ *.conf ââââââââ
|
|_ conf.d/ # Apache远å èšå®ãã¡ã€ã«ã眮ããã£ã¬ã¯ããª
.htaccess ãã¡ã€ã«
.htaccess ãã¡ã€ã« (忣èšå®ãã¡ã€ã«) ã¯ããã£ã¬ã¯ããªæ¯ã«ãµãŒãèšå®ã倿Žããããã®ãã¡ã€ã«ã§ãã
倧æ¬ã®Apacheèšå®ãã¡ã€ã«ïŒ/etc/httpd/*.conf ã /etc/apache2/**/*.confïŒã§ AllowOverride ãš FollowSymLinks ãæå¹åãããŠããå¿
èŠããããŸãã
AllowOverride All
Options +FollowSymLinks
ãªããApacheå
¬åŒããã¥ã¡ã³ãã§ãèšãããŠããŸãããåºæ¬çã«ã¯ .htaccess ã¯äœ¿ããªãããšãæšå¥šãããŠããŸãã
ãªããªã倧æ¬ã®Apacheèšå®ãã¡ã€ã«ã§åçã®èšå®ãå¯èœãªäžãWebäžã«ãããã£ãèšå®ãã¡ã€ã«ãå ¬éå¯èœãªç¶æ ã«ãªã£ãŠããããšã¯ã»ãã¥ãªãã£äžãããããªãããã§ãã
以äžã« .htaccess ãã¡ã€ã«ã®ã¡ãªããã»ãã¡ãªããããŸãšããŸãã
- ã¡ãªãã:
- ã¬ã³ã¿ã«ãµãŒãçã倧æ¬ã®Apacheèšå®ãã¡ã€ã«ã®ç·šéæš©éããªãå Žåã§ãå©çšå¯èœ
- ApacheãµãŒãã®åèµ·åäžèŠã§èšå®ãåæ ããã
- ãããžã§ã¯ããã£ã¬ã¯ããªã§ Git 管çãå¯èœïŒãã ãããŸã Git 管çã¯ããªãã»ããè¯ãïŒ
- ãã¡ãªãã:
- Webäžã«å ¬éå¯èœãªãããã»ãã¥ãªãã£äžã®æžå¿µããã
- ã¢ã¯ã»ã¹ããã床ã«èšå®ãèªã¿èŸŒããããèšå®ãå¢ããã»ã©ããã©ãŒãã³ã¹ãäœäžãã
ãªãã€ã¬ã¯ãå¶åŸ¡
ApacheãµãŒãã§ãªãã€ã¬ã¯ãïŒããURLãžã®ã¢ã¯ã»ã¹ãå¥ã®URLãžå€æŽïŒãè¡ãããå Žåã¯ãmod_redirect ã¢ãžã¥ãŒã«ãæå¹åããå¿
èŠããããŸãã
éåžžãmod_redirect ã¢ãžã¥ãŒã«ã¯ApacheãµãŒãã€ã³ã¹ããŒã«æã«äžç·ã«ã€ã³ã¹ããŒã«ãããŸãããDebianç³»Linuxã®å Žåã¯ãæç€ºçã«ã¢ãžã¥ãŒã«ãæå¹åããå¿
èŠãããã®ã§æ³šæãå¿
èŠã§ãã
# Debianç³»Linuxã®å Žå mod_redirect ãæç€ºçã«æå¹å
$ sudo a2enmod redirect
# => mods-available ã«ãã redirect ã¢ãžã¥ãŒã«ã®èšå®ãã¡ã€ã«ã®ãªã³ã¯ã
# mods-enabled é
äžã«äœãããŠæå¹åããã
ãªãã€ã¬ã¯ãã«é¢ããèšå®ã¯ãRedHatç³»Linuxã®å Žå /etc/httpd/conf.d/*.confãDebianç³»Linuxã®å Žå /etc/apache2/sites-available/*.conf, /etc/apache2/conf.d/*.conf ã«çœ®ãã®ãåºæ¬çã§ãã©ãããŠãå¿
èŠã§ããã° .htaccess ã«èšè¿°ããŸãã
ãªãã€ã¬ã¯ãèšå®ã¯éåžžãSEOçãªèгç¹ãã以äžã®ãããªæ£èŠåã®ããã«äœ¿ãããããšãå€ãã§ãã
- www ããã»ãªãã®æ£èŠå
- 倧æµã®ãµã€ãã§ã¯
www.example.comãšexample.comã¯åãå 容ã§éå¶ããã - ãããšãwww ããã»ãªãã®2ã€ã®ãµã€ãã«æ€çŽ¢ãšã³ãžã³ã®ããŒãžè©äŸ¡ã忣ããŠããŸãã®ã¯æãŸãããªã
- ãããã£ãå Žåã« www ãã or ãªã ã®ããããã«ã¢ã¯ã»ã¹ãçµ±äžãããšSEOäžè¯ããšããã
- 倧æµã®ãµã€ãã§ã¯
- ãã¬ãŒãªã³ã°ã¹ã©ãã·ã¥ã®æ£èŠå
- URLæ«å°Ÿã®
/ã¯ãã£ãŠããªããŠãéåžžã¯åãã¢ã¯ã»ã¹ãšã¿ãªãããåãããŒãžã衚瀺ããã - ãã®ãã www æ£èŠåãšåæ§ã«ãããŒãžè©äŸ¡åæ£ãé¿ããããã«
/ãã or ãªã ã«çµ±äžããããšãæãŸãã
- URLæ«å°Ÿã®
- åžžæSSLå
- ãµã€ãå
šäœãHTTPSåïŒ
http://...ã§ã¯ãªãhttps://....ã§ã®éä¿¡ã«ïŒããããšãåžžæSSLåãšåŒã¶ - è¿å¹Žã®ã€ã³ã¿ãŒãããã»ãã¥ãªãã£æèã®é«ãŸããäž»èŠãªãã©ãŠã¶ã®å¯Ÿå¿ã«äŒŽãããµã€ãã®åžžæSSLåã¯å¿ é ã®ãã®ãšãªã£ãŠãã
- ãã®ããã
http://ã®ã¢ã¯ã»ã¹ã¯https://ã«ãªãã€ã¬ã¯ãããããšãæãŸãã- â» ãã®åã«SSLèšŒææžãååŸã㊠SSL/TLS éä¿¡å¯èœãªç¶æ ã«ããŠããå¿ èŠããã
- ãµã€ãå
šäœãHTTPSåïŒ
# IfModuleãã£ã¬ã¯ãã£ãã§ mod_rewrite ãæå¹åãããŠãããå€å®å¯èœ
## â» åºæ¬çã«ã¯ã¢ãžã¥ãŒã«æå¹åãããŠããåæã§èšå®ãæžãããšãæãŸãã
## => IfModuleãã£ã¬ã¯ãã£ãã¯ããŸãæžããªãã»ããè¯ããšãããŠãã
## (ã¢ãžã¥ãŒã«ç¡å¹åãããŠããã°ãšã©ãŒãšãªããããã§ã¢ãžã¥ãŒã«ãç¡å¹åãããŠããããšã«æ°ä»ãããã)
<IfModule mod_rewrite.c>
# RewriteEngineæå¹å
RewriteEngine on
# ãªãã€ã¬ã¯ãã®åºæ¬æžåŒã¯ä»¥äžã®ããã«ãªã
# RewriteRule <ãã¿ãŒã³> <眮æåŸ> [<ãã©ã°>]
## `http://localhost/index.php` ã«ã¢ã¯ã»ã¹ããå ŽåãRewriteRuleã¯åŒæ° `index.php` ãåãåã
## ãã¿ãŒã³ã¯æ£èŠè¡šçŸã§æžã
## - ãã¹ã/index.php ãæžãæããããªã ^index\.php$
## 眮æåŸã®ãã£ã¬ã¯ããªãã¹ã¯ RewriteBaseã§æå®ïŒããã©ã«ã㯠/var/www/html/ïŒ
## - 眮æåŸã®æååã« hoge.php ãæå®ãããš /var/www/html/hoge.php ã«çœ®æããã
## 302ãªãã€ã¬ã¯ãããå Žåããã©ã°ã«ã¯ [R=302] ãæå®ãã
# åžžæSSLå
## HTTPS éä¿¡ã on ã§ãªããªã
RewriteCond %{HTTPS} !on
## https://... ã«ãªãã€ã¬ã¯ã(301: æä¹
çãªãã€ã¬ã¯ã
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# www ããã«æ£èŠå
## HTTP_HOST ã www ãªãã§å§ãŸã£ãŠããå Žå
RewriteCond %{HTTP_HOST} ^example\.com$
## www ããã®URLã«ãªãã€ã¬ã¯ã(301: æä¹
çãªãã€ã¬ã¯ã)
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
# ãã¬ãŒãªã³ã°ã¹ã©ãã·ã¥ããã«æ£èŠå
## ãªã¯ãšã¹ãURIãå®äœãã¡ã€ã«ã§ãªãã
RewriteCond %{REQUEST_FILENAME} !-f
## ãã€ãURIæ«å°Ÿã / ã§çµãã£ãŠããªãå Žå
RewriteCond %{REQUEST_URI} (.+[^/])$
## æ«å°Ÿã¹ã©ãã·ã¥ãä»äžããURLã«ãªãã€ã¬ã¯ã(301: æä¹
çãªãã€ã¬ã¯ã)
RewriteRule ^ %1/ [R=301,L]
</IfModule>
VirtualHost
VirtualHostã¯ãApacheãµãŒãã§è€æ°ãµã€ããéå¶ããããã®ä»çµã¿ã§ãã
ãã¹ãåã§HTTPã¢ã¯ã»ã¹å ãæ¯ãåããããšãå¯èœã§ãåºæ¬çã«ã¯ã以äžã®ãããªæžåŒã§å®çŸ©ããŸãã
# ããŒã80çªïŒHTTPã¢ã¯ã»ã¹ïŒã®VirtualHostå®çŸ©
<VirtualHost *:80>
# æ¯ãåãçšãã¹ãåèšå®
ServerName example.com
# æ¯ãåãå
ã®ããã¥ã¡ã³ãã«ãŒãå®çŸ©
## ãã®ãã£ã¬ã¯ããªé
äžã® index.html(.php) ãèªã¿èŸŒãã§è¡šç€ºãã
DocumentRoot /var/www/html/
# ããã¥ã¡ã³ãã«ãŒããã£ã¬ã¯ããªå
ã®èšå®ïŒä»»æïŒ
<Directory /var/www/html/>
# indexã®ååšããªããã£ã¬ã¯ããªã¢ã¯ã»ã¹æããã¡ã€ã«ãªã¹ãã衚瀺ãããªã: -Indexes
## â» ãããèšå®ããªããšãindex.html(.php) ã®ååšããªããã£ã¬ã¯ããªã®äžèº«ãäžžèŠãã«ãªã£ãŠããŸã
# ã³ã³ãã³ãããŽã·ãšãŒã·ã§ã³ç¡å¹å: -MultiViews
## â» ãããæå¹åãããŠãããšæ¡åŒµåãªãURIãæ¡åŒµåæãã¡ã€ã«ã«ãªãã€ã¬ã¯ãã§ããªã
# ã·ã³ããªãã¯ãªã³ã¯ + .htaccess æå¹å: +FollowSymLinks
Options -Indexes -MultiViews +FollowSymLinks
# .htaccess ãæå¹å
AllowOverride All
# WEBã¢ã¯ã»ã¹ãèš±å¯
Require all granted
</Directory>
</VirtualHost>
SSI (Server Side Includes)
SSI 㯠mod_php ãªã©ãæäŸããã以åã®æè¡ã§ãåé¢ãããHTMLãã¡ã€ã«ãèªã¿èŸŒãã ããç°¡åãªã³ãã³ããå®è¡ããŠåçãªã³ã³ãã³ããçæããããšãã§ããŸãã
ã»ãã¥ãªãã£çã«è匱ãªéšåãå€ããçŸåšã§ã¯ mod_php ã fastCGI ãªã©ã§ä»£æ¿ãããŠããŸãã
SSI ãå©çšããã«ã¯ãïŒDebianç³»Linuxã®å ŽåïŒa2enmod include ã³ãã³ãã§ mod_include ãæå¹åããäžã§ãèšå®ãã¡ã€ã«ã« Options +Includes ãèšå®ããå¿
èŠããããŸãã
ãŸããSSI ãã£ã¬ã¯ãã£ãã§è§£æããããã¡ã€ã«æ¡åŒµåã以äžã®ããã«èšå®ããå¿ èŠããããŸãã
# .shtml ãã¡ã€ã«ã html ãã¡ã€ã«ãšããŠæ±ã
AddType text/html .shtml
# .shtml ãã¡ã€ã«ã§ SSI ãã£ã¬ã¯ãã£ãè§£æãæå¹åãã
AddOutputFilter INCLUDES .shtml
SSI ãã£ã¬ã¯ãã£ãã®åºæ¬çãªæžãæ¹ã¯ä»¥äžã®éã
<!--#element attribute=value attribute=value ... -->
<!-- äŸ: ä»ã®ãã¡ã€ã«ãèªã¿èŸŒãã§è¡šç€ºãã -->
<!--#include virtual="otherfile.html" -->
æŒç¿çš Apache ç°å¢æ§ç¯
php:7.4-apache ã€ã¡ãŒãžã䜿ã£ãŠãwebãµãŒãã¹ã³ã³ããã®ã¿äœæããŸãããã
ãŸããæ¬æ¥ .htaccess ãã¡ã€ã«ã¯äœ¿çšããªãã®ãç¡é£ã§ãããèšå®ãã¡ã€ã«èšå®ã®åæ ã®ããã«æ¯åã³ã³ãããåèµ·åããã®ã¯æéã§ãããããæ¬æŒç¿ã§ã¯ .htaccess ãã¡ã€ã«ã䜿ã£ãã¢ã¯ã»ã¹å¶åŸ¡ãè¡ããŸãã
ïŒphp:7.4-apache ããŒã¹ã³ã³ããã§ã¯ãApacheã®åèµ·å = ã³ã³ããã®åèµ·åïŒ
æ§æ
åç §: 3-apache/
3-apache/
|_ docker/ # dockerã³ã³ããèšå®
| |_ web/
| |_ conf/
| | |_ 000-default.conf # Apacheããã©ã«ããµã€ãèšå®
| | | # => service://web:/etc/apache2/sites-available/000-default.conf
| | | # => link to service://web:/etc/apache2/sites-enabled/000-default.conf
| | |_ php.ini # PHPèšå®ãã¡ã€ã« => service://web:/usr/local/etc/php/php.ini
| |
| |_ Dockerfile # webãµãŒãã¹ã®ãã«ãæé
|
|_ html/ # => service://web:/var/www/html/
| |_ .htaccess # 忣èšå®ãã¡ã€ã«
| | ## èšå®åæ ã®æéãèã㊠.htaccess ãã¡ã€ã«ã§ã¢ã¯ã»ã¹å¶åŸ¡ãã
| |_ index.php # http://localhost ã§è¡šç€ºããããã¡ã€ã«
|
|_ docker-compose.yml # dockerã³ã³ããæ§æ
# - web: php:7.4-apache
# - http://localhost => service://web:80
Dockerã³ã³ããèµ·å
# -- user@localhost
# 3-apache ãã£ã¬ã¯ããªã«ç§»å
# cd /path/to/3-apache/
# ä»ã®Dockerã³ã³ããã¯åæ¢ããŠãã
$ docker stop $(docker ps -q)
# ã³ã³ãããã«ã
$ docker-compose build
# ã³ã³ããèµ·å
$ docker-compose up -d
# 念ã®çºã³ã³ããèµ·åãã°ã確èªãããšã©ãŒãèµ·ããŠããªãã確èª
$ docker-compose logs -f web
# => http://localhost ã«ã¢ã¯ã»ã¹ããŠè¡šç€ºã«åé¡ãªãã確èª
# => åé¡ãªããããªã Ctrl+C ã§ãã°ãã©ããŒçµäº
ãªãã€ã¬ã¯ãåŠçæŒç¿
Apacheã® mod_rewrite æ©èœã䜿ãããªãã€ã¬ã¯ãåŠçãå®çŸããŸãã
æŒç¿èª²é¡ 01
çŸç¶ indexãã¡ã€ã«ã¯çç¥ããŠãçç¥ããªããŠãã¢ã¯ã»ã¹å¯èœã§ãã
ïŒhttp://localhost ãš http://localhost/index.php ã¯åãããŒãžãšãªããŸãïŒ
ããã¯åè¿°ã®éããSEOäžæãŸãããããŸããã
ãã®ãããindex.php(.html) ã¯åºæ¬çã«çç¥ãããç¶æ
ã«æ£èŠåããããšã«ããŸãããã
ãªãã€ã¬ã¯ãã®æ¹åŒã¯ 302 (äžæçãªãã€ã¬ã¯ã) ãšããŸãã
â» æ¬æ¥ã¯ 301: æä¹ çãªãã€ã¬ã¯ã ãèšå®ããã®ãæãŸããã§ããã301ãªãã€ã¬ã¯ãã¯ãã©ãŠã¶ã®ãã£ãã·ã¥ããã€ããæ®ãæ§è³ªããããæŒç¿ã«ã¯äžåãã§ããããšãããä»åã¯302ãªãã€ã¬ã¯ããèšå®ããŸãã
URIã®èšèšæé
- ããã°ã©ãã³ã°èšèªäŸåã®æ¡åŒµåãå©çšããªã
- ä»åã®å Žåã
index.phpãindex.htmlã¯ããã°ã©ãã³ã°èšèªäŸåã®æ¡åŒµåã§ããããæãŸãããªã - => indexãã¡ã€ã«ãžã®ã¢ã¯ã»ã¹ã¯çç¥ãããURIã®ã»ããæãŸãã
- ä»åã®å Žåã
- å®è£ äŸåã®ãã¹åãå©çšããªãïŒcgi-bin, servletãªã©ïŒ
- ããã°ã©ãã³ã°èšèªã®ã¡ãœããåãå©çšããªã
- ã»ãã·ã§ã³IDãå«ããªã
- ãªãœãŒã¹ã衚çŸããåè©ã§æ§æãã
å®è£
åç §: 3-apache/training/01/html/.htaccess
åäœç¢ºèª
-
http://localhost/index.php
- http://localhost ã«ãªãã€ã¬ã¯ããããããšã確èªãã
- ããŒãžã®å
容ã¯
var/www/html/index.phpãšãªã
-
http://localhost/index.html (æ¬æŒç¿ã§ã¯
index.htmlã¯å®éã«ã¯ååšããªã)- http://localhost ã«ãªãã€ã¬ã¯ããããããšã確èªãã
- ããŒãžã®å
容ã¯
var/www/html/index.phpãšãªã
-
http://localhost
- ãã®ãŸãŸ
var/www/html/index.phpãšãªã
- ãã®ãŸãŸ
å®è£
æžã¿ãã¡ã€ã«ã䜿ã£ãŠåäœç¢ºèªãããå Žåã¯ãdocker-compose.yml ã® volumes ã以äžã®ããã«æžãæããŸãã
volumes:
- - ./html/:/var/www/html/:rw
+ - ./training/01/html/:/var/www/html/
# docker-compose.yml ãæžãæããç¶æ
ã§ã³ã³ããåæ§ç¯ãã
$ docker-compose up -d
# .htaccessãã¡ã€ã«ã®èšè¿°ãã¹çããããããããã«ãã°ãã©ããŒããŠãããšè¯ã
$ docker-compose logs -f web
æŒç¿èª²é¡ 02
-
index.php- GETãã©ã¡ãŒã¿
qã衚瀺ããããã°ã©ã ãå®è£-
http://localhost/?q=123 ã«ã¢ã¯ã»ã¹ãããã
123ã衚瀺
-
http://localhost/?q=123 ã«ã¢ã¯ã»ã¹ãããã
- GETãã©ã¡ãŒã¿
qãæž¡ãããŠããªãå Žåã¯äžæ£ãªã¢ã¯ã»ã¹ãšè¡šç€º
- GETãã©ã¡ãŒã¿
-
.htaccess-
http://localhost/{id} ã«ã¢ã¯ã»ã¹ãããã http://localhost/?q={id} ãšåçã®ããŒãžã衚瀺
-
{id}ã®ä»æ§:0ïœ9ã®æ°å€ã®1å以äžã®ç¹°ãè¿ã - ãªãã€ã¬ã¯ãã¯ããªãïŒURIã¯æžãæããªãïŒ
- æ«å°Ÿã¹ã©ãã·ã¥ã¯ãã£ãŠããªããŠãåäžã®ããŒãžã衚瀺ïŒã¹ã©ãã·ã¥ããã»ãªããçµ±äžããå¿ èŠã¯ãªãïŒ
-
- æŒç¿èª²é¡ 01 ãšåæ§ã«
index.php(.html)ã¯çç¥ãããç¶æ ã«æ£èŠåïŒ302ãªãã€ã¬ã¯ãïŒ
-
http://localhost/{id} ã«ã¢ã¯ã»ã¹ãããã http://localhost/?q={id} ãšåçã®ããŒãžã衚瀺
å®è£
åç §: 3-apache/training/02/html/
åäœç¢ºèª
-
http://localhost
-
äžæ£ãªã¢ã¯ã»ã¹ãšè¡šç€ºãããããšã確èª
-
-
http://localhost/?q=abc
-
abcãšè¡šç€ºãããããšã確èª
-
-
http://localhost/index.php?q=123
- http://localhost/?q=123 ã«ãªãã€ã¬ã¯ããããããšã確èª
-
123ãšè¡šç€ºãããããšã確èª
-
http://localhost/456
-
456ãšè¡šç€ºãããããšãç¢ºèª - ãªãã€ã¬ã¯ããããªãïŒURIãæžãæãããªãïŒããšã確èª
-
-
http://localhost/910/
-
910ãšè¡šç€ºãããããšãç¢ºèª - ãªãã€ã¬ã¯ããããªãïŒURIãæžãæãããªãïŒããšã確èª
-
-
http://localhost/def/
- 404 Not Found ãšã©ãŒã«ãªãããšã確èª
å®è£
æžã¿ãã¡ã€ã«ã䜿ã£ãŠåäœç¢ºèªãããå Žåã¯ãdocker-compose.yml ã® volumes ã以äžã®ããã«æžãæããŸãã
volumes:
- - ./html/:/var/www/html/:rw
+ - ./training/02/html/:/var/www/html/
# docker-compose.yml ãæžãæããç¶æ
ã§ã³ã³ããåæ§ç¯ãã
$ docker-compose up -d
# .htaccessãã¡ã€ã«ã®èšè¿°ãã¹çããããããããã«ãã°ãã©ããŒããŠãããšè¯ã
$ docker-compose logs -f web
Apacheã§ç°å¢å€æ°èšå®
Apacheã®èšå®ãã¡ã€ã«ããç°å¢å€æ°ãèšå®ã§ããŸãã
MySQLããŒã¿ããŒã¹ãžã®æ¥ç¶IDã»ãã¹ã¯ãŒããªã©ã¯ããœãŒã¹ã³ãŒãäžã«çŽæ¥èšè¿°ãããç°å¢å€æ°ã§å®çŸ©ããã®ãã»ãã¥ãªãã£äžå¥œãŸãããšãããŠããŸãã
ããã¯ããœãŒã¹ã³ãŒããäœãã®æåã«çãŸããããWEBäžã§é²èЧã§ããŠããŸã£ãããããããå Žåã®ã»ãã¥ãªãã£ãªã¹ã¯ãäœæžã§ããããã§ãã
ç°å¢å€æ°ã®èšå®ã¯ä»¥äžã®æžåŒã§èšè¿°ãããŸãã
SetEnv <ç°å¢å€æ°å> <ç°å¢å€æ°å€>
æŒç¿èª²é¡ 03
-
index.php- ç°å¢å€æ°
APP_ENVã®å 容ã衚瀺ããããã«å®è£
- ç°å¢å€æ°
-
.htaccess- ç°å¢å€æ°
APP_ENVã®å€ãLOCALã«èšå® - â» åè¿°ã®ã»ãã¥ãªãã£ãªã¹ã¯ã®ããšãèãããšç°å¢å€æ°ã¯æ¬æ¥
.htaccessã«èšè¿°ããã¹ãã§ã¯ãªã- ä»åã¯åäœç¢ºèªã®ãããããåªå
ããŠ
.htaccessã«èšè¿°ãã - 代ããã«ãäžãäžã«ã
.htaccessãã¡ã€ã«ã«ã¢ã¯ã»ã¹ãããªãããã«èšå®ããããš
- ä»åã¯åäœç¢ºèªã®ãããããåªå
ããŠ
- ç°å¢å€æ°
å®è£
åç §: 3-apache/training/03/html/
åäœç¢ºèª
-
http://localhost
-
LOCALãšè¡šç€ºãããããšã確èª
-
-
http://localhost/.htaccess
- 403 Forbidden Error ã衚瀺ãããããšã確èª
å®è£
æžã¿ãã¡ã€ã«ã䜿ã£ãŠåäœç¢ºèªãããå Žåã¯ãdocker-compose.yml ã® volumes ã以äžã®ããã«æžãæããŸãã
volumes:
- - ./html/:/var/www/html/:rw
+ - ./training/03/html/:/var/www/html/
# docker-compose.yml ãæžãæããç¶æ
ã§ã³ã³ããåæ§ç¯ãã
$ docker-compose up -d
# .htaccessãã¡ã€ã«ã®èšè¿°ãã¹çããããããããã«ãã°ãã©ããŒããŠãããšè¯ã
$ docker-compose logs -f web
Apacheãã°ã®ã«ã¹ã¿ãã€ãºæ¹æ³
php:7.4-apache ããŒã¹ã®Dockerã³ã³ããã§ã¯ã以äžã®å Žæã«ãã°ãåºåãããŠããŸãã
- ã¢ã¯ã»ã¹ãã°:
/var/log/apache2/access.log - ãšã©ãŒãã°:
/var/log/apache2/error.log
ãããã®ãã°ã¯Apacheèšå®ãã¡ã€ã«ã«ãããåºåå 容ãã«ã¹ã¿ãã€ãºããããåºåå ã倿Žãããããããšãã§ããŸãã
# ã¢ã¯ã»ã¹ãã°åºåå
容ã®å®çŸ©
LogFormat <åºå圢åŒå®çŸ©> <åºå圢åŒåïŒä»»æåïŒ>
## äž»ã«äœ¿ããåºå圢åŒå€æ°ïŒå
šãŠç¢ºèªããå Žå㯠http://httpd.apache.org/docs/2.0/ja/mod/mod_log_config.html åç
§ïŒ
### %a: ãªã¢ãŒãIPã¢ãã¬ã¹
### %A: ããŒã«ã«IPã¢ãã¬ã¹
### %B: HTTPããããé€ãã転éãã€ãæ°
### %b: HTTPããããé€ãã転éãã€ãæ°ã転éãã€ãæ°ã0ã®å Žå㯠- ãèšè¿°ããã
### %h: ãªã¯ãšã¹ããããªã¢ãŒããã¹ãå
### %H: ãªã¯ãšã¹ãããããããã³ã«
### %l: identã«ãããªã¢ãŒãã»ãŠãŒã¶å
### %t: ãªã¯ãšã¹ããåããæå»
### %r: HTTPãªã¯ãšã¹ãããããŒ
### %s: ãµãŒããŒããªã¯ãšã¹ãã«å¯ŸããŠè¿ããã¹ããŒã¿ã¹ã³ãŒãã%>s ãšèšè¿°ããããšã§æåŸã®ãªã¯ãšã¹ããèšã
### %U: ãªã¯ãšã¹ããããURL
### %u: èªèšŒã«äœ¿çšããããªã¢ãŒããŠãŒã¶ãŒå
### %v: ãªã¯ãšã¹ããåŠçãããµãŒããŒå
### %V: UseCanonicalNameãã£ã¬ã¯ãã£ãã®èšå®ã«å¿ãããµãŒããŒå
# ã¢ã¯ã»ã¹ãã°åºåå
ã®èšå®
CustomLog <åºåå
> <åºå圢åŒå>
# ãšã©ãŒãã°ã®åºåèšå®
ErrorLog <åºåå
>
LogLevel <åºåã¬ãã«>
## ãšã©ãŒãã°ã®åºåã¬ãã«
## â» äžäœã¬ãã«ã®åºåã¯äžäœã¬ãã«ã®åºåãå
æ¬ãããããäžã®ã¬ãã«ã»ã©åºåã¡ãã»ãŒãžã¯å€ããªã
### emerg: ç·æ¥ã«å¯ŸåŠããå¿
èŠãããã¡ãã»ãŒãžãèšé²ãã
### alert: èŠåã¡ãã»ãŒãžãèšé²ãã
### crit: èŽåœçãªã¡ãã»ãŒãžãèšé²ãã
### error: ååšããªããã¡ã€ã«ãžã®ã¢ã¯ã»ã¹ãªã©ã®ãšã©ãŒãèšé²ããã
### warn: èŠåã¡ãã»ãŒãžãèšå®ãã¹ãããå Žåã«ãèŠåãçºããã
### notice: éç¥ã¡ãã»ãŒãžãèšé²ãã
### info: ããã»ã¹ã®èµ·åã忢ãªã©ã®æ
å ±ãèšé²ããã
### debug: ãããã°ã«å¿
èŠãšãªãæ
å ±ãèšé²ãã
æŒç¿èª²é¡ 04
ãã°ã«é¢é£ããèšå®ã¯ .htaccess ã§èšå®ã§ããªãïŒæ£ç¢ºã«ã¯ <Directory> ãã£ã¬ã¯ãã£ãã§èšå®ã§ããªãïŒãããä»å㯠000-default.conf ã«èšå®ããŠãã³ã³ãããåèµ·åããªããåäœç¢ºèªãè¡ããŸãããã
- ã¢ã¯ã»ã¹ãã°:
- JSON圢åŒïŒ
{"ããŒ": "å€"}ïŒã§ä»¥äžã®æ å ±ãåºå- timestamp:
幎-æ-æ¥ æ-å-ç§åœ¢åŒã®ã¢ã¯ã»ã¹æ¥æïŒ%{%Y-%m-%d %H:%M:%S}tïŒ - status: æçµçã«è¿ããã¹ããŒã¿ã¹ã³ãŒã
- remote_host: ãªã¯ãšã¹ãå ãªã¢ãŒããã¹ãå
- request: ãªã¯ãšã¹ãããã
- referer: ãªãã¡ã©ïŒçŽåã®åç
§ããŒãžïŒïŒ
%{Referer}iïŒ - ua: ãŠãŒã¶ãšãŒãžã§ã³ãïŒ
%{User-Agent}iïŒ- â» Google Chrome ã§ã¯ãŠãŒã¶ãšãŒãžã§ã³ãã䜿ããªããªããšãã話ãããã®ã§ä»åŸã¯ãã°åºåããæå³ãããŸããªããªã
- timestamp:
- åºåå
:
/var/log/apache_access.log
- JSON圢åŒïŒ
- ãšã©ãŒãã°:
- åºåã¬ãã«:
warn - åºåå
:
/var/log/apache_error.log
- åºåã¬ãã«:
å®è£
åç §: 3-apache/training/04/000-default.conf
åäœç¢ºèª
-
http://localhost
- äžèšã¢ã¯ã»ã¹åŸ
service://web:/var/log/apache_access.logã確èªããèŠä»¶éãã® JSON 圢åŒã§ãã°åºåãããŠãããç¢ºèª -
docker-compose exec web vi /var/log/apache_access.logã³ãã³ããå©çšãããšäžçºã§ç¢ºèªã§ãã- vi ãšãã£ã¿ã§ã¯
Shift + Gã§ãã¡ã€ã«ã®æåŸã«ãžã£ã³ãã§ããã®ã§æŽ»çšãããšè¯ã
- vi ãšãã£ã¿ã§ã¯
- äžèšã¢ã¯ã»ã¹åŸ
- ãšã©ãŒãã°ç¢ºèª
-
docker-compose exec web vi /var/log/apache_error.logã³ãã³ããå©çšãããšäžçºã§ç¢ºèªã§ãã - ãããã
mpm_prefork:noticeãcore:noticeãªã©ã® notice ç³»ã¡ãã»ãŒãžãåºåãããŠããã¯ã
-
å®è£
æžã¿ãã¡ã€ã«ã䜿ã£ãŠåäœç¢ºèªãããå Žåã¯ãdocker-compose.yml ã® volumes ã以äžã®ããã«æžãæããŸãã
volumes:
:
- - ./docker/web/conf/000-default.conf:/etc/apache2/sites-available/000-default.conf:ro
+ - ./training/04/000-default.conf:/etc/apache2/sites-available/000-default.conf:ro
# docker-compose.yml ãæžãæããç¶æ
ã§ã³ã³ããåæ§ç¯ãã
$ docker-compose up -d
# ã³ã³ããèµ·åãã°ã確èªããèšå®ãã¡ã€ã«ã®èšè¿°ãã¹ããªããã©ãã確èª
$ docker-compose logs web
# åäœç¢ºèª
$ docker-compose exec web vi ...
VirtualHostã«ããè€æ°ãµã€ãéå¶
äžã€ã®ApacheãµãŒãã³ã³ããå ã§è€æ°ãµã€ããéå¶ã§ããããã«ããŸãã
â» æ¬æ¥ã¯ãµã€ãããšã«ã³ã³ãããåããã¹ãã§ãããããã§ã¯ãããŠDockerã®ååããå€ããåŠç¿ãè¡ããŸãã
æŒç¿èª²é¡ 05
- ãã¹ãå
site1.localhostãšsite2.localhostã®2ãµã€ããéå¶ãã- â»
***.localhostãšãã圢㧠localhost ã®ãµããã¡ã€ã³ãåããšãhostsãã¡ã€ã«ã®èšå®ãããªããŠãããŒã«ã«ç°å¢ã§ VirtualHost ã䜿ãã - â» æ¬çªãµãŒãã§ã¯2ã€ã®ãã¡ã€ã³ïŒor ãµããã¡ã€ã³ïŒãã¬ãžã¹ãã©ã§ååŸããŠããµãŒãIPãšãã¡ã€ã³ãçŽä»ãã圢ã«ãªã
- â»
- åãã¹ãã® DocumentRoot ã¯ä»¥äžã®éã
-
site1.localhost- DocumentRoot:
service://web:/var/www/site1/ - ããµã€ã1ããšè¡šç€ºãã
- DocumentRoot:
-
site2.localhost- DocumentRoot:
service://web:/var/www/site2/ - ããµã€ã2ããšè¡šç€ºãã
- DocumentRoot:
-
å®è£
åç §: 3-apache/training/05/
åäœç¢ºèª
-
http://site1.localhost
- ããµã€ã1ããšè¡šç€ºãããã°OK
-
http://site2.localhost
- ããµã€ã2ããšè¡šç€ºãããã°OK
å®è£
æžã¿ãã¡ã€ã«ã䜿ã£ãŠåäœç¢ºèªãããå Žåã¯ãdocker-compose.yml ã® volumes ã以äžã®ããã«æžãæããŸãã
volumes:
- - ./html/:/var/www/html/:rw
+ - ./training/05/site1/:/var/www/site1/
+ - ./training/05/site2/:/var/www/site2/
:
- - ./docker/web/conf/000-default.conf:/etc/apache2/sites-available/000-default.conf:ro
+ - ./training/05/000-default.conf:/etc/apache2/sites-available/000-default.conf:ro
# docker-compose.yml ãæžãæããç¶æ
ã§ã³ã³ããåæ§ç¯ãã
$ docker-compose up -d
# ã³ã³ããèµ·åãã°ã確èªããèšå®ãã¡ã€ã«ã®èšè¿°ãã¹ããªããã©ãã確èª
$ docker-compose logs web
SSI
SSI (Server Side Includes) ã¯ãPHP ãªã©ã®ã¹ã¯ãªããèšèªãçŸãã以åã«ãåçãªã³ã³ãã³ãçæãè¡ãããã«äœ¿ãããŠããæè¡ã§ãã
çŸåšã§ã¯ãã»ãã¥ãªãã£çã«ãæ©èœçã«ã PHP çã®ã¹ã¯ãªããèšèªã䜿ãã®ãäžè¬çã§ãããå€ããµã€ãã§ã¯ä»ã§ã SSI ã䜿ã£ãŠããããšããããããäœéšããŠããã«è¶ããããšã¯ãªããšèããŸãã
æŒç¿èª²é¡ 06
- ãã¡ã€ã«æ¡åŒµå
.shtmlã®ãã¡ã€ã«ã SSI åŠçã®å¯Ÿè±¡ãšãã- ä»åã¯åäœç¢ºèªã®ãããããåªå
ããŠ
.htaccessã«èšè¿°ãã
- ä»åã¯åäœç¢ºèªã®ãããããåªå
ããŠ
- index ãã¡ã€ã«ãšããŠåŠçãã察象ã
index.html,index.php,index.shtmlã®3ã€ãšãã - ãã¡ã€ã«æ§æã¯ä»¥äžã®éã
-
service://web:/var/www/html/index.shtml- http://localhost ã§è¡šç€ºããã index ãã¡ã€ã«
-
time.shtmlãã¡ã€ã«ãèªã¿èŸŒãã§è¡šç€ºãã
-
service://web:/var/www/html/time.shtml- ã¢ã¯ã»ã¹ãããæ¥æã衚瀺ãã
- 衚瀺圢åŒã¯
Y/m/d H:M:Sãšãã
-
å®è£
åç §: 3-apache/training/06/html/
åäœç¢ºèª
-
http://localhost
- çŸå𿥿ãã西æŠå¹Ž/æ/æ¥ æ:å:ç§ãã®åœ¢åŒã§è¡šç€ºãããã°OK
å®è£
æžã¿ãã¡ã€ã«ã䜿ã£ãŠåäœç¢ºèªãããå Žåã¯ãdocker-compose.yml ã® volumes ã以äžã®ããã«æžãæããŸãã
volumes:
- - ./html/:/var/www/html/:rw
+ - ./training/06/html/:/var/www/html/
# docker-compose.yml ãæžãæããç¶æ
ã§ã³ã³ããåæ§ç¯ãã
$ docker-compose up -d
# .htaccessãã¡ã€ã«ã®èšè¿°ãã¹çããããããããã«ãã°ãã©ããŒããŠãããšè¯ã
$ docker-compose logs -f web
åŸçä»ã
æŒç¿ãå®äºããã Docker ã³ã³ããã¯åæ¢ => åé€ããŠããŸã£ãŠè¯ãã§ãã
# -- user@localhost
# docker-compose.yml ã«å®çŸ©ãããå
šã³ã³ããã忢 => åé€
$ docker-compose down