Social Icons

Pages

Featured Posts

2014年1月28日火曜日

Mac OSX(10.8.5)環境のSubversionで濁点問題を解決する

■Unicodeパッチに対応しているSubversion1.7をbrew経由でインストール

現在の最新は1.8なので、1.7があるリポジトリを追加

$ brew tap homebrew/versions
$ brew info subversion17
--unicode-path
    Include support for OS X UTF-8-MAC filename

インストールの設定を弄って1.7の最新バージョンを持ってくるようにする

$ vi /usr/local/Library/Taps/homebrew-versions/subversion17.rb
Subversion(1.7.13 -> 1.7.14)
- url 'http://www.apache.org/dyn/closer.cgi?path=subversion/subversion-1.7.13.tar.bz2'
- mirror 'http://archive.apache.org/dist/subversion/subversion-1.7.13.tar.bz2'
- sha1 '844bb756ec505edaa12b9610832bcd21567139f1'
+ url 'http://archive.apache.org/dist/subversion/subversion-1.7.14.tar.bz2'
+ mirror 'http://archive.apache.org/dist/subversion/subversion-1.7.14.tar.bz2'
+ sha1 'b35254a844d0b221a3fd8e80974ac75119d77b94'
serf(1.3.2 -> 1.3.3)
- url 'http://serf.googlecode.com/files/serf-1.3.2.tar.bz2'
- sha1 '90478cd60d4349c07326cb9c5b720438cf9a1b5d'
+ url 'http://serf.googlecode.com/files/serf-1.3.3.tar.bz2'
+ sha1 'b25c44a8651805f20f66dcaa76db08442ec4fa0e'
インストール
$ brew install subversion17 --unicode-path

入った・・・が

$ svn --version                                                                                                                 svn: E200019: ra_serf was compiled for serf 1.3.2 but loaded an incompatible 1.2.1 library

serfのバージョンに互換性がないと言われたので、もしかして既に入ってるserfと干渉しているのではと思い

$ brew list | grep serf

したら見つかったので、削除した後再度インストールしたらいけた。

$ brew remove serf
$ brew remove subversion17                                                                                                                                  Uninstalling /usr/local/Cellar/subversion/1.7.10...
$ brew install subversion17 --unicode-path
...
$ svn --version                                                                                                                                                      
svn, version 1.7.14 (r1542130)

■参考

HomebrewでSubversion17をインストールする際のunicode-pathオプションでのエラー対処

http://befool-inc.github.io/blog/2013/09/30/fix-homebrew-subversion17-unicode-patch/

2014年1月27日月曜日

CentOS6.3へqmailをyumインストールしてメールを送るところまで

CentOS6.3へqmailをyumインストールしてメールを送るところまで

デフォルトではqmail用のレポジトリがないので、リポジトリを追加する

■ yumレポジトリの追加

# cd /etc/yum.repos.d/
# wget http://download.opensuse.org/repositories/home:/weberho:/qmailtoaster/CentOS_CentOS-6/home:weberho:qmailtoaster.repo
# mv ”home:weberho:qmailtoaster.repo” qmailtoaster.repo

■qmailと関連ソフトウェアをまとめてyumでインストール

# yum -y install qmail vpopmail daemontools —enablerepo=home_weberho_qmailtoaster
..
 conflicts with postfix

Postfixとコンフリクトしたのでアンインストール

$ yum remove Postfix

一緒に消える依存ソフトウェアにcronie等があるが、後で入るので無視して実行する。

気を取り直してもう一度

# yum install qmail vpopmail daemontools —enablerepo=home_weberho_qmailtoaster
...

Installed:
daemontools.x86_64 0:0.76-5.3 qmail-toaster.x86_64 0:1.03.5-16.1 vpopmail.x86_64    0:5.4.25-4.1

Dependency Installed:
cronie.x86_64 0:1.4.4-7.el6 cronie-anacron.x86_64 0:1.4.4-7.el6 crontabs.noarch 0:1.10-33.el6 libsrs2-0.x86_64 0:1.0.18-1.3 qmail-skel.noarch 0:1-1.3 
ucspi-tcp.x86_64 0:0.88-2.2

入った。

■sendmailクローンでメール送信の互換性を保つ

# rm -f /usr/sbin/sendmail
# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
# ln -s /var/qmail/bin/sendmail /usr/lib/sendmail

■daemontoolsを用いたqmailの起動準備

# mkdir /service
# mkdir /var/qmail/supervise/qmail-smtpd
# mkdir /var/qmail/supervise/qmail-send

※tcpserverとかは入ってた

$ which tcpserver
/usr/bin/tcpserver

$ which tcprules
/usr/bin/tcprules

■SMTPサーバの起動スクリプト(/var/qmail/supervise/qmail-smtpd/run) を作成する 

#!/bin/sh
HOST=foo.example.jp
QUID=`id -u qmaild`
QGID=`id -g qmaild`
exec \
/usr/local/bin/tcpserver \
-H -v -R -c 50 -x /etc/tcp.smtp.cdb \
-l "$HOST" -u "$QUID" -g "$QGID" 0 smtp \
/var/qmail/bin/qmail-smtpd 2>&1

■TCPサーバ用のSMTPの接続制限設定ファイル(tcp.smtp)の設定

/etc/tcp.smtp
127.:allow,RELAYCLIENT=""
218.223.31.12:allow,RELAYCLIENT=""

※tcp.smtp の 変更箇所は tcp.smtp.cdb に反映させる

tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

■qmailサービスの起動

ln -s /var/qmail/supervise/qmail-send /service/qmail-send
ln -s /var/qmail/supervise/qmail-smtpd /service/qmail-smtpd
sleep 5; svstat /service/*; pstree

■自動起動設定をする

CentOS6の場合は/etc/inittabはなく、/etc/init/svscan.conf

下記のファイルを無かったら作って編集する

# vim /etc/init/svscan.conf

-- # svscan - daemontools # # This service starts daemontools from the point the system is # started until it is shut down again.

start on runlevel [2345]
stop on shutdown
respawn
exec /usr/bin/svscanboot
--

■メール送信テスト

$ echo "body" | mail -s "title" <メールアドレス>

参考サイト

yumインストールするとこで参照

http://kyuxyu.tumblr.com/post/7987689646/centos-yum-qmail

設定周り

http://kawa.at.webry.info/200604/article_1.html

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