CentOS 7, Apache, nginx, Gitをインストール
自宅のサーバーマシンにGitサーバーを入れようとしたのですが,現状がWindows 7にApacheという構成でいろいろ面倒くさそうだったので,今後のことも考えてCentOSをセットアップしました.この記事は何をやったかのメモです.
最終的な構成は以下の通りです.
- Hyper-Vの仮想マシン上にCentOS 7 (x86-64) をインストール
- nginxがTCP Port 80 (HTTP) とTCP Port 443 (HTTPS) でListen
- ApacheがTCP Port 8080でListen
- 外部からはTCP Port 80とTCP Port 443にのみアクセス可能で,nginxのリバースプロキシを通して間接的に,TCP Port 8080のApacheや,LAN内の別のWebサーバーにアクセス可能.
- ApacheからGitのリポジトリにアクセス可能
最終的にやったことは以下の通りです.
- Hyper-Vの仮想マシン上にCentOS 7 (x86-64) をインストール
- Apacheのインストールと設定
- nginxのインストールと設定
- Gitのインストール
- HTTPSからGitのリポジトリにアクセスできるよう設定
CentOS 7 のインストール
- CentOSのサイトからCentOS 7 x86-64のDVD ISO (CentOS-7-x86_64-DVD-1611.iso) をダウンロード
- Hyper-Vで仮想マシンを作成.ネットワークインターフェースはEthernet 1つ.メモリはなんとなく3GBにした.
- 仮想マシンを起動しOSをインストール.インストール設定はお好みだが今回は以下のようにした.
- 言語は日本語を選択.
- インストールするソフトウェアは最小限を選択.
- ネットワーク設定はDHCPにして,ルーターのほうでIPアドレスを指定.
- インストールが完了したら再起動.
- 最小限のインストールにしたのでGUI環境はなく,起動すると真っ黒の画面にログインのプロンプトが現れる.SSHはすでに使えるようなので,ここからの作業はすべてSSHで行う.
ファイアウォールの設定
OSをインストールした時点でファイアウォールがかかっているので,HTTP(とHTTPS)を通すように設定ファイルを編集する.
以下を追記する.
最後に設定をリロードする.
編集するファイルは環境によって違うかもしれない.編集すべきファイルの確認などはここを参考に.4.5. ファイアウォールの使用 (Red Hat Customer Portal)
Apacheのインストール
インストールとサービスの開始.
参考: Apache httpd 2.4 を CentOS 7 に yum でインストールする手順 | WEB ARCH LABO
設定ファイルは/etc/httpd/conf/httpd.confにあり,そのファイル内でさらに/etc/httpd/conf.d/*.confを読み込むように記述されている.基本的な設定ファイルの書き方はOSとかに依存しないので,ググりながら適当に.
nginxのインストール
以下のサイトを参考にnginxをインストールしてリバースプロキシなどを設定.
http://qiita.com/MuuKojima/items/afc0ad8309ba9c5ed5ee
port 8080に中継されるようにリバースプロキシを設定して,ブラウザで接続すると,502 bad gatewayと表示されてしまった.ログを見ると,port 8080へ接続しに行こうとして,permission deniedになっている.調べてみると,SELinuxによってHTTPサーバーの外部通信が禁止されているのが原因らしいので,以下のコマンドで許可する.
参考: django - (13: Permission denied) while connecting to upstream:[nginx] - Stack Overflow
GitのインストールとApacheの設定
以下のサイトを参考に,Gitをインストールし,ApacheとSELinuxを設定し,Gitのリポジトリを作成.
http://www.torutk.com/projects/swe/wiki/CentOS_7でapache経由のgitサーバーを構築
ただし,ここで使われているsemanageコマンドが初期状態だと存在しない.以下のサイトによれば,# yum install policycoreutils-pythonすればいいらしい.
https://weblabo.oscasierra.net/openssh-sshd-centos7-change-port/
最後に,ApacheでBasic認証などをかければ完成.Subversionは,ユーザーごとに読み書きの権限を設定できたが,Gitにはそういう仕組みはなく,リポジトリにアクセスできる人はみんな読み書きできるらしい.
コメント