技術関連の覚書

案件でやったり自宅で試したことの覚書

Git

Gitのインストール

Redhat

yum -y install git

Debian

apt-get install git

サーバ用途としてのリポジトリの作成(共有リポジトリ)

Gitは分散型のファイル管理のため各マシンにリポジトリと実際に編集を行うファイルが存在するが、サーバ用途で使用する場合はリポジトリ飲みが存在することになる。 この様なリポジトリを ベアリポジトリ と呼ぶ。

ベアリポジトリへアクセスするためのグループの作成 複数ユーザに対して設定する場合はグループを設定してユーザをグループに所属させて運用する

# groupadd Gitにアクセスするグループ

ベアリポジトリへアクセスするためのユーザの作成

# useradd -g Gitにアクセスするグループ ユーザ

作成したユーザのパスワードを設定する

# passwd ユーザ

ベアリポジトリを作成するディレクトリの作成 慣例的に末尾を.gitにする

# mkdir -p リポジトリ用ディレクトリ.git

ベアリポジトリの作成 gitアクセスユーザにsuする

# su - ユーザ

$ cd リポジトリ用ディレクトリ.git

ベアリポジトリの作成

–bare ベアリポジトリの作成 –shared ベアリポジトリの作成を行ったユーザが所属するグループに対して書き込み権限を付与する

$ git init --bare --shared

ベアリポジトリへの接続方法

Gitサーバへアクセスするプロトコルはgit、http、httpssshがある。 そのうち、読み書きのできるプロトコルsshとなる。 sshへの接続法法は、sshへアクセスできるユーザを作成してそのユーザで認証する方式と、ssh公開鍵を利用して接続する方法がある。

sshでの接続方法

git clone ssh://サーバ:[ポート]/リポジトリパス.git

GitLabのインストール

事前準備

httpdの停止

systemctl stop httpd.service
systemctl disable.httpd.service

https://about.gitlab.comからダウンロード このページをブラウザで開き、OSを選択して書かれているとおりにコンソールへコピペするとインストールができます。

Gitを使ったファイル管理

Gitの特徴である分散型ファイル管理の方法では必ず競合の問題が関わってくるが、それを克服すれば中央管理型のファイル管理よりも高速で、ローカル内でエラーを気にすることなく管理することができるツールとなる。

中央管理型(SVNなど)でリモートリポジトリとローカルリポジトリを作成して管理する場合、それぞれのリポジトリは別のものであり、それをマージすることは困難(そもそも別リポジトリでのマージはサポートされていないので不可能と言ってもいい)になるが、 分散管理型の場合、リモートとローカルとの同期(プル、プッシュ)やブランチ間のマージ機能が強化されているため通常はmasterをマージしてからコミットすればほとんど競合を起こすことなくマージリクエストを出すことが可能となります。

Gitを使った管理方法

テスト時に接続するDBの設定が違う場合に設定ファイルを書き直さなければならなかったり、状況に応じて設定を変えたい場合などは、ローカルのみでブランチを作成してそこでファイルを管理して、チェックアウト後や一時的にリモートに合わせてコミットしたファイルを戻すときに楽になります

マージ

ローカルリポジトリとリモートリポジトリが分かれているためGitえかマージ作業が必要不可欠です。 ローカルで管理しているリポジトリとリモートリポジトリとの同期をとる作業がプルやプッシュ、ブランチとマスターとの同期をとる作業がマージとなります。

Gitの基本的な運用はmasterを主としてファイルを管理し、それぞれの担当者がブランチを作成して、 それをローカルリポジトリで管理しながら作成後にmasterへのマージリクエストを出してリリースします。 まずはプルしてリモートのブランチと同期をとり、そのあとmasterとマージしておけばマージリクエストでの競合を防ぐことが出来ます。

Subversionのインストール

サーバ準備

firewallでhttpdのアクセスを許可

firewall-cmd --zone=public --add-service=http --permanent

subversion関連のインストール

subversionapache、mod_dav_svnのインストール

yum -y install subversion httpd mod_dav_svn

/etc/httpd/conf.module.d/10-subversion.conf を編集

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so
LoadModule dontdothat_module  modules/mod_dontdothat.so

Alias /svn/repos /home/manage/svn/repos

<Location /svn/repos>
    DAV svn
    SVNParentPath /home/manage/svn/repos/
    AuthType Basic
    AuthName "Subversion repositories" 
    AuthUserFile /etc/svn-auth-users
    Require valid-user
</Location>

Digest認証の場合

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so
LoadModule dontdothat_module  modules/mod_dontdothat.so

Alias /svn/repos /home/manage/svn/repos

<Location /svn/repos>
    DAV svn
    SVNParentPath /home/manage/svn/repos/
    AuthType Digest
    AuthName "Subversion repositories" 
    AuthUserFile /etc/svn-auth-users
    Require valid-user
</Location>

htdigest -c 認証ファイル AuthNameで書いてある文字 ユーザ名

バックアップ

svnadmin dump リポジトリパス > ダンプファイル名

リストア

svnadmin load 新リポジトリパス < ダンプファイル名

httpsの設定

OpenSSL,mod_sslのインストール

yum -y install openssl mod_ssl

秘密鍵の設定

# cd /etc/httpd/conf
# openssl genrsa -aes128 1024 >server.key
Generating RSA private key, 1024 bit long modulus
........++++++
.....++++++
e is 65537 (0x10001)
Enter pass phrase: ←パスフレーズ入力
Verifying - Enter pass phrase: ←同じパスフレーズを入力
公開鍵ファイルの作成
# openssl req -new -key server.key > server.csr
Enter pass phrase for server.key: ←秘密鍵作成で入力したパスフレーズを入力
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:Tokyo
Locality Name (eg, city) [Default City]:Minato
Organization Name (eg, company) [Default Company Ltd]:examples
Organizational Unit Name (eg, section) []:1S
Common Name (eg, your name or your server's hostname) []:example.com
Email Address []:info@example.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: ←そのままEnterでOK
An optional company name []: ←そのままEnterでOK

firewallの設定

# firewall-cmd --add-service=https --zone=public --permanent 
firewallの再起動
# firewall-cmd --reload

CentOS7

CentOS6からの変更点

内容 CentOS6 CentOS7
デフォルトファイルシステム ext4 xfs
ブートローダ GRUB GRUB2
セキュリティ設定 iptables firewall+iptables
サービス起動 service サービス名 start systemctl start ユニット名[.service]
サービス再起動 service サービス名 restart systemctl restart ユニット名[.service]
サービス停止 service サービス名 stop systemctl stop ユニット名[.service]
サービス自動起動設定 chkconfig スクリプト名 on systemctl enable ユニット名
サービス自動起動停止 chkconfig スクリプト名 off systemctl disable ユニット名
サービス状態確認 chkconfig –list systemctl list-util-files
ホスト名変更 hostname ホスト名 hostnamectl set-hostname ホスト名
ネットワーク設定 /etc/sysconfig/network-script/ifcfg-ethXの変更とnetwork restart nmtui(GUI)
nmcli(コマンド)
ネットワーク状態確認 netstat ip n
ネットワークインタフェースの状態 netstat -i ip -s l
ネットワークインタフェースの起動 ifup eth0 nmcli c up eno0
ネットワークインタフェースの停止 ifdown eth0 nmcli c down eno0

プロキシを経由する場合の設定

yum /etc/yum.confにproxyの設定を記述

proxy=http://ホスト:ポート
proxy_username=ユーザ
proxy_password=パスワード

curl

~/.curlrc ファイルを編集する

proxy="http://ホスト:ポート

サーバ構築の基本 -パッケージのインストール-

Linuxでのパッケージのインストールはパッケージインストーラを使ってインストールするのが一般的です。 パッケージインストーラはインストールファイルを実行するだけでなく、その関連するパッケージもインストールするので、パッケージインストールを用いてインストールすることをおすすめします。

Redhat

yumを用いてインストールする

rootユーザで

yum -y install パッケージ名

rpmを用いてインストールする

rootユーザで

rpm -i インストールパッケージファイル.rpm

基本的にyumはオンライン上のリポジトリからファイルを取得するためパッケージファイルをダウンロードする必要はありません。 また、パッケージのバージョンは基本的に最新バージョンがインストールされる(ただし、リポジトリにある最新版でパッケージそのものの最新版であるとは限らない)

yumリポジトリに最新版が存在しない場合にrpmを使うなどの使い分けが必要になります。