dockerのubuntu上でwebサーバーを構築
dockerでubuntuのコンテナを起動し、apache、php、perlをセットアップします。
Dockerでubuntuコンテナを起動
まず、ubuntuのコンテナを起動させます。
PS> docker run -tid -p 80:80 --name ubuntu ubuntu:focal
-it
オプションがないと、すぐに Exited(0) で終了してしまうので、忘れずに!
起動出来たらコンテナ内のbashに入ります。
PS> docker exec -it ubuntu bash
既存のパッケージを更新
root@c5ebab4975dd:/# apt update
root@c5ebab4975dd:/# apt upgrade -y
apache2をインストール
root@c5ebab4975dd:/# apt install -y apache2
この際、タイムゾーンの設定を求められます。
Configuring tzdata
------------------
Please select the geographic area in which you live. Subsequent configuration questions will narrow this down by
presenting a list of cities, representing the time zones in which they are located.
1. Africa 3. Antarctica 5. Arctic 7. Atlantic 9. Indian 11. SystemV 13. Etc
2. America 4. Australia 6. Asia 8. Europe 10. Pacific 12. US
Geographic area: 6
Please select the city or region corresponding to your time zone.
1. Aden 16. Brunei 31. Hong_Kong 46. Kuala_Lumpur 61. Pyongyang 76. Tehran
2. Almaty 17. Chita 32. Hovd 47. Kuching 62. Qatar 77. Tel_Aviv
3. Amman 18. Choibalsan 33. Irkutsk 48. Kuwait 63. Qostanay 78. Thimphu
4. Anadyr 19. Chongqing 34. Istanbul 49. Macau 64. Qyzylorda 79. Tokyo
5. Aqtau 20. Colombo 35. Jakarta 50. Magadan 65. Rangoon 80. Tomsk
6. Aqtobe 21. Damascus 36. Jayapura 51. Makassar 66. Riyadh 81. Ujung_Pandang
7. Ashgabat 22. Dhaka 37. Jerusalem 52. Manila 67. Sakhalin 82. Ulaanbaatar
8. Atyrau 23. Dili 38. Kabul 53. Muscat 68. Samarkand 83. Urumqi
9. Baghdad 24. Dubai 39. Kamchatka 54. Nicosia 69. Seoul 84. Ust-Nera
10. Bahrain 25. Dushanbe 40. Karachi 55. Novokuznetsk 70. Shanghai 85. Vientiane
11. Baku 26. Famagusta 41. Kashgar 56. Novosibirsk 71. Singapore 86. Vladivostok
12. Bangkok 27. Gaza 42. Kathmandu 57. Omsk 72. Srednekolymsk 87. Yakutsk
13. Barnaul 28. Harbin 43. Khandyga 58. Oral 73. Taipei 88. Yangon
14. Beirut 29. Hebron 44. Kolkata 59. Phnom_Penh 74. Tashkent 89. Yekaterinburg
15. Bishkek 30. Ho_Chi_Minh 45. Krasnoyarsk 60. Pontianak 75. Tbilisi 90. Yerevan
Time zone: 79
とりあえず Asia/Tokyo で設定
root@c5ebab4975dd:/# apache2 -k start
これで起動するはずです。ブラウザで localhost を確かめてください。
もし、
apache2: Syntax error on line 80 of /etc/apache2/apache2.conf: DefaultRuntimeDir must be a valid directory, absolute or relative to ServerRoot
というエラーが出た場合、
root@c5ebab4975dd:/# . /etc/apache2/envvars
root@c5ebab4975dd:/# mkdir /var/run/apache2
で治るはず…
PHPインストール
次にphpをインストールします。
root@c5ebab4975dd:/# apt install -y php
ファイル編集用にvimもインストール
root@c5ebab4975dd:/# apt install -y vim
テスト用にtest.phpを作成し、/var/www/html/に設置します。
<?php
// test.php
phpinfo();
?>
root@c5ebab4975dd:/# apache2 -k restart
root@4dcdfd32e1e0:/etc/apache2# apachectl -V
Server version: Apache/2.4.41 (Ubuntu)
Server built: 2022-04-26T18:02:11
Server's Module Magic Number: 20120211:88
Server loaded: APR 1.6.5, APR-UTIL 1.6.1
Compiled using: APR 1.6.5, APR-UTIL 1.6.1
Architecture: 64-bit
<em>Server MPM: prefork</em>
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=256
-D HTTPD_ROOT="/etc/apache2"
-D SUEXEC_BIN="/usr/lib/apache2/suexec"
-D DEFAULT_PIDLOG="/var/run/apache2.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="mime.types"
-D SERVER_CONFIG_FILE="apache2.conf"
デフォルトでは、モジュール版(prefork)で動くようです。
Perlをインストール
perlはデフォルトでインストールされていますが、モジュールを追加する必要があります
a2enmodはdebian系で使えるapacheの便利なコマンドです。
root@c5ebab4975dd:/# a2enmod cgid
そして/etc/apache2/apache2.confを書き換えます。
<Directory /var/www/>
Options Indexes FollowSymLinks ExecCGI
AllowOverride None
Require all granted
AddHandler cgi-script .pl .cgi
</Directory>
ExecCGI
とAddHandler cgi-script .pl .cgi
を追加してください
先ほど作成したtest.phpと同じディレクトリ(/var/www/html/)にtest.plを作成します。
// test.pl
#!/usr/bin/perl
print "Content-Type: text/html\n\n";
print "perl worked!";
1行目と2行目は省略できません。片方でも削除するとエラーになります。
最後にtest.plが単体で実行できるようにパーミッション(権限)を変更します。
root@c5ebab4975dd:/var/www/html# chmod +x test.pl