Pages

2013年8月14日水曜日

Gitエラー「master -> origin/master (unable to update local ref)」の対応

■変更履歴の削除 ※他のgitプロセスが動いていない状態で行うこと

Jenkinsのビルド時に実行しているgit pullでタイトルのエラーを吐いていて、 Stackoverflowの回答を元にGitのクリーンアップしたら直ったのでメモ

■変更履歴の削除 ※他のgitプロセスが動いていない状態で行うこと

$ git gc --prune=now

■リモートリポジトリの削除ブランチをローカルからも消す

$ git remote prune origin

この後再ビルドしたら、ローカルのゴミ削除が履歴にずら〜っと

deleting .git/objects/6f/dfa256da223jrl38rflf
…

参考ページ

git pull fails "unalble to resolve reference" "unable to update local ref" - Stack Overflow

Git ユーザマニュアル (バージョン 1.5.3 以降用)

git(1)

2013年8月5日月曜日

CentOS6.3(on Azure)環境のセットアップ(PHP,Apache,MySQLほかインストール)

■タイムゾーンをJST-9に設定
$ cat /etc/redhat-release
CentOS release 6.3 (Final)

■タイムゾーンをJST-9に設定

$ sudo cp /usr/share/zoneinfo/Japan /etc/localtime

■PHP5.3.3及びApache2.2.15のインストール

yumの標準パッケージの確認

# yum list php
Available Packages
php.x86_64 5.3.3-14.el6_3 updates

バージョンが合ってることを確認後

# yum install php
# php -v
PHP 5.3.3 (cli) (built: Jul 3 2012 16:53:21)

Apacheもバンドルされてるので確認

# httpd -v
Server version: Apache/2.2.15 (Unix)

Apacheの起動

# apachectl -k start
httpd: Could not reliably determine the server's fully qualified domain name, using 100.80.94.7 for ServerName

httpd.confのServerNameにHOSTNAMEを設定

# cat /etc/sysconfig/network

もしくは

# hostname

でHOSTNAMEを調べ、httpd.confに設定する

ServerName hoge-vm:80

■MySQL5.5.19のインストール

MySQL5.5.19(バージョン指定)のRPMを取得 参考:http://christina04.blog.fc2.com/blog-entry-243.html

# cd /usr/local/src
# wget http://downloads.skysql.com/archives/mysql-5.5/MySQL-client-5.5.19-1.el6.x86_64.rpm
# wget http://downloads.skysql.com/archives/mysql-5.5/MySQL-shared-5.5.19-1.el6.x86_64.rpm
# wget http://downloads.skysql.com/archives/mysql-5.5/MySQL-server-5.5.19-1.el6.x86_64.rpm
# wget http://downloads.skysql.com/archives/mysql-5.5/MySQL-devel-5.5.19-1.el6.x86_64.rpm

取得したRPMからインストール

# rpm -ivh MySQL-client-5.5.19-1.el6.x86_64.rpm
# rpm -ivh MySQL-shared-5.5.19-1.el6.x86_64.rpm
# rpm -ivh MySQL-server-5.5.19-1.el6.x86_64.rpm

ここでMySQL-server-5.5.19-1.el6.x86_64 conflicts with file from package mysql-libs-5.1.67-1.el6_3.x86_64という競合エラーがでたので、mysql-libsをアンインストール

# yum remove mysql-libs

依存関係の他のものが消えちゃうらしいので、下記インストール

# wget http://downloads.skysql.com/archives/mysql-5.5/MySQL-shared-compat-5.5.19-1.el6.x86_64.rpm
rpm -ivh MySQL-shared-compat-5.5.19-1.el6.x86_64.rpm

再度、

# rpm -ivh MySQL-server-5.5.19-1.el6.x86_64.rpm

OK!

# rpm -ivh MySQL-devel-5.5.19-1.el6.x86_64.rpm

一旦確認

# mysql --version
mysql Ver 14.14 Distrib 5.5.19, for Linux (x86_64) using readline 5.1

OK!

■MySQLの設定

インストールが終わったのでmy.cnf の作成

$ sudo cp /usr/share/mysql/my-medium.cnf /etc/my.cnf

サービスの起動

$ sudo /etc/init.d/mysql start
Starting MySQL....... SUCCESS!
$ sudo mysql -u root

■Memcached1.4.4とPECL Memcacheのインストール

yumにあるか調べる

# yum list memcached php-pecl-memcache
memcached.x86_64 1.4.4-3.el6 @base
php-pecl-memcache.x86_64 3.0.5-4.el6 @base

望みのバージョンだったのでそのままyum install

$ sudo yum install memcached php-pecl-memcache

複数プロセス起動設定 プロセス管理用ファイルの複製 $ sudo /etc/rc.d/init.d/memcached start

するとmemcached.pidが作られるのでそれをプロセス数(ポート)分コピー

$ sudo cp -p /var/run/memcached/memcached.pid /var/run/memcached/memcached_11211.pid
$ sudo cp -p /var/run/memcached/memcached.pid /var/run/memcached/memcached_11212.pid

設定ファイルの複製&編集

$ sudo cp -p /etc/sysconfig/memcached /etc/sysconfig/memcached_11211
$ sudo cp -p /etc/sysconfig/memcached /etc/sysconfig/memcached_11212
$ sudo vi /etc/sysconfig/memcached_11211
PORT="11211"
USER="memcached"
MAXCONN="50000"
CACHESIZE="512"
OPTIONS=""

もう一方のポートも同じように設定

$ sudo vi /etc/sysconfig/memcached_11212
PORT="11212"
USER="memcached"
MAXCONN="50000"
CACHESIZE="512"
OPTIONS=""

起動スクリプトの複製

$ sudo cp -p /etc/rc.d/init.d/memcached /etc/rc.d/init.d/memcached_11211
$ sudo cp -p /etc/rc.d/init.d/memcached /etc/rc.d/init.d/memcached_11212

起動スクリプトの編集(memcached_11212も同じように編集)

$ sudo vi /etc/rc.d/init.d/memcached_11211
if [ -f /etc/sysconfig/memcached_11211 ];then
. /etc/sysconfig/memcached_11211
fi

# Check that networking is up.
. /etc/sysconfig/network

if [ "$NETWORKING" = "no" ]
then
exit 0
fi

RETVAL=0
prog="memcached"
pidfile=${PIDFILE-/var/run/memcached/memcached_11211.pid}
lockfile=${LOCKFILE-/var/lock/subsys/memcached}

■Gitのインストール

# yum install git

■OSアカウントの追加

管理用アカウントの作成

wheelグループへのsudo権限付与する

# visudo
...
## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL
↑コメントを外す

管理用アカウントをwheelへ追加

# useradd -G wheel hoge
# passwd hoge
Changing password for user hoge.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
# usermod -G wheel hoge

確認

# id hoge
uid=500(hoge) gid=500(hoge) 所属グループ=500(hoge),10(wheel)

2013年7月30日火曜日

Jenkins+Githubでの自動デプロイ設定

Jenkinsの管理画面は日本語だとわかりづらいので英語設定で。

◎自動デプロイ設定までの流れ
  1. ユーザー作成
  2. ユーザー権限
  3. Github連携用プラグインのインストール/設定
  4. ジョブの作成
  5. ジョブへのユーザー追加
  6. SSH鍵の作成
  7. Jenkins <-> Github連携

■ユーザーの作成
  1. [Manage Jenkins] -> [Configure Global Security]
  2. "Enable security"にチェックを入れると詳細設定が開くので
    1. Security RealmのJenkins's own user databaseを選択
    2. "Allow users to sign up"をチェック
    3. Authorizationの"Project-based Matrix Authorization Strategy"を選択
    4. "admin"と"github"の2つのユーザーを作成("Add")
      1. adminユーザーにはすべての権限を付ける(表右の全チェックアイコンをクリック)
      2. githubユーザーにはOverallのReadのみ付ける
    5. "Save"ボタンで設定保存
"Save"をクリックするとログアウトし、ログイン画面へ飛ばされるので
"Create an account"からログインアカウントを作成する。
作成したアカウントでログイン後、先ほど作成したadminとgithubユーザーのログインアカウントを作成
■ログインアカウントの作成
  1. [Manage Jenkins] -> [Manage Users]
  2. "Create User"からadminとgithubユーザー作成
■Github連携用プラグインのインストール/設定
  1. [Manage Jenkins] -> [Manage Plugins]
  2. "Available"タブをクリック
  3. 次のプラグインをインストール
    • Publish Over SSH Plugin
    • GitHub Plugin
    • GitHub API Plugin
    • Git Plugin
■ジョブの作成
  1. TOPの"create new jobs"からジョブ作成画面へ
  2. ジョブを作成
    1. ジョブ名(プロジェクト名)を入力
    2. "Build a free-style software project"を選択し、"OK"ボタンを押下
■ジョブへのユーザー追加
  1. TOPから先ほど作成したジョブをクリック
  2. メニューの"Configure"をクリックして設定画面へ
  3. "Enable project-based security"をチェック
  4. "admin"と"github"の2つのユーザーを作成("Add")
    1. adminユーザーにはすべての権限を付ける(表右の全チェックアイコンをクリック)
    2. githubユーザーにはJobのReadとBuildを付ける
■SSH鍵の作成
  1. $ cd /var/lib/jenkins/
  2. jenkinsユーザーでssh設定ディレクトリ作成
    $ sudo -u jenkins mkdir .ssh && sudo chmod 700 .ssh/
  3. 鍵作成のため、rootになる(標準では"jenkins"のシェルに入れないため)。
  4. ssh設定ディレクトリへ移動し、鍵作成
    # cd .ssh/ && ssh-keygen -t rsa
    1. 鍵の保存場所を下記のように指定
      Enter file in which to save the key (/root/.ssh/id_rsa): /var/lib/jenkins/.ssh/id_rsa
  5. 鍵の権限をjenkinsに変更
    # chown jenkins:jenkins *
  6. 鍵の確認/Githubへの登録
    1. 鍵の確認
      # cat /var/lib/jenkins/.ssh/id_rsa.pub
    2. Githubの"Deoploy Keys"から確認した鍵を登録
■Jenkins <-> Github連携
Jenkinsサーバー側
  1. Gitからソースを持ってくるディレクトリへ移動
    $ cd /var/lib/jenkins/
  2. jenkinsユーザーでGithubからチェックアウト出来るか確認
    $ sudo -u jenkins git clone git@github.com:hoge/hoge.git~/.ssh/configに記述した場合はgithub.com部分をそのHost名に変更する
  3. Jenkins管理画面のジョブでGit設定
    1. 対象ジョブの"Configure"から、Source Code ManagementのGitを選択
    2. Repository URLにGithubのssh clone urlを入力
Github側
  1. 対象プロジェクトの[Service Hooks]からJenkins (Git plugin)を選択
  2. Jenkins Urlに対象ジョブの"Build Now"リンクを貼り付けて"Update"

■おまけ(Submoduleを使っている場合)
$ sudo -u jenkins git submodule init
Submodule 'app/Plugin/Common' (https://github.com/hoge/submodule.git) registered for path 'app/Plugin/Common'

$ sudo -u jenkins git submodule update

git submodule updateがバージョンが古くて動かなかったので(https://help.github.com/articles/https-cloning-errors)
下記を参考に手動で最新版をインストール
http://takeshiyako.blogspot.jp/2013/01/centos-62git.html

2013年7月29日月曜日

CentOS6.3へのJenkinsのインストール

■リポジトリの取得と公開鍵のインポート
$ sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
$ sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
■JDKのインストールOpenJDKをインストールするため、まず取得出来るバージョンの確認
$ yum list \*java-1\* | grep open

最新版をインストール
$ sudo yum install java-1.7.0-openjdk
$ sudo yum install java-1.7.0-openjdk-devel.x86_64
Installed:
java-1.7.0-openjdk.x86_64 1:1.7.0.9-2.3.7.1.el6_3
java-1.7.0-openjdk-devel.x86_64 1:1.7.0.9-2.3.7.1.el6_3
 
■Jenkinsのインストール
$ sudo yum install jenkins
Installed:
jenkins.noarch 0:1.514-1.1
■Jenkinsの設定(下記の2項目)
$ sudo vi /etc/sysconfig/jenkins
JENKINS_PORT="8080"
JENKINS_ARGS="––prefix=/jenkins"

■Apacheの設定
こんな感じ
$ cat /etc/httpd/conf.d/jenkins.conf
<VirtualHost *:80>
DocumentRoot "/var/lib/jenkins"
ServerName www.hoge.com
ServerAlias www.hoge.com
ErrorLog "/var/log/jenkins/apache-error.log"
CustomLog "/var/log/jenkins/apache-access.log" common
ProxyRequests Off
ProxyPreserveHost on
ProxyPass /jenkins http://127.0.0.1:8080/jenkins
ProxyPassReverse /jenkins http://127.0.0.1:8080/jenkins
<Proxy http://localhost:8080/jenkins*>
Order deny,allow
Allow from all
</proxy>
</VirtualHost>
■Jenkinsの起動
$ sudo service jenkins start

これで、http://www.hoge.com:8080/へアクセス
 


■おまけ①(Jenkinsの常駐化)
$ sudo chkconfig jenkins on

確認
$ /sbin/chkconfig --list | grep jenkins

■おまけ②(jenkinsユーザーのログインシェル設定)
$ sudo usermod -s /bin/bash jenkins

これをしておくとjenkinsユーザーでシェルを実行する時に便利
※ sudo -u jenkinsでも出来るけどメンドイ

2013年4月15日月曜日

GitHubの手習い

# 最初のコミット
git init
git add Test/hello.php
git commit -m 'test'
git remote add origin git
git push -u origin master

# 修正
vi Test/hello.php
git add Test/hello.php
git commit -m 'test2'
git push -u origin master
 

Life

Tech

Play