初めてのGit

VPS側で初回だけ行う作業

  1. VPS側にGitをインストール
  2. Git専用のユーザを追加 ホームディレクトリ作るオプションつける

プロジェクトごとに行う作業

  1. mkdir [プロジェクト名].gitを作製
  2. cd [プロジェクト名].git
  3. git –bare init –shared

ローカル側で初回だけ行う作業

Mac側の .ssh/configにそのユーザでアクセス出来るようにHostを追加 (例えばgitなどとする ポート番号とか指定忘れずに)

プロジェクトごとに行う作業

  1. cd [プロジェクト名]
  2. git init
  3. git add .
  4. git commit -m “first commit”
  5. git remote add origin ssh://Host名/home/VPSのGitユーザ名/プロジェクト名.git
  6. git push origin master

これでローカルのリポジトリをリモートリポジトリに保存出来る。

カテゴリー: Git

python3.4 and mysql-connector install on MacOS X mavericks

python.orgの公式サイトからpython3.4 インストーラパッケージをダウンロード、インストール。
python3からmysql-connectorを使ってmysqlデータベースに接続したかったので、mysql-connectorのインストーラじゃなくて公式サイトからSelect platformでPlatform independentを選択し、ダウンロード、解凍。
cd mysql-connector-python-1.1.7
sudo python3 setup.py install
でインストール完了。

hogehoge% python3
Python 3.4.0 (v3.4.0:04f714765c13, Mar 15 2014, 23:02:41)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type “help”, “copyright”, “credits” or “license” for more information.
>>> import mysql.connector
>>> exit()
importでエラーでなければインストール完了。

zabbixを稼働させるために mariadbの準備

zabbix-server-mysqlがインストール完了していること。
mariadbはwordpressを動かすために必要なので入っているはず。入っていなければインストールし、mysql_secure_installationも実行。その後、zabbixというデータベースを作製し、zabbix@localhost ユーザを作製。パスワードをセット。

mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 13
Server version: 5.5.34-MariaDB-log MariaDB Server
...
MariaDB [(none)]> create database zabbix;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'hogehogepasswd';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> exit
Bye

データベースへの初期データのインポートをする必要がある。zabbixのバージョン1.8のマニュアルとは異なったディレクトリにあるので注意。zabbixの最新版をwebサイトからwgetしてきて、カレントユーザのディレクトリにて解凍。
database->mysqlのディレクトリに初期化用のスキーマと初期データをインポートする。

wget  http://prdownloads.sourceforge.net/zabbix/zabbix-2.2.0.tar.gz
tar xzvf zabbix*
cd zabbix-2.2.0


mysql -uzabbix -p zabbix < ./database/mysql/schema.sql
Enter password: ←データベースユーザーzabbixのパスワードを入力
mysql -uzabbix -p zabbix < ./database/mysql/images.sql
Enter password: ←データベースユーザーzabbixのパスワードを入力
mysql -uzabbix -p zabbix < ./database/mysql/data.sql
Enter password: ←データベースユーザーzabbixのパスワードを入力

zabbix_server.confにセットしたデータベースのデータベース名、ユーザ名、パスワードなどを設定する。

sudo vim /etc/zabbix/zabbix_server.conf
DBHost:localhost
DBName=zabbix
DBUser=zabbix
DBPassword=hogehogepasswd

nginx,php-fpmをインストールしたら,
/etc/nginx/conf.d/zabbix.confを適宜編集。
/etc/nginx/nginx.confでinclude忘れずに。
/etc/php/php.ini でopen_basedir の設定を忘れずに。

sudo systemctl start nginx
sudo systemctl start php-fpm

動かなかったら、sudo systemctl status <動かないデーモンのプロセス名> -l でエラーログのチェック。

zabbixをインストールする

サーバの監視用ツールとしてzabbixをインストールするテスト。

sudo pacman -S base-devel

fakeroot strip libなど開発ツールをまとめてインストールすれば入る。Archlinux用のパッケージは公式サイトに準備されていないので、AURからインストールすることになる。
まずはAURの環境を整える。
https://wiki.archlinux.org/index.php/Yaourt_(日本語)
/etc/pacman.confに以下の行を追加してarchlinuxfr リポジトリを有効にする。

[archlinuxfr]
SigLevel = Never
Server = http://repo.archlinux.fr/$arch

追加して保存したら、以下を実行。

sudo pacman --sync --refresh yaourt

yaourt iksemel
yaourt zabbix-server-mysql
sudo vim /etc/zabbix/zabbix_server.conf
sudo vim /etc/zabbix/zabbix_agentd.conf

Log fileの保存場所に書き込み権限がないと怒られるので、適宜 /var/log/zabbix/zabbix-server.logなどにパスを修正

sudo systemctl enable zabbix-server.service
sudo systemctl enable zabbix-agentd.service

でデーモンを有効にする。

sudo systemctl status zabbix-server -l
sudo systemctl status zabbix-agentd -l

でサーバとagentはlistenerが3プロセスぐらい起動していればzabbixのサービスは立ち上がっているはず。
デフォルトではapacheが必要だが、webサーバとしてはnginxを使用しているのでそのへんの調整がまだ必要。

archlinuxをVirtualBoxにインストール(1)

VirtualBoxはOral謹製の仮想環境。ホストとしてWindows,Mac,Linux,Solarisに対応し無料で使える。
2013年8月現在のarchlinuxのインストールはisoイメージはあるが、OSインストールはほとんど手動で行うのでそのための練習メモ。
VirtualBoxのダウンロード先はこちら
archlinuxのダウンロード先はこちら
下の方のJapan→jaist.ac.jp当たりからダウンロードすれば良いだろう。2013年9月現在の最新版は
archlinux-2013.09.01-dual.isoである。archlinuxのisoイメージは毎月更新されるらしいので、最新版はここを必ず確認すること。

VirtualBoxをダウンロード出来たらインストールし、最初にしておくべき設定は、環境設定メニューからネットワークタブを開き、右側の+ボタンをクリックしホストオンリーネットワークを追加しておくこと。
vboxnet0が追加される。これをしておくとホストOSのターミナルからsshで接続して作業がやりやすくなるし、archlinux上でwebサーバなどを構築した後にテストしやすい。

Oracle VM VirtualBoxマネージャの新規をクリック。名前にArchとか入れると自動でOSタイプが認識される。
以降は、

  • メモリサイズ:1024MB
  • ハードドライブ:仮想ハードドライブを作成する
  • ハードドライブのファイルタイプ:VDI
  • 物理ハードドライブにあるストレージ:可変サイズ
  • ファイルの場所とサイズ:8GB

作成をクリック。
マネージャ画面で設定タブをクリック。ネットワークタブで
アダプタ2
ネットワークアダプタを有効化
割当:ホストオンリーアダプタ
名前:vboxnet0
次にストレージタブ。
ストレージツリーのコントローラ:IDEのCDアイコン 空をクリック。
属性のCDアイコンをクリック 仮想CD/DVDを選択から先ほどのarchlinuxのisoイメージを選択
OKボタンクリックで準備完了。ここまで設定完了するとマネージャ画面は下のようになっているはず。
VBManagerInfo

起動ボタンで起動後、Boot Arch Linux x86_64を選択してリターンでisoイメージからブートする。
automatic loginでrootにログインし、入力待ちになるので、

# loadkeys jp106
# passwd
# systemctl start sshd
# ip addr

IP アドレスは2つ確認できるはず。192.から始まるIPアドレスはホストからアクセス可能なIPアドレスなので(筆者の環境では192.168.56.102だった)ホストのターミナルから

iMac:~ hiro$ ssh root@192.168.56.102
The authenticity of host '192.168.56.102 (192.168.56.102)' can't be established.
RSA key fingerprint is cc:c2:63:20:9a:dd:62:fe:39:c6:bd:55:d7:7a:69:01.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.56.102' (RSA) to the list of known hosts.
root@192.168.56.102's password:

でログイン。何度もインストールトライして同じプライベートIPになってしまうと、sshで接続する際にRSA Key が違うよと怒られることがあるが、その場合はホストPCの
~/.ssh/known_hosts
を編集して該当IPの一行を削除すると良い。

まずはパーティション作製

# cgdisk /dev/sda

GPTパーテションでgrubブートローダを使用するため、パーティションはcgdiskを使う。
(VirtualBoxのゲストOSはUEFIではなく、BIOSモードで起動する)
注意点だが、パーティションに1007KiBの領域で、かつ、type:ef02のBIOS Boot partitionを作成する必要がある。cgdiskは何かパーティションを作ると勝手に1007KiBをfree spaceとして確保するので、最後にtype設定を行う。
これを忘れると、grub-installで失敗してまたパーティションからやり直すハメになる。
linux partitionは/boot (100M)と / (残り全部)に分けた。ここはお好みで。
cgdiskを起動したら
・[New]
・first sector:このままリターン
・サイズを 100M で入力
・タイプはデフォルト値でそのままリターン linux partitionになる。
名前は bootとでも入れておく。 名前はなくても良い。
次も
・[New]
・first sector:このままリターン
・size:このままリターン
・タイプ:このままリターン
・名前: / 入力。 名前はなくても良い。
cgdiskは一番上に1007Kibのfree スペースが取られるので、最後にこの部分を選択
・[New]
・first sector: そのままリターン
・last sector: そのままリターン
タイプのところだけ注意。ef02 を入力。 名前は不要。
以上を実行すると下記の画面になるはずなのでその後[Write][Quit]でパーティションは終了。cgdisk_bios_type_set
フォーマット & マウント

# mkfs.ext4 /dev/sda2 && mkfs.ext4 /dev/sda1
# mount /dev/sda2 /mnt
# mkdir /mnt/boot
# mount /dev/sda1 /mnt/boot

pacman mirrorlistの編集とpacstrapで最小限のインストール
mirrorlistでは以下の行をファイルの最上段に持ってくる。
Server = http://ftp.tsukuba.wide.ad.jp/Linux/archlinux/$repo/os/$arch
Server = http://ftp.jaist.ac.jp/pub/Linux/ArchLinux/$repo/os/$arch
ちなみに上のサーバーはインストール完了後、reflectorをインストールし
パッケージを提供してくれるサーバにおいて、日本国内の最速サーバを取ってきたもの。
# reflector –verbose –country Japan -l 200 -p http –sort rate –save /etc/pacman.d/mirrorlist
の実行の結果得られたものである。

エディタは便利なのでvim,ssh接続のためopenssh,ネットワークのお手軽設定のためnetworkmanagerを入れておく。

# nano /etc/pacman.d/mirrorlist
# pacstrap /mnt base base-devel vim openssh networkmanager

genfstabしてch-root

# genfstab -U -p /mnt >> /mnt/etc/fstab
# arch-chroot /mnt /bin/bash

ロケールの設定

# vim /etc/locale.gen

/etc/locale.genを編集して
#en_US.UTF-8
#ja_JP.UTF-8
の行頭をアンコメントするだけ。その後以下のコマンドは下の行までcopy & pasteで大丈夫なはず。ホストネームは適宜自分の好みに書き換えるべし。最下行でrootのパスワード設定。

# locale-gen
# echo LANG=en_US.UTF-8 >> /etc/locale.conf
# echo KEYMAP=jp106 >> /etc/vconsole.conf
# ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
# hwclock --systohc --utc
# echo Arch >>  /etc/hostname
# mkinitcpio -p linux
# passwd

ブートローダのインストール & 設定

# pacman -S grub-bios
# grub-install --recheck /dev/sda
Installation finished. No error reported.

この後のgrub-mkconfigの際に注意。この記事を修正した2013年12月7日の時点でのgrub-biosのバージョンは
grub-1:2.00.1282.g5ae5c54-1
であり、grub-mkconfigの実行時に
error: out of memory.
error: syntax error.
error: Incorrect command.
error: syntax error.
を吐いてしまう。そこで、

vim /etc/default/grub
GRUB_DISABLE_SUBMENU=y //この行を最後に追加して保存終了。
# grub-mkconfig -o /boot/grub/grub.cfg
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-linux
Found initrd image: /boot/initramfs-linux.img
done

ネットワークの自動設定
archlinuxらしくないと言われればそれまでだが、お手軽ネットワーク設定。ただし、他のネットワークモジュールとコンフリクトするらしいので、詳細はwikiの英語版を確認のこと。日本語版にはイーサネットをダウンさせろとか書いてあるが、これをやるとsshが切れてしまい、その後の操作が出来ない(からやってはいけない)。NetworkManagerはインストールの時はすべて小文字だけど、サービス名はNetworkManager.serviceだから気をつけること。

# systemctl enable sshd.service
# systemctl enable NetworkManager.service
# exit
# umount /mnt/{boot,}
# shutdown -h now

VirtualBoxマネージャウィンドウの設定ボタンからストレージタブを選択、CD/DVDアイコンをクリックして仮想ドライブからisoを除去してから再起動する。

VirtualBoxのコンソールからrootでログインして、

# ip addr

でプライベートIPアドレスを確認し、もしインストール時のIPアドレスと同じだとホストマシンからsshで接続の時に
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

のメッセージが出て接続できないので、この場合はホスト側のターミナルで

# vim ~/.ssh/known_hosts

を編集し、該当するプライベートアドレスの行を dd で削除、:wqで保存終了。最後にホストOSのターミナルで

# ssh root@192.168.56.102

でログイン出来るはず。
一般ユーザの追加等は次回に。

実はレンタルサーバ引っ越ししてました

raspberry piを弄るようになってから、少しだけlinuxが身近になった私。最初にraspberry piにインストールしたのはraspbianというDebian系のOS。
もっさり感はCPUの性能がアレだからと諦めていたのだが、Arch linuxは早いぞとグーグル様からご神託。
raspberry piはArch linux載せたのだが、使いたい mongodbがうまくコンパイルできない。いや、コンパイルは長時間かかって出来るのだが、mongoimportで全く原因不明のエラーが出る。
仕方がないので、Debian入れたり、Cent入れたり遊んでいた自作PCにArch linux入れてmongodb動かしたらあっさり動くじゃないか。でも、自作PCは速いグラフィックカード積んでるから24時間休みなしで稼働したら電気代がorz.

そこで、ふと広告が目に止まった。940円/月でroot権限付きのVPSレンタルサーバ。今まで契約していたレンタルサーバはroot権限ないから、Node.js入れたいと思ってもままならない。
でも、rootどころかOSも自由に入れられて、今のレンタルサーバよりちょっとランニングコストが安いとなれば、移動しない手はなかろう。
そこで、
さようならxserver。どうぞよろしく、お名前.com VPS(KVM)。xserverはメール設定変更しなきゃならない義父のアカウントを残して、全て引越し完了。
事の顛末はまた次回。

カテゴリー: VPS

Arch linux 一般ユーザの追加 ssh接続設定

操作はArch linuxマシンではなく、Macからターミナルで行う。

$ ssh root@192.168.0.10
The authenticity of host '192.168.0.10 (192.168.0.10)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.10' (RSA) to the list of known hosts.
root@192.168.0.10's password: 
Last login: Fri Aug 23 23:27:31 2013

この時点で接続できなかったら、
・Mac側の ~/.ssh/known_hostsを確認して接続したいIPアドレスの古いfinger printを削除
・Arch側ターミナルで

# ip addr
# systemctl status sshd

でIPアドレスとsshdがスタートされていることを確認すること。

いちいちIPアドレスを入力するのは面倒なので、公開鍵を登録し、パスワード無しでログインするため
以下の作業を行う。
公開鍵はmac_pro_rsa.pubとして作成済みとする。やり方が分からなかったらググりましょう。

Archに追加するユーザ名は hogehogeとする。

$ nano ~/.ssh/config

Host arch
HostName 192.168.0.10
Port 22
IdentityFile ~/.ssh/mac_pro_rsa
User hogehoge

IdentityFileは秘密鍵の場所を指定する。

$ ssh root@192.168.0.10
root@192.168.0.10's password: 
Last login: Fri Aug 23 23:29:37 2013 from 192.168.0.3
# useradd -m -g wheel hogehoge
# passwd hogehoge
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully

Archにログインしたら、一般ユーザとしてhogehogeを作製。
いずれsudoが実行できるようにwheelグループに入れておく。

公開鍵を転送する

$ scp ~/.ssh/mac_pro_rsa.pub hogehoge@192.168.0.10:/home/hogehoge
hogehoge@192.168.0.10's password: 
mac_pro_rsa.pub                               100%  404     0.4KB/s   00:00    
$ ssh hogehoge@192.168.0.10
hogehoge@192.168.0.10's password: 
$ ls
mac_pro_rsa.pub
$ mkdir .ssh
$ chmod 700 .ssh
$ cat mac_pro_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys

.sshディレクトリや中のファイルは適切にアクセス権を変更しておこう。

$ ssh arch
Last login: Fri Aug 23 23:39:06 2013 from 192.168.0.3

以上の作業が無事終了したら、Macのターミナルから ssh archとやるだけで、ログイン出来るようになる。

パスワードでのログインを無効にしておく

# vim /etc/ssh/sshd_config

PasswordAuthentication yes
#RSAAuthentication yes
#PubkeyAuthentication yes

PasswordAuthentication no
RSAAuthentication yes
PubkeyAuthentication yes

# systemctl restart sshd

hogehogeユーザが sudoを実行できるように

# visudo

# %wheel ALL=(ALL) ALL

%wheel ALL=(ALL) ALL
のようにコメントを外す。

UEFIシェルの起動

実はArch linuxに辿り着く前に、DebianとかCent OSとか色々試してみた私。良く解らないままにインストールCDの指示に沿ってインストールしていくと、Bootデバイスの選択画面にブートローダの残骸が…

GYGABITEのマザーボードを使っているのだが、ボードのBIOS設定画面にNVRAMの編集画面など見当たらない。

散々検索かけて、UEFIシェルを起動できればいいと分かった。

でも、灯台下暗し。UEFIシェルはArch linuxのインストールCDの起動時にメニューで選択できるようになっていたよ。ちなみに2013年7月のインストールCDです。

Shell>bcfg boot dump -v

で一覧。

Shell> bcfg boot rm 3

でブートオプション3のメニューを削除できた。すっきり。