最終更新日 2019/05/20 ※このページは書きかけです
さくらのVPS(v3) 2GのCentOS7環境の
サーバー設定手順をざっくりとまとめる。
目次 
環境 
さくらのVPS(v3) 2G
CentOS 7 x86_64
この段落を細分化中 
- nanasiでログインできるか確認
login as:nanasi
nanasi@127.0.0.1's password:[パスワード入力]
- 公開鍵でログインできるようにする
puttygen(他ソフトでもok)使って秘密鍵、公開鍵を生成します。
公開鍵はputtygenのauthorized_keysのところをコピペして authorized_keys という拡張子無しのテキストファイルを作成します。(『公開鍵の保存』ではありません)
作成した authorized_keys ファイルを
home/nanasi/.ssh
上記フォルダにWinSCP等のアプリを使ってアップロードします。
パーミッションを変更します
# chmod 700 ~/.ssh/ # 自分以外のアクセスを禁止
# chmod 600 ~/.ssh/authorized_keys # 自分以外の読み書きを禁止
今後公開鍵が複数必要になった場合はキーを連結してひとつの authorized_keys ファイルを作成する必要があります。
秘密鍵はパスフレーズ無しでローカルに保存し、PuTTYやWinSCPの認証ファイルに使用してください。
puttygenで作成した拡張子がppkの秘密鍵は、Windows10のUbuntuでsshする場合などはフォーマットが異なるためそのままでは使用できません。
PuTTYでOpenSSH方式に変換できるので変換してから使用してください。
- SSHログイン制限をかける
設定に失敗するとログインできなくなる可能性があるので慎重に
# vim /etc/ssh/sshd_config
Port 3843
PermitRootLogin no
PermitEmptyPasswords no
PasswordAuthentication no
AllowUsers nanasi
Port 3843 | SSHログインのポートを22から3843に変更する(変更後の数値は任意。22のままでも問題ないが、よりセキュリティを高める場合は変更する。) |
PermitRootLogin no | rootユーザーのログインを禁止する |
PermitEmptyPasswords no | 空のパスワードを禁止する |
PasswordAuthentication no | パスワードでのログインを禁止する |
AllowUsers nanasi | nanasiユーザーのみログイン可能にする |
パスワードでのログインをここで禁止しても、さくらのVPSコントロールパネルからはパスワードでログインできるので、万が一秘密鍵を紛失したりしても大丈夫。
sshd をリブート
# service sshd restart
- ファイアウォールの設定
iptablesを設定する
# vim /etc/sysconfig/iptables
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# SSH
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3843 -j ACCEPT
# HTTP
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
# HTTPS
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
# FTP1, FTP2
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
# SMTP
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT
# MySQL
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
# REJECT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
ポート3843の数値は、前項で設定したSSHの接続ポートにしておくこと。
行末などに余計な改行があるとうまくいかないので注意する。
COMMITのあとにも改行が無いように注意する。
iptablesを再起動する
# service iptables restart
- webサーバーの設定
Apacheのインストール
# yum install httpd
httpdを自動起動onにする
# chkconfig httpd on
httpd.confを編集してセキュリティを高める
# vim /etc/httpd/conf/httpd.conf
ServerTokens Prod
ServerSignature Off
Options -Indexes FollowSymLinks
ServerTokens Prod | 最低限のサーバー情報をレスポンスヘッダーで返すようにする |
ServerSignature Off | エラーメッセージなどをクライアントに返す際のフッターラインを表示しない |
Options -Indexes FollowSymLinks | ファイルの一覧を表示させないようにする |
追加でhttpd.confを編集
# vim /etc/httpd/conf/httpd.conf
KeepAlive On
設定に問題ないかをチェック
# service httpd configtest
問題なければ
Syntax OK
と表示されるので、httpdを起動する。
# service httpd start
httpd を起動中: [ OK ]
/var/www/html/の所有権をnanasiにする
# chown -R nanasi:nanasi /var/www/html/
適当に、「Hello World!!」などと書いた index.html を作成し、/var/www/html/にアップロードして、ブラウザにサーバーのIPでアクセスすれば、表示される。
- VirtualHostの設定をして、(複数)ドメインの管理ができるようにする
ここではhoge.comというドメインに対して設定すると仮定する。
hoge.comのhtml用フォルダを作成します。
# mkdir -p /var/www/hoge.com/public_html
(-p は、存在しないフォルダも作成してくれるオプション)
オーナーをnanasiに設定
# chown -R nanasi:nanasi /var/www/hoge.com
VirtualHostを有効にする
# vim /etc/httpd/conf/httpd.conf
NameVirtualHost *:80
hoge.comに対するVirtualHostの設定ファイルを作成する
# vim /etc/httpd/conf.d/hoge.com.conf
<VirtualHost *:80>
DocumentRoot /var/www/hoge.com/public_html
ServerName www.hoge.com
ServerAlias hoge.com
DirectoryIndex index.html index.php
ErrorLog /var/log/httpd/hoge.com_error_log
CustomLog /var/log/httpd/hoge.com_access_log combined
AddDefaultCharset UTF-8
<Directory "/var/www/hoge.com/public_html">
AllowOverride All
</Directory>
</VirtualHost>
設定に問題ないか、テストする
# service httpd configtest
Syntax OK
問題なければ、webサーバーを再起動
# service httpd restart
httpd を停止中: [ OK ]
httpd を起動中: [ OK ]
nanasiユーザーに切り替える
# exit
適当にhoge.comのトップページを作ってみる
$ vim /var/www/hoge.com/public_html/index.html
<html>
hello from hoge.com
</html>
ドメインを、サーバーのIPに向ける設定を行う
管理人はVALUE DOMAINでドメイン管理しているので、VALUE DOMAINのサイトから設定を行う
まず、ネームサーバーを「当サービス内のネームサーバーをご利用になるにはここをクリックして下さい。 」をクリックして設定。
次に「DNSレコード/URL転送の変更」で、
a * サーバーのIPアドレス
と入力して保存。
反映されるまで、数分かかるので、しばらく待つ。
しばらく待ったら、ブラウザで hoge.com にアクセスしてみる。
無事に hello from hoge.com と表示されれば成功。
- phpの設定
phpインストール
# yum install php php-devel php-mysql php-gd php-mbstring
インストール確認
# php -v
PHP 5.3.3 (cli) (built: Feb 22 2013 02:51:11)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
php.iniの編集
# vim /etc/php.ini
error_log = /var/log/php_errors.log
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.detect_order = auto
expose_php = Off
date.timezone = Asia/Tokyo
mbstring.internal_encoding = UTF-8 | エンコーディングはUTF-8で |
expose_php = Off | Offにしとかないとセキュリティ的によろしくないらしい |
設定を反映させるために、httpdを再起動
# service httpd restart
- MySQLの設定
MySQLのインストール
# yum install mysql-server
設定を変更。主に日本語設定。
# vim /etc/my.cnf
symbolic-links=0 と [mysqld_safe] の間に以下を挿入
character_set_server=utf8
default-storage-engine=InnoDB
innodb_file_per_table
[mysql]
default-character-set=utf8
[mysqldump]
default-character-set-utf8
mysqlサービスを開始
# service mysqld start
初回のインストール設定を実行
# mysql_secure_installation
最初の
Enter current password for root (enter for none):
は何も入力せずエンターで次に進む
次は、rootのパスワードを入れますか?という質問なので、Yでrootのパスワードを入力
次に、確認用にもう一度rootのパスワードを入力
あとは、デフォルトで大丈夫なのでYを入力して最後まで進める。
起動時にmysqlが起動するように設定しておく
# chkconfig mysqld on
ちゃんとインストールできたかを確認
# mysql -u root -p
Enter password:
rootのパスワードを入力すると、ずらずらっと文字が出力されて
mysql>
という状態になれば問題なし。
exit
で抜ける。
- パスワードのランダム生成コマンド mkpasswd 用に必要なパッケージをインストール
# yum install expect
パスワード生成時は
# mkpasswd -l 46
とやると、46ケタのランダムなパスワードを生成してくれる。
- phpMyAdminでMySQLの管理を行えるようにする
# yum install phpmyadmin
ブラウザからアクセスできるように設定ファイルを編集
# vim /etc/httpd/conf.d/phpMyAdmin.conf
<Directory /usr/share/phpMyAdmin/>
<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
Require ip 127.0.0.1
Require ip ::1
</RequireAny>
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
# 以下4行をコメントアウト
# Order Deny,Allow
# Deny from All
# Allow from 127.0.0.1
# Allow from ::1
# 以下2行を追加
Order allow,deny
Allow from all
</IfModule>
</Directory>
クッキー認証(Cookie認証)に変更する
# vim /etc/phpMyAdmin/config.inc.php
$cfg['blowfish_secret'] = '適当なパスフレーズ';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
上記、適当なパスフレーズは
# mkpasswd -l 46
で生成したものをコピペすると良い。
phpMyAdminの内部で使用するパスフレーズなので、特に覚える必要などはない。
ここまでできたら、apacheを再起動
# service httpd restart
あとはブラウザで
(サーバーのIPアドレス)/phpmyadmin
でアクセスできるはず。
- Node.jsのインストール
nvmで管理することにします。
インストールするNode.jsのバージョンはv0.10.13です。
まずnvmをgitから取得します。
$ git clone git://github.com/creationix/nvm.git ~/.node
Initialized empty Git repository in /home/nanasi/.node/.git/
remote: Counting objects: 696, done.
remote: Compressing objects: 100% (464/464), done.
remote: Total 696 (delta 339), reused 557 (delta 221)
Receiving objects: 100% (696/696), 105.69 KiB | 106 KiB/s, done.
Resolving deltas: 100% (339/339), done.
nvmを有効にして、Node.jsをインストールします。
$ . ~/.node/nvm.sh
$ nvm install v0.10.13
/usr/bin/which: no shasum in (/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/nanasi/bin)
######################################################################## 100.0%
Now using node v0.10.13
ちゃんとインストールできたかを確認。v0.10.13と表示されていれば、OK
$ node -v
v0.10.13
ログイン時に自動でnvmとnodeが起動するようにします。
vimで以下の2行を追加します。
成功すればログイン時に Now using node v0.10.13 と表示されるはずです。
$ vim ~/.bashrc
source ~/.node/nvm.sh
nvm use v0.10.13
参考サイト
http://com4tis.net/2013/05/21/sakura-vps-apache-node-js-install-1/
http://blog.summerwind.jp/archives/1464
rootでログイン 
とりあえずrootでログインする
login as:root
root@127.0.0.1's password:[パスワード入力]
最新の状態に更新する 
# yum update
途中、更新して大丈夫?的な確認が出るので、キーボードの y を押して続行します。
ユーザーの追加 
rootユーザーを使わなくて済むように、新規ユーザーを追加します。
以下は『nanasi』というユーザーを『wheel』グループに追加する手順です。
- ユーザーを追加(wheelグループとして)
# useradd -G wheel nanasi
- パスワードを設定
# passwd nanasi
Changing password for user nanasi.
New UNIX password: [パスワードを入力]
Retype new UNIX password: [上で入力したパスワードを再度入力]
passwd: all authentication tokens updated successfully.
※ちなみに「wheel」は「big wheel(大物、重要人物、有力者、大立者)」いうスラングが由来らしいです。
sudoの設定 
追加したユーザーはroot権限を持っていないので特定のコマンドを実行できません。
そこで、一時的にroot権限を取得してコマンドを実行できるようにするのがsudoです。
- visudo(sudoの設定専用コマンド)を実行
以下のコマンドを実行するとエディタが立ち上がります。
# visudo
- 追加したユーザーがsudoできるようにする
グループ単位で sudo できるようにするには以下のようにします。
%wheel ALL=(ALL) ALL
グループに権限を与えるのではなく、ユーザー単位で権限を与えたい場合は以下のようにします。
nanasi ALL=(ALL) ALL
- その他sudoを実行する上で便利になる設定
# sudoのタイムアウト時間を60分に設定(デフォルトは5分)
Defaults timestamp_timeout=60
- 編集したvisudoに問題ないかチェック
以下のコマンドでvisudoに問題がないかどうかチェックできます。
# visudo -c
以下の様なテキストが出力されていれば問題なしです。
/etc/sudoers: parsed OK
エラーが出ていた場合はvisudoで編集した箇所に問題がないかどうか確認してください。
日本語環境にする 
- ロケールを日本語に変更
# localectl set-locale LANG=ja_JP.UTF-8
- 反映
# source /etc/locale.conf
- 日本語環境になったか確認
# date
2018年 8月 18日 土曜日 17:41:02 JST
※参考にしたサイトにはIBUSとフォントのインストールが必要と書いてあったが問題なく動いているようなのでスルーした。
インストールする場合は以下。
IBUS(Intelligent Input Bus)をインストール
# yum install ibus-kkc
日本語フォント(VLゴシック)をインストール
# yum install vlgothic-*
vim 
最新版vimのビルドとインストール 
デフォルトでもvimは最小構成でインストールされていますが、自前でビルドして最新版をインストールします。
- すでにvimがインストールされているか確認
# yum list installed | grep vim
vim-minimal.x86_64 2:7.4.160-4.el7 @anaconda
上記ではvimがすでに最小構成でインストールされていますが、
アンインストールするとsudoも消えて、sudoを入れるとvim-minimalも入るらしいのでそのままにしておきます。
- ncursesをインストール
ncursesはビルドに必要なライブラリです。
# yum install ncurses-devel
- homeディレクトリに移動
# cd ~
- gitでソースをダウンロード
gitはソース管理のアプリケーションです。
vimフォルダが作成され、そこにソースコードがダウンロードされます。
# git clone https://github.com/vim/vim.git
- vimフォルダに移動
# cd vim
- 最新バージョンに更新
クローンした時点で最新版になっていますが、念の為更新します。
# git pull
- srcフォルダに移動
$cd src
- ビルド状態をきれいにする
# make distclean
- ビルド
# make
- ビルドしたvimをインストール
# sudo make install
- インストールされたか確認
# vim --version
VIM - Vi IMproved 8.1 (2018 May 18, compiled Aug 17 2018 01:13:49)
公式サイトの解説(英語)
https://www.vim.org/git.php
vimの設定 
全ユーザー同じ設定で構わない場合は /usr/local/share/vim/vimrc もしくは /etc/vimrc を編集します。
(vimで『:echo $VIM』を実行して表示されたディレクトリ直下のvimrcです)
ユーザー個別で設定したい場合は、 ~/.vimrc を編集(存在しなければ新規作成)します。
以下おすすめ設定です。※ファイルがすでに存在していた場合は追記します。
# vim /usr/local/share/vim/vimrc
"----- 基本 -----
set fenc=utf-8 " エンコード
"set nobackup " バックアップファイル作らない
set noswapfile " スワップファイル作らない
set showcmd " 入力中のコマンドをステータスに表示する
"set mouse=a " マウス有効に
"set clipboard=unnamedplus,autoselect " クリップボード有効に
set wildmenu " コマンドライン補完を拡張モードにする
"----- 見た目関連 -----
" set number " 行番号を表示
set title " 編集中ファイル名の表示
set showmatch " 対応するカッコを強調
"set matchtime=2 " 対応するカッコを強調する時間
"set list " タブ空白改行を可視化
set visualbell " ビープ音を可視化
set cursorline " 現在の行を強調表示
"set cursorcolumn " 現在の列を強調表示
set tabstop=4 " タブ幅を4にする
set noexpandtab " タブの代わりに空白を使わない
set autoindent " オートインデント有効
set smartindent " スマートインデント有効
"set ruler " カーソルが何行目何列目に置かれているかを表示
syntax on " シンタックスハイライト
set virtualedit=onemore "カーソルを行末の一つ先まで移動可能にする
set whichwrap=b,s,h,l,<,>,[,],~ "行頭、行末で行のカーソル移動を可能にする
set backspace=indent,eol,start "バックスペースでの行移動を可能にする
"let &t_ti.="\e[5 q" "カーソルの形状を変更
"----- ステータスライン関連 -----
set statusline& " リセット
set statusline+=%< " 行が長すぎるときに切り詰める位置
set statusline+=%F " ファイル名
set statusline+=%m " 変更チェック
set statusline+=[%n] " バッファ番号
set statusline+=%r " 読み込み専用
set statusline+=%h " ヘルプページなら[HELP]表示
set statusline+=%w " プレビューなら[Preview]表示
set statusline+=[%{&ff}] " フォーマット
set statusline+=[%Y] " ファイルタイプ
set statusline+=%= " これ以降は右寄せ
set statusline+=%l/%L行 " 現在行数/全行数
set statusline+=\ " 空白(\ )
set statusline+=%c列 " 現在列数
set statusline+=\ " 空白(\ )
set statusline+=%{&fileencoding} " エンコード
set laststatus=2 " ステータスを表示
"----- 検索関連 -----
set ignorecase " 大文字小文字の区別なく検索
set smartcase " 大文字が含まれていた場合は区別して検索
set incsearch " インクリメンタルサーチ
set wrapscan " 最後まで行ったら最初に戻る
set hlsearch " 検索語をハイライト表示
"----- 配色関連 -----
set background=dark " ダーク系のカラースキームを使う
colorscheme desert " 配色
"----- 全角表示を可視化 -----
function! ZenkakuSpace()
highlight ZenkakuSpace cterm=underline ctermfg=lightblue guibg=darkgray
endfunction
if has("syntax")
augroup ZenkakuSpace
autocmd!
autocmd ColorScheme * call ZenkakuSpace()
autocmd VimEnter,WinEnter,BufRead * let w:m1=matchadd("ZenkakuSpace", " ")
augroup END
call ZenkakuSpace()
endif
PuTTYでvimを動かしている時にクリップボードを使う 
- PuTTYの
設定>ウィンドウ>選択
『Shift がアプリケーションのマウス使用を無効にする』
のチェックがONになっていることを確認する
- Shiftを押しながらvim上の範囲をドラッグするとクリップボードにコピーされる
- Shiftを押しながら右クリックでクリップボードの値がvim上にペーストされる
Logwatch 
Logwatchはログを収集して毎日定時にメールで概要を報告してくれます。
- logwatchをインストール
# yum install logwatch
- 設定ファイルを編集
# /etc/logwatch/conf/logwatch.conf
MailTo = hoge@hoge.com # メール送信先アドレス (rootにするとrootユーザー宛に送信される)
Detail = High # レポートの詳細度 (Low Mid High)
Output = mail # レポートの出力先 (stdout mail)
Format = html # レポートのフォーマット (text html)
- メールで正しくレポートが届くか確認
# logwatch --output mail
※メールは、デフォルトの設定だと深夜(4時くらい?)に送られてきます。
これは cron.daily の設定時間に依存するようです。
FTP 
FTPはSCPを使用するため特に何も導入しません。
クライアントはWinSCPを使います。
Subversionのインストール 
最新のSubversion1.8系をインストールします。
yumで管理したいので、WANdiscoという会社が公開しているリポジトリを使わせてもらいます。
- 現在インストールされているsubversion関連のパッケージを確認
# rpm -qa | grep subversion
subversion-1.6.11-9.el6_4.x86_64
- インストールされているSubversionをアンインストール
# yum remove subversion
と打ち込んで、ずらーっとログが出て
================================================================================
Package Arch Version Repository Size
================================================================================
Removing:
subversion x86_64 1.6.11-9.el6_4 @updates 12 M
Transaction Summary
================================================================================
Remove 1 Package(s)
Installed size: 12 M
Is this ok [y/N]:
なアンインストール確認が出たら、yを押して続行
Is this ok [y/N]: y
またずらーっとログが出て、
Removed:
subversion.x86_64 0:1.6.11-9.el6_4
Complete!
なログが出ればアンインストール成功です。
- WANdisco用のyumリポジトリを追加
/etc/yum.repos.d/WANdisco.repo
というWANdiscoリポジトリを追加します。
# vim /etc/yum.repos.d/WANdisco.repo
で、ファイル編集を開始して
[wandisco]
name=WANdisco Repository - svn-1.8 centos6
baseurl=http://opensource.wandisco.com/centos/6/svn-1.8/RPMS/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-WANdisco
という内容して、
:wq
で保存してvimを終了します。
enabled=0で、普段は無効にしておきます。
- GPGキーを取り込む
# rpm --import http://opensource.wandisco.com/RPM-GPG-KEY-WANdisco
- Subversionインストールを実行
# yum install --enablerepo=wandisco --disablerepo=base,updates subversion
WANdisco.repoの設定で、普段は無効にしているので、--enablerepoで有効にしてやる必要があります。
base,updatesが優先されるのを防ぐため、--disablerepoでそれらを無効にしています。
ずらーっとログが出て、
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
subversion x86_64 1.8.5-1 wandisco 2.2 M
Installing for dependencies:
serf x86_64 1.3.2-2 wandisco 43 k
Transaction Summary
================================================================================
Install 2 Package(s)
Total download size: 2.2 M
Installed size: 7.6 M
Is this ok [y/N]:
な、インストール確認が出たら、yを入力して
Is this ok [y/N]: y
インストールを確定します。
またずらーっとログがでて、
Installed:
subversion.x86_64 0:1.8.5-1
Dependency Installed:
serf.x86_64 0:1.3.2-2
Complete!
なログが出ればインストール成功です。
- インストールされているパッケージを確認
今インストールしたパッケージを確認してみます。
# rpm -qa | grep subversion
subversion-1.8.5-1.x86_64
- Subversionのバージョンを確認
# svn --version
svn, version 1.8.5 (r1542147)
compiled Nov 19 2013, 15:28:00 on x86_64-unknown-linux-gnu
(略)
アップデートする場合 
普段は無効にしているので、yum updateでは更新されません。
# yum update --enablerepo=wandisco --disablerepo=base,updates
でアップデート確認、実行を行ってください。
Subversionの設定 
とりあえずhttpでアクセスできるようにしてみる 
セキュリティは無視して、単純にhttp経由でアクセスできるようにしてみます。
- 必要なパッケージをインストール
apache上でsubversionを動かすのに、mod_dav_svnが必要なのでインストールします。
# yum install mod_dav_svn
- mod_dav_svnを有効にする
# vim /etc/httpd/conf/httpd.conf
でconfを開いて
LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module modules/mod_dav_svn.so
を、LoadModule がずらーっと書いてある箇所の末尾に追記する。(すでに存在していた場合は追記しなくてよいです)
これをしないと、後述のsubversion.confでDAV svnを指定した時に、http再起動時、
Unknown DAV provider: svn
のエラーが出てしまいます。
- svnのルートディレクトリを作成
svnのルートディレクトリを /var/svn として、ディレクトリを作成します。(フォルダの場所や名前は任意です)
# mkdir /var/svn
- apacheが扱えるよう、フォルダのオーナーを変更
# chown -R apache:apache /var/svn
- 新規リポジトリを作成
テストとして、『testrepos』というリポジトリを作成します。
# svnadmin create /var/svn/testrepos
- リポジトリに基本フォルダを追加コミット
subversionは一般的に、trunk,tags,branchesにフォルダを分けてバージョンを管理します。このフォルダをサーバー上から作成して追加コミットしておきます。
# svn mkdir file:///var/svn/testrepos/trunk file:///var/svn/testrepos/tags file:///var/svn/testrepos/branches -m "init repository."
- Subversion用のconfファイルを作成
httpアクセス時の動作をconfファイルに記述します。
#vim /etc/httpd/conf.d/subversion.conf
<Locasion /svn>
DAV svn
SVNParentPath /var/svn
</Location>
- apacheを再起動
# /etc/init.d/httpd restart
httpd を停止中: [ OK ]
httpd を起動中: [ OK ]
- ブラウザでアクセスしてみる
http://[サーバーのアドレス]/svn/testrepos
Basic認証で制限をかける 
前項で作成したリポジトリにBasic認証をかけてみます。
- パスワードファイルの作成
svnフォルダに移動
# cd /var/svn
パスワードファイルを新規作成&最初のユーザー追加
# htpasswd -c .htpasswd nanasi
ユーザー追加する場合
# htpasswd .htpasswd nanasi2
ユーザー削除する場合
# htpasswd -D .htpasswd nanasi2
- アクセスファイルの作成
svnフォルダに移動
# cd /var/svn
.svnaccessファイルを作成
# vim .svnaccess
以下ファイルの中身
# testrepos リポジトリ
[testrepos:/]
* =
nanasi = rw
nanasi2 = r
* = | 認証されていないユーザーはアクセス不可 |
nanasi = rw | ユーザーnanasiは、読み込みと書き込み可 |
nanasi2 = r | ユーザーnanasi2は、読み込みのみ可 |
- mod_authz_svnを有効にする
# vim /etc/httpd/conf/httpd.conf
でconfを開いて
LoadModule authz_svn_module modules/mod_authz_svn.so
を、LoadModule がずらーっと書いてある箇所の末尾に追記する。(すでに存在していた場合は追記しなくてよいです)
これを忘れると、httpd再起動時に、
httpd を起動中: Syntax error on line 11 of /etc/httpd/conf.d/subversion.conf:
Invalid command 'AuthzSVNAccessFile', perhaps misspelled or defined by a module not included in the server configuration
なエラーが出ます。
- Subversion用のconfファイルを編集
前項で作成したsubversion.confをBasic認証に対応したものに書き換えます。
#vim /etc/httpd/conf.d/subversion.conf
<Locasion /svn>
DAV svn
SVNParentPath /var/svn
Require valid-user
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /var/svn/.htpasswd
AuthzSVNAccessFile /var/svn/.svnaccess
</Location>
- httpdを再起動
# /etc/init.d/httpd restart
httpd を停止中: [ OK ]
httpd を起動中: [ OK ]
- ブラウザでアクセスしてみる
http://[サーバーのアドレス]/svn/testrepos