LoginSignup
5
6

More than 5 years have passed since last update.

OS X El Capitanでサーバをたてたときのメモ

Last updated at Posted at 2016-09-01

準備

目的:小さな職場で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つかうなら必須

/etc/apache2/httpd.conf
 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 の以下をアンコメントにする

/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ダダ見えだったりするので書き換えたほうがいい)

/etc/apache2/users/{ユーザ名}.conf
 <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 の以下の部分をアンコメント

/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 が表示されるかを確認

phpinfo.php
 <?php phpinfo(); ?>

CGIとSSIを有効にする

/etc/apache2/httpd.conf の以下の部分をアンコメント

/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 になっているはず)

/etc/apache2/httpd.conf
 <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 に以下を記述

/etc/apache2/users/{ユーザ名}.conf
 <Directory /Users/{ユーザ名}/Sites/cgi-bin>
  AddType text/html .shtml
  AddHandler cgi-script .cgi
 </Directory>

/Users/{ユーザ名}/Sites/.htaccess を準備して以下を追加しておく

/Users/{ユーザ名}/Sites/.htaccess
 Options +ExecCGI +Includes

ちなみにSSIいらないなら、AddType text/html .shtml+Includesは無くていい

書き換えたら sudo apachectl restart して sudo apachectl configtest して確認
テストしたいなら、以下のtest.cgiみないなのつくって置いて試す

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ディレクトリでやるのなら

/Library/WebServer/Document/.htaccess
 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ファイルつくっておいて、

htaccess.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

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.confdhcpd.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とか…?

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6