準備
目的:小さな職場でlocalに使うためのサーバ各種を準備したい。Web(とくにCGIとPHP、wiki)とDHCPサーバ。
Macは購入時のdefault settingで開始。El Capitan。
適当にApple ID作成(そのままではXcodeいれられないので)
ADCからXcode7.3.1とCommand Line Tools 10.11 (7.3.1)を入手してinstall
X11.appからXQuartzのサイトに飛んでXQuartz2.7.9を入手してinstall
一度Xcode起動して必要なmoduleをinstallさせてもいいししなくてもいいけど、おまじないとして一度マシンをreboot
このあとは基本的にTerminal.appからdefaultのshell(bash)で作業
一応sudo xcodebuild -licenseしてagreeしておく
必要ならCotEditorとかiTerm2とかfreeのツールいれて作業すると楽。
Webサーバ
Apache起動
まずsudo apachectl startでwebサーバを有効にする
止めるときはsudo apachectl start、再起動にはsudo apachectl restartが便利
Safariなどでhttp://localhostを表示させてapacheが起動しているか確認
そのあと余裕があるならマシン自体再起動後してまたSafariでhttp://localhostみて、自動でapacheが上がっていることを確認
サービスとしてみるならsudo launchctl list | grep httpみたいにしてloadされているかどうかを確認
このあとApacheのconfをいじる
(OS Xのhttpd.conf類は実際には/private/etc/apache2/の下にある)
(ちなみに/etcは/private/etcからのリンクなので、/etc/apache2でもよい)
(空白はタブつかわないほうがいい?)
いじったらこまめに再起動してsyntax checkすること
$ sudo apachectl restart
$ sudo apachectl configtest
.htaccessを有効にしてUserディレクトリも使えるようにする
まず/etc/apache2/httpd.confの以下をアンコメントにする
上二つはdefaultではアンコメントされてるはず
mod_userdir.soはUserディレクトリつかうなら必須、mod_rewrite.soは.htaccessつかうなら必須
LoadModule authz_core_module libexec/apache2/mod_authz_core.so
LoadModule authz_host_module libexec/apache2/mod_authz_host.so
LoadModule userdir_module libexec/apache2/mod_userdir.so
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
Include /private/etc/apache2/extra/httpd-userdir.conf
次に /etc/apache2/extra/httpd-userdir.conf の以下をアンコメントにする
Include /private/etc/apache2/users/*.conf
ここまで書き換えたらapache再起動 sudo apachectl restart して文法確認 sudo apachectl configtest
defaultではHomeにSiteディレクトリが存在しないので、Home /Users/{ユーザ名} にSitesディレクトリを作成 mkdir ~/Sites
/etc/apache2/users/{ユーザ名}.conf に以下のように書き加えて、.htaccessが使用出来るようにする
(実際は.htaccessなくても動きはする)
(Userディレクトリつかうだけなら.htaccessつかうための AllowOverride All はしなくてもいい)
(indexダダ見えだったりするので書き換えたほうがいい)
<Directory "/Users/{ユーザ名}/Sites/">
AllowOverride All
Options Indexes MultiViews FollowSymLinks
Require all granted
</Directory>
/etc/apache2/users/{ユーザ名}.conf のパーミッションが -rw-r--r-- root:wheel なのをなのを確認
(特にあたらしく作ったとき)
書き換えたらapache再起動 sudo apachectl restart して文法確認 sudo apachectl configtest
Safariなどで http://localhost/~{ユーザ名} みてみて確認
PHPを有効にする
ひとまず/etc/php.iniはそのままでOK
(PukiWikiでupload上限を変えるときとかには変更するけど)
一応indexまわりのファイル名を確認しておく
/etc/apache2/other/php5.conf をみると DirectoryIndex index.html index.phpになってるはず
/etc/apache2/httpd.conf の以下の部分をアンコメント
LoadModule php5_module libexec/apache2/libphp5.so
書き換えたら書き換えたら sudo apachectl restart して sudo apachectl configtest して確認
たとえば/Users/{ユーザ名}/Sites/phpinfo.phpを用意して以下を書き込み、http://localhost/~{ユーザ名}/phpinfo.php が表示されるかを確認
<?php phpinfo(); ?>
CGIとSSIを有効にする
/etc/apache2/httpd.conf の以下の部分をアンコメント
LoadModule cgi_module modules/mod_cgi.so
CGIスクリプトを /Library/WebServer/CGI-Executable に置くなら、/etc/apache2/httpd.conf の以下にOptions +ExecCGI を追加する(defaultでは Options None になっているはず)
<Directory "/Library/WebServer/CGI-Executables">
AllowOverride None
Options +ExecCGI +Includes
Require all granted
</Directory>
(この時点で AddHandler cgi-script .cgi がアンコメントされてないけどなぜか動くけどなぜなんだろう…どこかに記述されてるんだな…)
自前のディレクトリの特定の場所(たとえば /Users/{ユーザ名}/Sites/cgi-bin )に置くなら
/etc/apache2/users/{ユーザ名}.conf に以下を記述
<Directory /Users/{ユーザ名}/Sites/cgi-bin>
AddType text/html .shtml
AddHandler cgi-script .cgi
</Directory>
/Users/{ユーザ名}/Sites/.htaccess を準備して以下を追加しておく
Options +ExecCGI +Includes
ちなみにSSIいらないなら、AddType text/html .shtmlと+Includesは無くていい
書き換えたら sudo apachectl restart して sudo apachectl configtest して確認
テストしたいなら、以下のtest.cgiみないなのつくって置いて試す
# !/usr/bin/perl
use strict;
use CGI;
my($q) = new CGI;
print $q->header;
print $q->start_html;
print "test\n";
print $q->end_html;
Basic認証をつける
apacheが読込めそうなところにパスワードファイルを用意する
(例:/etc/apache2/htpasswdみたいなかんじで)
(/Users/{ユーザ名}/htpasswdとかでもいいかも、だめなら/Users/{ユーザ名}/Sites/.htpasswd)
(sudo emacs /etc/apache2/htpasswdとか新規につくる。owerはroot:wheelのままでOK)
(権限が-rw-r--r--、644になっていること)
まずhtpasswdコマンド htpasswd -n {閲覧するユーザ名} で{閲覧するユーザ名}というユーザでパスワードを作成
ここででてくる文字列(たとえばGKL0oNAaj0A9gみたいなの)をuser:passwordのようにパスワードファイルに記述(ユーザがいくつかあれば、1行毎に書き込む)
```htpasswdファイル
{閲覧するユーザ名}:GKL0oNAaj0A9g
hoge:Ue0m9xCyeaiw
fuga:H03hg8dj4hkw
`/etc/apache2/http.conf` などで `AllowOverrride AuthConfig` とか `AllowOverride All` が設定されていれば、認証をつけたいDirectoryに.htaccessを用意すればいい
(`sudo emacs .htaccess` とかでつくれば `-rw-r--r--` 権限で `root:wheel` になってるはず)
たとえばいちばんトップに置くかたちで、`/Library/WebServer/Document/.htaccess` に以下を書き込んでおく
```/Library/WebServer/Document/.htaccess
AuthType Basic
AuthName "hogefuga server"
AuthUserFile /etc/apache2/htpasswd
Require user {閲覧するユーザ名}
書き換えたら sudo apachectl restart して sudo apachectl configtest して確認
もしUserディレクトリでやるのなら
AuthType Basic
AuthName "Personal Sites"
AuthUserFile /Users/{ユーザ名}/htpasswd
Require user {閲覧するユーザ名}
とかして同様にsudo apachectl restart して sudo apachectl configtest
もしくは /etc/apache2/otherなどにconfファイルとしてまとめて置いておけば集中管理できる。
たとえば /etc/apache2/other/htaccess.conf みたいな名前のconfファイルつくっておいて、
<Directory "/Library/WebServer/Documents">
AuthType Basic
AuthName "Public Sites"
AuthUserFile /etc/apache2/htpasswd
Require user {閲覧するユーザ名}
</Directory>
<Directory "/Library/WebServer/Documents/wiki">
AuthType Basic
AuthName "PukiWiki"
AuthUserFile /etc/apache2/htpasswd
Require user {wiki利用者ユーザ名}
</Directory>
としておいくとか、/etc/apache2/{ユーザ名}/htaccess.conf に
<Directory "/Users/{ユーザ名}/Sites/">
AuthType Basic
AuthName "Personal Sites"
AuthUserFile /Users/{ユーザ名}/htpasswd
Require user {閲覧ユーザ名}
</Directory>
<Directory "/Users/{ユーザ名}/Sites/wiki">
AuthType Basic
AuthName "PukiWiki"
AuthUserFile /etc/apache2/htpasswd
Require user {wiki利用者ユーザ名}
</Directory>
を追加しておくみたいにすればOK
PukiWikiをたてる
pukiwikiのインストールの手順ですぐできる。基本的に解凍して置くだけ
管理者パスワードの設置とかアップロード容量の上限変更とかapacheのrestartもわすれずに
DHCPサーバ
MacPorts 2.3.4 El Capitanを入手してinstall
sudo xcodebuild -licenseしてsudo port -v selfupdateもしくはsudo port -d selfupdateしてsudo port install dhcpする
(べつにmacportでなくてもhomebrewでもなんでもいい)
(Linuxとかから移行してくるならISC-DHCPなのでそのままconfファイル動く)
依存関係上、まっさらだとopensslとzlibがMacPortsでinstallされる
とくになにもなく、cautionやnoteなども表示されずinstall終了
ひとまず/Library/LaunchDaemons/org.macports.dhcpd.plistの中身をlessなどでみる
必要な3つのファイル(dhcpd.confとdhcpd.leasesと本体のdhcpd)がどこにあるべきかを確認(よくある場所とは別の場所だったりするので注意)
/Library/LaunchDaemons/org.macports.dhcpd.plist
/opt/local/etc/dhcp/dhcpd.conf.sample
/opt/local/etc/dhcp/dhclient.conf.sample
/opt/local/var/db/dhcpd/.turd_dhcp
/opt/local/sbin/dhcpd
ができている
/opt/local/var/db/dhcpd/dhcpd.leases は始め存在しないので、自分で sudo touch /opt/local/var/db/dhcpd/dhcpd.leases みたいな感じで空ファイルつくる(これをしないとリースしないので正常に動いているようでどはまりする)
/opt/local/etc/dhcp/dhcpd.conf を準備する
ここに、とりあえずlinuxから移設するのでも、ならdhcpd.confそのまま置けばうごく
いちおうconfの文法確認 /opt/local/sbin/dhcpd -t /etc/dhcp/dhcpd.conf
簡単には sudo port load dhcpで起動、sudo port unload dhcpで停止
sudo launchctl listでちゃんとサービスとしてloadされているか確認
一応再起動してちゃんとサービス立ち上がっているかも確認
じっさいは再起動してちゃんとうごかすためには以下でon/offしたほうが無難そう
起動はsudo launchctl load -w /Library/LaunchDaemons/org.macports.dhcpd.plist、停止はsudo launchctl unload -w /Library/LaunchDaemons/org.macports.dhcpd.plist
あとは
sudo ln -s /opt/local/etc/dhcp /etc/dhcp とかしてリンク作っておけばlinux的な感じにして使いやすくなるのかな
MySQLサーバ
宿題。。。
他の
redmineとか…?