ゴイサギ日記

東京でエンジニアとして頑張って何とか生きてます。。ゆる~く更新していきます

さくらVPSにGitLabをインストール

環境

さくらVPS:メモリ1GB, HDD100GB
OS:CentOS release 6.9 (Final)
GitLab:Community Edition 9.1.0

1. パッケージインストール

$ sudo yum install curl openssh-server openssh-clients postfix cronie

2. postfix起動

$ sudo service postfix start

エラーが出たので sudo postfix check で原因を調べる

$ sudo postfix check
$ postfix: fatal: parameter inet_interfaces: no local interface found for ::1

どこかで ipv6 の設定がされているのだろうと予想
/etc/hosts に ipv6の設定が残っていたのでコメントアウト

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
# ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
# lokkitはiptablesを書き換えるので注意
# sudo lokkit -s http -s ssh

3. GitLabダウンロード

$ sudo curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash

4. GitLabインストール

$ sudo yum install gitlab-ce
# /etc/gitlab/gitlab.rb の external_url 設定
$ external_url 'http://example.com:8787'

初期ポートが 8787 なので iptables 更新も忘れないように

$ sudo vim /etc/sysconfig/iptables
$ sudo /etc/init.d/iptables restart

設定を適用

$ gitlab-ctl reconfigure
# GitLab再起動
$ gitlab-ctl restart

指定したURLでブラウザからログイン
初期設定は以下になっているのでログインしてパスワードを変更する事
Username : root
Password : 5iveL!fe

5. その他

gitlab-ctlコマンド一覧

# サービス停止
$ gitlab-ctl stop
# 再起動
$ gitlab-ctl restart
# ヘルプ
$ gitlab-ctl help

さくらVPSにssh接続 Mac版

タイトルの通りです。

VPSの初期設定は以下を参考にしました。 tadasy.hateblo.jp

1. [vps]sshディレクトリ作成

$ mkdir /home/hoge/.ssh
$ chmod 700 /home/hoge/.ssh
$ ls -al /home/hoge

2. [mac]公開鍵を作成

最初に鍵の置き場所を聞かれるので以下のように任意のパスを指定 /Users/hoge/.ssh/id_rsa_sakura

$ ssh-keygen -C 'for_sakura'
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/hoge/.ssh/id_rsa): /Users/hoge/.ssh/id_rsa_sakura
Created directory '/Users/hoge/.ssh'.
Enter passphrase (empty for no passphrase):(パスワード入力) 
Enter same passphrase again:(パスワード再入力)
----省略----

3. [mac]公開鍵をvpsに転送

# wwwXXXX.sakura.ne.jpにhogeユーザーで公開鍵を転送
$scp ~/.ssh/id_rsa_sakura.pub hoge@wwwXXXX.sakura.ne.jp:/home/hoge/.ssh

4. [vps]公開鍵を設定

$cd /home/hoge/.ssh
$cat id_rsa_sakura.pub >>  authorized_keys
$chmod 600 authorized_keys
$ls -al
合計 16
drwx------ 2 hoge hoge 4096  423 17:33 2017 .
drwx------ 3 hoge hoge 4096  423 17:33 2017 ..
-rw------- 1 hoge hoge  392  423 16:42 2017 authorized_keys
-rw-r--r-- 1 hoge hoge  392  423 16:41 2017 id_rsa_sakura.pub

5. [mac]ssh接続を設定

ターミナルから ssh sakura で接続できるようにします。

$cd /Users/hoge/.ssh
$vi config
----ここから----
# sakura VPS
Host sakura
  HostName        wwwXXXX.sakura.ne.jp
  IdentityFile    ~/.ssh/id_rsa_sakura
  User            hoge
----ここまで書く----

# 接続確認
$ssh sakura
Last login: Sun Apr 23 18:00:41 2017 from fdafefafea.ap.so-net.ne.jp

SAKURA Internet [Virtual Private Server SERVICE]

6. [vps]sshdの設定をする

#ssh接続でvpsに入る
$ssh sakura

# viでsshdの設定を以下のように変更
$sudo vi /etc/ssh/sshd_config

# ポート変更
Port 10022
# rootで直接ssh接続できないようにする
PermitRootLogin no
# パスワードなしでログイン禁止
PermitEmptyPasswords no
# 鍵認証許可
PubkeyAuthentication yes
# 鍵置き場
AuthorizedKeysFile .ssh/authorized_keys
# パスワード認証を無効化
PasswordAuthentication no

# sshd再起動
$sudo /etc/init.d/sshd restart
sshd を停止中:                                             [  OK  ]
sshd を起動中:                                             [  OK  ]

更にポート番号を変更したのでmacssh設定を以下のように書き換えます。

$cd /Users/hoge/.ssh
$vi config

# sakura VPS
Host sakura
  HostName        wwwXXXX.sakura.ne.jp
  Port            10022 #ポート番号追加

※PermitRootLogin no
VPSコントロールパネルからは rootユーザーとパスワードで入れるが sshでは入れなくなる

※PasswordAuthentication no scpで転送したい時は yes に戻す必要があります。

※Port 10022
デフォルトポート番号 22 は攻撃され易いので セキュリティ面から 10021 〜 65535 で設定しておきます。

7. 最後に

これでさくらvpsMacからssh接続できるようになりました。 複数クライアントで接続したい場合は authorized_keys に 追加したいクライアントの公開鍵を追記すればOKです。 注意:上書きではなく追記です

【Python】備忘録

自分用メモ

リスト内包表記

リスト内包表記が便利なのか面倒なのか良く分からないので取りあえずメモ

コード

# if
list = [n for n in range( 10 ) if n % 2 == 0]
print u'\nif'
print list

# if-else
list = [i if (i % 2 == 0) else str(i) for i in range(10)]
print u'\nif-else'
print list

# loop:zip
print u'\nloop:zip'
list1 = [1,2,3]
list2 = [4,5,6]
for (a, b) in zip( list1, list2 ):
    print a,b

# loop:enumerate
print u'\nloop:enumerate'
list1 = ['a','b','c']
for (i, x) in enumerate( list1 ):
    print i,x

結果

if
[0, 2, 4, 6, 8]

if-else
[0, '1', 2, '3', 4, '5', 6, '7', 8, '9']

loop:zip
1 4
2 5
3 6

loop:enumerate
0 a
1 b
2 c

その他
リスト内包表記によるリスト作成はappendメソッドを呼ばないので
append呼び出しによるリスト作成に比べて実行速度が速い

list = [ i for i tmpList if is_valid_file( i ) ]

クラス

# HogeObjectクラス.
class HogeObject:

    def __init__(self):
        print('コンストラクタやで')
        self.num = 10

    def __del__(self):
        print('デストラクタやで')

    def func()
        print('numは{}やで' . format(self.num))
    
obj = HogeObject() # インスタンス生成.
obj.func() # 「numは10やで」表示.
del obj # インスタンス破棄.

空のクラスを定義する場合は pass を使う

class EmptyClass:
    pass

多値返却

関数の戻り値を複数にすることができる

status, data = hoge_func()
print status
print data
# False
# 15

def hoge_func():
    sum = 5 + 10
    return (True, sum);

辞書で返す事もできる、値が多くなってきたら便利そう

result = hoge_dict()
print result[ 'flag' ]
print result[ 'sum' ]
# True
# 15

def hoge_dict():
   sum = 5 + 10
   return {'flag':True, 'sum':sum }

*args,**kwargs について

関数の引数に指定したリストや辞書を分解して渡すことができる

def hoge_func( a = 0, b = 0, c = 1 )
    return a + b + c

args = [1, 2, 3]
kwargs = {'a':5, 'b':6, 'c':7}

print "none:", hoge_func()
print "*args:", hoge_func(*args)
print "**kwargs:", hoge_func(**kwargs)

# none:1
# *args:6
# **kwargs:18

その他

・tim.clock() はプロセッサのクロックタイムを返す、ベンチマークとかに使う