準備
目的:小さな職場で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
に以下を書き込んでおく
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とか…?