Debian8(jessie)でiptablesの設定

CentOSのときは、

/etc/sysconfig/iptables

を編集して、

/etc/init.d/iptables start

で再起動することで、iptablesを設定することが出来ましたが、
どうやらDebianは勝手が違う用です。

まずはiptables-persistentをインストール

$ sudo aptitude -y install iptables-persistent

ダイアログが2回出るので、両方共YESです。

設定変更

ファイルは /etc/iptables/rules.v4 またはrules.v6 になります。
まずは/etc/iptables/rules.v4の内容を削除して、書き換えてしまいます。

*filter

# ループバックは許可する。
# ループバック以外の127.0.0.0/8への接続は拒否する。
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT

# 確立済の外部から内部への接続を許可する
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 内部から外部への接続はすべて許可する
-A OUTPUT -j ACCEPT

# 外部から内部へのHTTP(80)とHTTPS(443)の接続を許可する
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
# こんな風に追加します。これはWEBMINのポートです。
-A INPUT -p tcp --dport 10000 -j ACCEPT

# 外部から内部へのSSHの接続を許可する
# ポート番号は、/etc/ssh/sshd_config で設定したものと同じにする
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT

# 外部から内部へのpingの接続を許可する
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

# log iptables denied calls (access via 'dmesg' command)
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

# その他の接続を拒否する
-A INPUT -j REJECT
-A FORWARD -j REJECT

COMMIT

v6の方は使わないので、塞いでおきます。

/etc/iptables/rules.v6

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
COMMIT

再起動・設定変更反映

$ sudo netfilter-persistent reload

これで設定が有効になります。

svnやftpのポートも同じように開けておきます。

 

Debian8(jessie)での自動起動とsvnの起動スクリプト

debianの自動起動にはいつのまにかinsservというのを使うことになっています。

$ sudo insserv -s

こんな感じに表示されます。

K:01:0 1 6:nginx
S:17:2 3 4 5:nginx

ランレベルが2 3 4 5 では起動し、0 1 6では起動しない、ということになります。

サービスへの追加と停止はこうする。

# 追加
$ sudo insserv -d nginx
# 削除
$ sudo insserv -r nginx

insserv に追加されないサービスの時

実はsvnは追加されなかった。
ので、ちょうどよいので、自前で起動スクリプトを作って登録する方法を書いておこう。

通常は/etc/init.dの下に起動スクリプトが生成されます。

svnのは作られなかったので・・・作ってみました。

svnserve というファイル名で/etc/init.dの下に配置しました。

#!/bin/bash
### BEGIN INIT INFO
# Provides:          svnserve
# Required-Start:    $local_fs
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: svnserve
### END INIT INFO

prog=svnserve
pidfile=/var/run/svnserve.pid
#svnserve=/usr/local/subversion/current/bin/svnserve
svnserve=/usr/bin/svnserve
RETVAL=0
ROOT=/var/svn
PORT=3691

start() {
        [ ! -f $pidfile ] || exit 1
        echo -n $"Starting $prog: "
        start-stop-daemon --start --quiet --pidfile $pidfile --make-pidfile --exec $svnserve -- -d -r $ROOT --listen-port $PORT
        RETVAL=$?
        echo start svnserve
        return $RETVAL
}

stop() {
        [ -f $pidfile ] || exit 1
        echo -n $"Stopping $prog: "
        start-stop-daemon --stop --exec $svnserve
        rm -f $pidfile
        RETVAL=$?
        echo stop svnserve
        return $RETVAL
}

# See how we were called.
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    status)
        status $svnserve
        RETVAL=$?
        ;;
    restart)
        stop
        start
        ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart}"
        RETVAL=1
esac

BEGIN INIT INFO という節がはじめに必要です。
起動させたいランレベルを書いておきます。通常は丸々コピーで良いでしょう。
また
ROOT=/var/svn
PORT=3691

と言う変数を用意して、ルートパスとポート番号を指定できるようにしました。
apacheをいれないつもりなのでhttp経由での接続は不可であるため、デフォルトの3690番は使わないほうがいいだろうとおもいます。

登録は簡単です。

$ sudo insserv?svnserve

削除はこうです。

$ sudo insserv?-r svnserve

確認はこう

$ sudo find /etc |grep svnserve
/etc/rc3.d/S01svnserve
/etc/rc4.d/S01svnserve
/etc/rc1.d/K01svnserve
/etc/rc2.d/S01svnserve
/etc/rc5.d/S01svnserve
/etc/rc6.d/K01svnserve
/etc/rc0.d/K01svnserve

 

試しに再起動してみて、ちゃんと起動しているか確かめます。

起動ユーザーはrootになりますよ。

Debian8(jessie)でsubversion(svn)をセットアップ

svnも移行しなきゃならないです。
本当はapacheでhttp接続できるようにしたいところですが、nginxでは無理そうなので、
svn://?
でつなぐ方向で諦めることにしました。

インストール

$ sudo apt-get install subversion

これだけです。

設定

リポジトリを作ってその中の設定ファイルを編集していきます。
/var/svn にtestという名前のリポジトリを作ります。

$ sudo mkdir /var/svn
$ cd /var/svn
$ sudo svnadmin create test

権限はデーモンを起動させたユーザーにすればいいようです。

$ sudo chown -R svn:svn test

コミットする時のユーザーとパスワードを設定します。
このユーザーはシステムに存在する必要はないようです。迷う部分ですね。

$ sudo vi /var/svn/conf/passwd
[users]
test = test

書式は
ユーザー名 = パスワード
です。

$ sudo vi /var/svn/conf/svnserve.conf

以下の3行をコメントを外して生かします。

anon-access = read
auth-access = write
password-db = passwd

サービスを起動

デーモンとして起動させます。
上にも書きましたが、起動させたユーザーの書き込み権限でリポジトリにアクセスしますので注意です。

$ svnserve -d

リポジトリのURLはこうなります。
この場合はパスはルートから書きます。

 

リポジトリのルートを指定したり、ポートを変更するにはこうします。

svnserve -d -r /var/svn --listen-port 3691

リポジトリURLは以下のようになります。ポート番号を:でつければいいです。

さらに、複数リポジトリを設定したい場合は複数のリポジトリを置くだけです。

svn://192.168.26.149:3691/test1
svn://192.168.26.149:3691/test2
svn://192.168.26.149:3691/test3

こんな感じで。

新しく起動させるにはkillしてプロセスを停止させないと2重3重起動になってしまいます。
起動スクリプトを使うべきですが、通常/etc/init.dにインストールされるはずの起動スクリプトはインストールされませんでした。

リポジトリの移行

バックアップ、リストア、と言う専用のコマンドがあるのですが、
試しにごっそりコピーしてみた所普通に移行が可能でした。
自分だけでしか使ってないという場合には、tarで固めて持っていくだけで良さそうです。

 

Debian7(wheezy)をDebian8(jessie)にアップグレード。ついでにPHP7もインストール

本来はDebian8(jessie)を新規でインストールした方がいいに決まっているのですが、DTIの方で提供されていないのですから仕方ありません。

こちら

を参考にさせていただきました。
ただし、この方法では駄目みたいですよ。

ここ

にありますようにSystemdが邪魔して起動しなくなってしまうようです。
この件はまたあとで書くとして、まずはVMWareにて実験をしてみました。

 

まずはsudoとsshの設定

インストールしたてはまずはsudoとsshの設定ですね。

sudo

ルートになって作業します。

# vi /etc/sudoers
user ALL=(ALL:ALL) ALL

これでuserでsudoが使えるようになります。

ssh

$ sudo apt-get install ssh

$ sudo vi /etc/ssh/sshd_config

PermitRootLogin yes
↓
PermitRootLogin no

Port 22
↓(任意の番号に変更)
Port 9999

$ sudo service ssh restart

Debian7(wheezy)をDebian8(jessie)にアップグレード

1./etc/apt/sources.listを編集

もとにあったのはコメントにしてこれを追加します。

deb http://ftp.riken.jp/Linux/debian/debian/ jessie main
deb-src http://ftp.riken.jp/Linux/debian/debian/ jessie main

deb http://security.debian.org/ jessie/updates main
deb-src http://security.debian.org/ jessie/updates main

# jessie-updates, previously known as ‘volatile’
deb http://ftp.riken.jp/Linux/debian/debian/ jessie-updates main
deb-src http://ftp.riken.jp/Linux/debian/debian/ jessie-updates main
# PHP 7
deb http://packages.dotdeb.org jessie all

ついでにPHP7をインストールするためのリポジトリも追加しておきます。

 

2.apt-get update

警告が出た場合

apt-get install debian-archive-keyring

を実行します。VMWareでは警告が出ませんでした。

3.apt-get dist-upgrade

 

で、結構時間がかかりますが、アップグレードされます。
serversman@vps錠では関係ありませんが、結構UIも変わりますね。

バージョンを確認するにはこうします。

$ cat /etc/issue
Debian GNU/Linux 8 \n \l

 

PHP7をインストール

Debian8(jessie)に無事アップグレードできたらPHP7をインストールします。

 

1.dotdebのリポジトリの鍵情報をダウンロードして追加

$ wget https://www.dotdeb.org/dotdeb.gpg
$ sudo apt-key add dotdeb.gpg

 

2.インストール確認

$ sudo apt-get update

-sオプションを使って、php7がインストールできるようになったか確認します。

$ sudo apt-get -s install php
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが新たにインストールされます:
php
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
Inst php (1:7.0+42-1~dotdeb+8.1 packages.dotdeb.org:jessie [all])
Conf php (1:7.0+42-1~dotdeb+8.1 packages.dotdeb.org:jessie [all])

 

3.インストール

php7を単独でインストールしようとするとapache2も入ってしまうそうです。
なので、こうします。ついでに、あとでwordpressをインストールするためのモジュールもいれてしまいましょう。

$ sudo apt-get install php7.0 php7.0-fpm php7.0-mysql php7.0-mbstring php7.0-xml php7.0-gd php7.0-curl

 

4.バージョン確認

バージョン確認して、おしまい!

$ php -v
PHP 7.0.25-1~dotdeb+8.1 (cli) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.0.25-1~dotdeb+8.1, Copyright (c) 1999-2017, by Zend Technologies

DTIのServersMan@VPSのDebian7ではPHP7がはいらないみたい

色々迷ってDebianだーときめて、とりあえずVMwareにインストールしてみたのだけど、
Debianってすでにバージョン9になっているのに、
提供されているのは7までなんですよね。

試しにVMWareに、Debian7(wheezy)をインストールしてみると、すぐに困ったことが起きました。
PHP7が上手くインストールできない!のです。

“Debian php7″のように検索するとDebian8(jessie)の情報が出てきてしまいます。

Debian8(jessie)のphp7のインストール方法を試す

以下を参考に・・・

ざっと以下の手順です。

1./etc/apt/sources.list に http://packages.dotdeb.org を追加

# PHP 7
deb http://packages.dotdeb.org jessie all

2. 鍵情報をダウンロードして追加

$ sudo wget https://www.dotdeb.org/dotdeb.gpg
$ sudo apt-key add dotdeb.gpg

3.?apt-get update

4.?apt-get install php

残念ながら、Debian7(wheezy)で行ってもinstallでエラーになってしまいます。
sources.listがjessieになっているのが問題かと思い、wheezyに変えてみましたが、そういう問題では無いようでNGでした。

Debian7(wheezy)をDebian8(jessie)にアップグレードしてしまえば?

どうやら、DTIのServersman@vpsをDebianで使っている方はDebian8(jessie)にアップグレードして使っている方が多いようです。ちなみに最新は9なのですが、サーバー構成に問題があるようでアップグレードは不可能なようです。

というわけで、まずはVMWareでDebian7(wheezy)をDebian8(jessie)にアップグレードの実験を行いました。