2018年3月31日土曜日

VagrantでJupyter LabとMySQLをインストールした仮想マシン(Debian Stretch/9.3)を構築する

Jupyter Labでインタラクティブなコンピューティング環境を提供する事ができます。
以下のVagrantfileで、Jupyter LabとMySQLをインストールした仮想マシンを構築する事ができます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/debian-9.3"
  config.vm.hostname = "db93jupyterlabmysql"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "db93jupyterlabmysql"
     vbox.cpus = 2
     vbox.memory = 2048
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
config.vm.network "private_network", ip: "192.168.55.107", :netmask => "255.255.255.0"
config.vm.network "public_network", ip:"192.168.1.107", :netmask => "255.255.255.0"
  config.vm.provision "shell", inline: <<-SHELL
apt-get -y install task-japanese
sed -i -e 's/# ja_JP.UTF-8 UTF-8/ja_JP.UTF-8 UTF-8/' /etc/locale.gen
locale-gen
update-locale LANG=ja_JP.UTF-8
localectl set-locale LANG=ja_JP.UTF-8
localectl set-keymap jp106
apt-get update
#DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade


# install mysql
wget https://dev.mysql.com/get/mysql-apt-config_0.8.9-1_all.deb
export DEBIAN_FRONTEND=noninteractive
echo mysql-apt-config mysql-apt-config/enable-repo select mysql-5.7-dmr | sudo debconf-set-selections
dpkg -i mysql-apt-config_0.8.9-1_all.deb
apt-get update
apt-get -y install mysql-server
mysql -uroot -e "CREATE DATABASE test DEFAULT CHARACTER SET utf8;"
mysql -uroot -e "CREATE USER test@localhost IDENTIFIED BY 'test';"
mysql -uroot -e "GRANT ALL PRIVILEGES ON test.* TO 'test'@'localhost';"
mysql -uroot -e "FLUSH PRIVILEGES;"
mysql -utest -ptest test -e "create table messages (message_id integer not null, message varchar(100));"
mysql -utest -ptest test -e "insert into messages value (1, 'hello world.');"
mysql -utest -ptest test -e "insert into messages value (2, 'test message.');"

# install anaconda
wget https://repo.continuum.io/archive/Anaconda3-5.1.0-Linux-x86_64.sh
chmod +x Anaconda3-5.1.0-Linux-x86_64.sh
./Anaconda3-5.1.0-Linux-x86_64.sh -b -p /opt/anaconda
source /opt/anaconda/bin/activate
pip install --upgrade pip
pip install jupyterlab

# install mysqlclient
apt-get -y install libmysqlclient-dev
pip install mysqlclient

useradd py
mkdir -p /home/py
chown -R py:py /home/py
sudo -u py bash -c "mkdir /home/py/.jupyter"
sudo -u py bash -c "cat << EOF > /home/py/.jupyter/jupyter_notebook_config.py
conf = get_config()
conf.NotebookApp.ip = '*'
conf.NotebookApp.open_browser = False
conf.NotebookApp.port = 8080
conf.NotebookApp.token = 'jupyter'
EOF"

cat << EOF > /etc/systemd/system/jupyter.service
[Unit]
Description=Jupyter notebook
[Service]
Type=simple
ExecStartPre=source /opt/anaconda/bin/activate
ExecStart=/opt/anaconda/bin/jupyter lab
User=py
Group=py
WorkingDirectory=/home/py
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl enable jupyter
sudo systemctl start jupyter

echo 'access -> http://192.168.55.107:8080/?token=jupyter'
SHELL
end

○動作確認用コード
import MySQLdb

con = MySQLdb.connect(
  user='test',
  passwd='test',
  host='localhost',
  db='test')

try:
  cur= con.cursor()
  sql = "select message_id, message from messages"
  cur.execute(sql)

  for row in cur.fetchall():
    print(row)

except MySQLdb.Error as er:
    print('MySQLdb.Error:', er)
cur.close
con.close

〇Jupyter Labの画面

DockerでPiwigo、MariaDBがインストールされたコンテナのイメージ(Alpine3.7)を作成する

Piwigoで写真や画像を管理することができます。
以下の手順で、Piwigo、MariaDBのコンテナを構築・実行します。

○構築方法
1. Piwigoイメージの作成(Dockerfileがあるフォルダで実行)
docker build -t piwigo .

Dockerfile
FROM alpine:3.7
WORKDIR /
RUN  apk update \
  && apk add --no-cache apache2 php7-apache2 php7 php7-mysqli php7-mbstring php7-session php7-curl php7-json php7-xml php7-zip php7-ctype php7-dom php7-simplexml php7-iconv php7-tokenizer php7-exif php7-gd openssl openrc \
  && rm -rf /var/cache/apk/* \
  && wget -O piwigo.zip http://piwigo.org/download/dlcounter.php?code=latest \
  && unzip piwigo.zip \
  && rm -f piwigo.zip \
  && mkdir /opt \
  && mv piwigo /opt/piwigo \
  && chown -R apache:apache /opt/piwigo \
  && ln -s  /opt/piwigo /var/www/localhost/htdocs \
  && mkdir -p /run/apache2 \
  && sed -i -e 's/max_execution_time = 30/max_execution_time = 200/' /etc/php7/php.ini \
  && sed -i -e 's/post_max_size = 8M/post_max_size = 100M/' /etc/php7/php.ini \
  && sed -i -e 's/upload_max_filesize = 2M/upload_max_filesize = 20M/' /etc/php7/php.ini \
  && sed -i -e 's/memory_limit = 128M/memory_limit = 256M/' /etc/php7/php.ini
EXPOSE 80
VOLUME /opt/piwigo
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

2. PiwigoとMariaDBコンテナの構築・実行(docker-compose.ymlがあるフォルダで実行)
docker-compose up -d

docker-compose.yml
version: "2"
services:
  piwigo:
    image: piwigo
    container_name: "piwigo"
    volumes:
      - "piwigo-data:/opt/piwigo"
    ports:
      - "80:80"
    depends_on:
      - db
  db:
    image: mariadb:10.3
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    container_name: "piwigo-db"
    volumes:
      - "db-data:/var/lib/mysql"
    ports:
      - "3306:3306"
    environment:
        MYSQL_DATABASE: piwigo
        MYSQL_ROOT_PASSWORD: piwigo
volumes:
  db-data:
    driver: local
  piwigo-data:
    driver: local

3. ブラウザからhttp:///piwigo/にアクセスして、以下の項目を入力します。
ホスト:db
ユーザー:root
パスワード:piwigo
データベース名:piwigo
管理者ユーザの設定は任意入力します


○Piwigoの画面



○関連情報
・Piwigoに関する他の記事はこちらを参照してください。

2018年3月30日金曜日

VagrantでJupyter LabとApache Cassandraをインストールした仮想マシン(Ubuntu16.04)を構築する

Jupyter Labでインタラクティブなコンピューティング環境を提供する事ができます。
以下のVagrantfileで、Jupyter LabとApache Cassandraをインストールした仮想マシンを構築する事ができます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/ubuntu-16.04"
  config.vm.hostname = "ub1604jupyterlabcassandra"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "ub1604jupyterlabcassandra"
     vbox.cpus = 2
     vbox.memory = 4096
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
config.vm.network "private_network", ip: "192.168.55.101", :netmask => "255.255.255.0"
config.vm.network "public_network", ip:"192.168.1.101", :netmask => "255.255.255.0"
  config.vm.provision "shell", inline: <<-SHELL
# update packages
apt-get update
#DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
locale-gen ja_JP.UTF-8
localectl set-locale LANG=ja_JP.UTF-8


# install cassandra
apt-get -y install curl
echo "deb http://www.apache.org/dist/cassandra/debian 311x main" >> /etc/apt/sources.list.d/cassandra.sources.list
curl https://www.apache.org/dist/cassandra/KEYS | apt-key add -
apt-get update
apt-get -y install cassandra

# 認証の構成
sed -i -e 's/authenticator: AllowAllAuthenticator/authenticator: PasswordAuthenticator/' /etc/cassandra/cassandra.yaml
systemctl enable cassandra.service
systemctl start cassandra.service

# テスト実行
cat << EOF > /home/vagrant/sample.cql
create keyspace mykeyspace with replication = {'class':'SimpleStrategy', 'replication_factor':1};
use mykeyspace;
create table mytable (
name text PRIMARY KEY,
value text
);
insert into mytable (name, value) values ('test1', 'cassandra');
select * from mytable;
EOF

# 9042ポートでlistenするまで待つ.
while netstat -lnt | awk '$4 ~ /:9042$/ {exit 1}'; do sleep 10; done
sleep 10

cqlsh -u cassandra -p cassandra -f /home/vagrant/sample.cql

# install anaconda & jupyterlab
wget https://repo.continuum.io/archive/Anaconda3-5.1.0-Linux-x86_64.sh
chmod +x Anaconda3-5.1.0-Linux-x86_64.sh
./Anaconda3-5.1.0-Linux-x86_64.sh -b -p /opt/anaconda
source /opt/anaconda/bin/activate
pip install --upgrade pip
pip install jupyterlab

# install cassandra driver
pip install cassandra-driver


useradd py
mkdir -p /home/py
chown -R py:py /home/py
sudo -u py bash -c "mkdir /home/py/.jupyter"
sudo -u py bash -c "cat << EOF > /home/py/.jupyter/jupyter_notebook_config.py
conf = get_config()
conf.NotebookApp.ip = '*'
conf.NotebookApp.open_browser = False
conf.NotebookApp.port = 8080
conf.NotebookApp.token = 'jupyter'
EOF"

cat << EOF > /etc/systemd/system/jupyter.service
[Unit]
Description=Jupyter notebook
[Service]
Type=simple
ExecStartPre=source /opt/anaconda/bin/activate
ExecStart=/opt/anaconda/bin/jupyter lab
User=py
Group=py
WorkingDirectory=/home/py
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl enable jupyter
sudo systemctl start jupyter


echo 'access -> http://192.168.55.101:8080/?token=jupyter'

SHELL
end

〇動作確認用コード
from cassandra.cluster import Cluster

cluster = Cluster(['127.0.0.1'])
session = cluster.connect('mykeyspace')

rows = session.execute('SELECT name, value FROM mytable')
for row in rows:
  print(row)

〇Jupyter Labの画面


○関連情報
・Apache Cassandraに関する他の記事はこちらを参照してください。

VagrantでZim、Gnome Desktop環境、XRDPがインストールされた仮想マシン(Debian Stretch/9.3)を構築する

Zim はデスクトップWikiアプリです。
以下のVagrantfileを使用して、Zim、Gnome Desktop環境、XRDPをインストールした仮想マシン(Debian Stretch/9.3)を構築できます。
XRDPがインストールされているので、Windowsのリモートデスクトップで接続することができます。ユーザ名はVagrant、パスワードもVagrantでログオンできます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/debian-9.3"
  config.vm.hostname = "db93gnomezim"
config.vm.network "public_network", ip:"192.168.1.114", :netmask => "255.255.255.0"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "db93gnomezim"
     vbox.gui = true
     vbox.cpus = 4
     vbox.memory = 4096
  end
  config.vm.provision "shell", inline: <<-SHELL
apt-get update
#DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
apt-get -y install task-japanese
sed -i -e 's/# ja_JP.UTF-8 UTF-8/ja_JP.UTF-8 UTF-8/' /etc/locale.gen
locale-gen
update-locale LANG=ja_JP.UTF-8
localectl set-locale LANG=ja_JP.UTF-8
localectl set-keymap jp106
apt-get update
cat << EOF > /etc/default/keyboard
XKBMODEL="pc106"
XKBLAYOUT="jp"
XKBVARIANT=""
XKBOPTIONS=""
BACKSPACE="guess"
EOF
cat << EOF > /home/vagrant/.xprofile
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
sed -i -e "s/^EnabledIMList.*$/EnabledIMList=fcitx-keyboard-jp:True,mozc:True,fcitx-keyboard-us:False/" /home/vagrant/.config/fcitx/profile
fcitx-remote -r
fcitx -r -d
EOF
chown vagrant:vagrant .xprofile
apt-get -y install  xrdp fcitx-mozc task-gnome-desktop tigervnc-standalone-server

apt-get -y install build-essential module-assistant dkms
wget http://download.virtualbox.org/virtualbox/5.2.6/VBoxGuestAdditions_5.2.6.iso
mount -o loop -t iso9660 VBoxGuestAdditions_5.2.6.iso /media/
/media/VBoxLinuxAdditions.run

export DISPLAY=:0.0
im-config -n fcitx
sudo -u vagrant bash -i -c "export DISPLAY=:0.0 && fcitx -r"
cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.org
cat /etc/xrdp/xrdp.ini.org | gawk '/\\[Globals\\]/,/\\[Xorg\\]/' | sed -e 's/\\[Xorg\\]//' > /etc/xrdp/xrdp.ini
cat << EOF >> /etc/xrdp/xrdp.ini
[Xvnc]
name=Xvnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=-1
EOF
systemctl restart xrdp
systemctl enable xrdp


# install zim
apt-get -y install python-xdg
wget http://zim-wiki.org/downloads/zim_0.67_all.deb
dpkg -i zim_0.67_all.deb

init 5
SHELL
end

〇Zimの画面


○関連情報
・Zimに関する他の記事はこちらを参照してください。

2018年3月29日木曜日

VagrantでGnome Maps、LXDE Desktop環境、XRDPがインストールされた仮想マシン(Debian Stretch/9.3)を構築する

Gnome Mapsで地図を表示する事ができます。
以下のVagrantfileを使用して、Gnome Maps、LXDE Desktop環境、XRDPをインストールした仮想マシン(Debian Stretch/9.3)を構築できます。
XRDPがインストールされているので、Windowsのリモートデスクトップで接続することができます。ユーザ名はVagrant、パスワードもVagrantでログオンできます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/debian-9.3"
  config.vm.hostname = "db93lxdegnomemaps"
config.vm.network "public_network", ip:"192.168.1.118", :netmask => "255.255.255.0"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "db93lxdegnomemaps"
     vbox.gui = true
     vbox.cpus = 4
     vbox.memory = 4096
  end
  config.vm.provision "shell", inline: <<-SHELL
apt-get update
#DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade

apt-get -y install task-japanese
sed -i -e 's/# ja_JP.UTF-8 UTF-8/ja_JP.UTF-8 UTF-8/' /etc/locale.gen
locale-gen
update-locale LANG=ja_JP.UTF-8
localectl set-locale LANG=ja_JP.UTF-8
localectl set-keymap jp106
apt-get update
cat << EOF > /etc/default/keyboard
XKBMODEL="pc106"
XKBLAYOUT="jp"
XKBVARIANT=""
XKBOPTIONS=""
BACKSPACE="guess"
EOF


cat << EOF > /home/vagrant/.xsession
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
sed -i -e "s/^EnabledIMList.*$/EnabledIMList=fcitx-keyboard-jp:True,mozc:True,fcitx-keyboard-us:False/" /home/vagrant/.config/fcitx/profile
fcitx-remote -r
fcitx -r -d
lxsession -s LXDE -e LXDE
EOF
chown vagrant:vagrant .xsession


apt-get -y install  xrdp fcitx-mozc task-lxde-desktop tigervnc-standalone-server fcitx-tools


apt-get -y install build-essential module-assistant dkms
wget http://download.virtualbox.org/virtualbox/5.2.6/VBoxGuestAdditions_5.2.6.iso
mount -o loop -t iso9660 VBoxGuestAdditions_5.2.6.iso /media/
/media/VBoxLinuxAdditions.run


export DISPLAY=:0.0
im-config -n fcitx
sudo -u vagrant bash -i -c "export DISPLAY=:0.0 && fcitx -r"


cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.org
cat /etc/xrdp/xrdp.ini.org | awk '/\\[Globals\\]/,/\\[Xorg\\]/' | sed -e 's/\\[Xorg\\]//' > /etc/xrdp/xrdp.ini
cat << EOF >> /etc/xrdp/xrdp.ini
[Xvnc]
name=Xvnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=-1
EOF
systemctl restart xrdp
systemctl enable xrdp


# install gnome maps
apt-get -y install gnome-maps

init 5
SHELL
end

〇Gnome Mapsの画面

VagrantでDiffuse、Xfce Desktop環境、XRDPがインストールされた仮想マシン(Debian Stretch/9.3)を構築する

Diffuseで2つのテキストの差分を表示したり、マージしたりすることができます。

仮想マシンの構築方法

以下のVagrantfileを使用して、Diffuse、Xfce Desktop環境、XRDPをインストールした仮想マシン(Debian Stretch/9.3)を構築できます。
XRDPがインストールされているので、Windowsのリモートデスクトップで接続することができます。ユーザ名はVagrant、パスワードもVagrantでログオンできます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/debian-9.3"
  config.vm.hostname = "db93xfcediffuse"
config.vm.network "public_network", ip:"192.168.1.115", :netmask => "255.255.255.0"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "db93xfcediffuse"
     vbox.gui = true
     vbox.cpus = 4
     vbox.memory = 4096
  end
  config.vm.provision "shell", inline: <<-SHELL
apt-get update
#DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
apt-get -y install task-japanese
sed -i -e 's/# ja_JP.UTF-8 UTF-8/ja_JP.UTF-8 UTF-8/' /etc/locale.gen
locale-gen
update-locale LANG=ja_JP.UTF-8
localectl set-locale LANG=ja_JP.UTF-8
localectl set-keymap jp106
apt-get update
cat << EOF > /etc/default/keyboard
XKBMODEL="pc106"
XKBLAYOUT="jp"
XKBVARIANT=""
XKBOPTIONS=""
BACKSPACE="guess"
EOF
cat << EOF > /home/vagrant/.xsessionrc
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
sed -i -e "s/^EnabledIMList.*$/EnabledIMList=fcitx-keyboard-jp:True,mozc:True,fcitx-keyboard-us:False/" /home/vagrant/.config/fcitx/profile
fcitx-remote -r
fcitx -r -d
EOF
chown vagrant:vagrant .xsessionrc
apt-get -y install  xrdp fcitx-mozc task-xfce-desktop tigervnc-standalone-server fcitx-tools

apt-get -y install build-essential module-assistant dkms
wget http://download.virtualbox.org/virtualbox/5.2.6/VBoxGuestAdditions_5.2.6.iso
mount -o loop -t iso9660 VBoxGuestAdditions_5.2.6.iso /media/
/media/VBoxLinuxAdditions.run


export DISPLAY=:0.0
im-config -n fcitx
sudo -u vagrant bash -i -c "export DISPLAY=:0.0 && fcitx -r"
cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.org
cat /etc/xrdp/xrdp.ini.org | awk '/\\[Globals\\]/,/\\[Xorg\\]/' | sed -e 's/\\[Xorg\\]//' > /etc/xrdp/xrdp.ini
cat << EOF >> /etc/xrdp/xrdp.ini
[Xvnc]
name=Xvnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=-1
EOF
systemctl restart xrdp
systemctl enable xrdp


# install diffuse
apt-get -y install python-gtk2-dev
wget https://sourceforge.net/projects/diffuse/files/diffuse/0.4.8/diffuse_0.4.8-1_all.deb
dpkg -i diffuse_0.4.8-1_all.deb


init 5
SHELL
end

〇Diffuseの画面

関連情報

・diffuseのホームページ
https://sourceforge.net/projects/diffuse/

・Diffuseに関する他の記事はこちらを参照してください。

VagrantでStellarium、Xfce Desktop環境がインストールされた仮想マシン(CentOS7.4)を構築する

Stellariumはパソコン上で星座を表示できるプラネタリウムソフトです。

〇Stellariumの画面


仮想マシンの構築手順

以下のVagrantfileを使用して、Stellarium、Xfce Desktop環境をインストールした仮想マシンを構築できます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/centos-7.4"
  config.vm.hostname = "co74xfcestellarium"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "co74xfcestellarium"
     vbox.gui = true
     vbox.cpus = 4
     vbox.memory = 4096
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
config.vm.network "public_network", ip: "192.168.1.116", :netmask => "255.255.255.0"
  config.vm.provision "shell", inline: <<-SHELL
localectl set-locale LANG=ja_JP.UTF-8
yum install -y epel-release
yum check-update
yum -y update

yum -y groupinstall yum groupinstall "X Window System"  Xfce "Input Methods"
yum -y install vlgothic-*  ipa-gothic-fonts ipa-mincho-fonts ipa-pgothic-fonts ipa-pmincho-fonts

cat << EOF >> /home/vagrant/.Xclients
export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus
ibus-daemon -drx
exec /usr/bin/xfce4-session
EOF
chmod +x /home/vagrant/.Xclients
chown vagrant:vagrant /home/vagrant/.Xclients

# 不要なダイアログを表示されないようにする
sudo sh -c "echo 'X-GNOME-Autostart-enabled=false' >> /etc/xdg/autostart/gnome-welcome-tour.desktop"
sudo sh -c "echo 'X-GNOME-Autostart-enabled=false' >> /etc/xdg/autostart/gnome-software-service.desktop"
sudo sh -c "echo 'X-GNOME-Autostart-enabled=false' >> /etc/xdg/autostart/gnome-settings-daemon.desktop"
sudo systemctl disable initial-setup-graphical.service
sudo systemctl disable initial-setup-text.service

systemctl set-default graphical.target

# Virtualbox Guest Additions
yum -y groupinstall "Development Tools"
yum -y install kernel-devel kernel-headers kernel-devel-3.10.0-693.2.2.el7.x86_64
wget http://download.virtualbox.org/virtualbox/5.2.6/VBoxGuestAdditions_5.2.6.iso
mount -o loop -t iso9660 VBoxGuestAdditions_5.2.6.iso /media/
/media/VBoxLinuxAdditions.run

# install stellarium
yum -y install stellarium

telinit 5
SHELL
end

関連情報

・Stellariumに関する他の記事はこちらを参照してください。

・Stellariumのプロジェクトwebサイト
https://stellarium.org/ja/

2018年3月28日水曜日

VagrantでBluefish、Xfce Desktop環境、XRDPがインストールされた仮想マシン(Ubuntu16.04)を構築する

Bluefishは様々なマークアップ/コンピュータ言語に対応したエディタです。
以下のVagrantfileを使用して、Bluefish 、Xfce Desktop環境、XRDPをインストールした仮想マシンを構築できます。
XRDPがインストールされているので、Windowsのリモートデスクトップで接続することができます。ユーザ名はVagrant、パスワードもVagrantでログオンできます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/ubuntu-16.04"
  config.vm.hostname = "ub1604xfcebluefish"
config.vm.network :public_network, ip:"192.168.1.114"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "ub1604xfcebluefish"
     vbox.gui = true
     vbox.cpus = 4
     vbox.memory = 4096
  end
  config.vm.provision "shell", inline: <<-SHELL
sed -i.bak -e "s#http://archive.ubuntu.com/ubuntu/#http://ftp.riken.jp/pub/Linux/ubuntu/#g" /etc/apt/sources.list
localectl set-locale LANG=ja_JP.UTF-8
localectl set-keymap jp106
apt-get update
apt-get -y install  xrdp fcitx-mozc xubuntu-desktop language-pack-ja language-pack-ja virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11
im-config -n fcitx


# install Bluefish
apt-get -y install bluefish

init 5
SHELL
end

〇Bluefishの画面

関連情報

・Bluefishに関する他の記事はこちらを参照してください。

VagrantでJupyter LabとApache Igniteをインストールした仮想マシン(Ubuntu16.04)を構築する

Jupyter Labでインタラクティブなコンピューティング環境を提供する事ができます。
以下のVagrantfileで、Jupyter LabとApache Igniteをインストールした仮想マシンを構築する事ができます。
Jupyter LabからApache IgniteにODBCプロトコルで接続します。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/ubuntu-16.04"
  config.vm.hostname = "ub1604jupyterlabmonetdb"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "ub1604jupyterlabmonetdb"
     vbox.cpus = 2
     vbox.memory = 2048
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
config.vm.network "private_network", ip: "192.168.55.101", :netmask => "255.255.255.0"
config.vm.network "public_network", ip:"192.168.1.101", :netmask => "255.255.255.0"
  config.vm.provision "shell", inline: <<-SHELL
# update packages
apt-get update
#DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
locale-gen ja_JP.UTF-8
localectl set-locale LANG=ja_JP.UTF-8


# install java
apt-get -y install openjdk-8-jdk

apt-get -y install unzip
wget http://ftp.meisei-u.ac.jp/mirror/apache/dist//ignite/2.4.0/apache-ignite-fabric-2.4.0-bin.zip
unzip apache-ignite-fabric-2.4.0-bin.zip
mv apache-ignite-fabric-2.4.0-bin /opt/ignite

cat << EOF > /etc/systemd/system/ignite.service
[Unit]
Description=Apache Ignite

[Service]
ExecStart=/opt/ignite/bin/ignite.sh
WorkingDirectory=/opt/ignite
KillMode=process
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF
systemctl enable ignite.service
systemctl start ignite.service

# 11211ポートでlistenするまで待つ.
while netstat -lnt | awk '$4 ~ /:11211$/ {exit 1}'; do sleep 10; done
sleep 10

# サンプルSQLの実行
wget http://wiki.metawerx.net/attach/SJSQL/sjsql.java
wget http://wiki.metawerx.net/attach/SJSQL/sjsql.class

cat << EOF >> /home/vagrant/test.sql
create table test1 (test_id integer primary key, test_desc varchar(100));
insert into test1 (test_id, test_desc) values (1, 'hello world!');
insert into test1 (test_id, test_desc) values (2, 'テストだよ');
select * from test1;
EOF
java -cp .:/opt/ignite/libs/ignite-core-2.4.0.jar sjsql org.apache.ignite.IgniteJdbcThinDriver jdbc:ignite:thin://127.0.0.1/ test test /home/vagrant/test.sql


# install anaconda & jupyterlab
wget https://repo.continuum.io/archive/Anaconda3-5.1.0-Linux-x86_64.sh
chmod +x Anaconda3-5.1.0-Linux-x86_64.sh
./Anaconda3-5.1.0-Linux-x86_64.sh -b -p /opt/anaconda
source /opt/anaconda/bin/activate
pip install --upgrade pip
pip install jupyterlab

# install ignite driver
pip install ignite


useradd py
mkdir -p /home/py
chown -R py:py /home/py
sudo -u py bash -c "mkdir /home/py/.jupyter"
sudo -u py bash -c "cat << EOF > /home/py/.jupyter/jupyter_notebook_config.py
conf = get_config()
conf.NotebookApp.ip = '*'
conf.NotebookApp.open_browser = False
conf.NotebookApp.port = 8080
conf.NotebookApp.token = 'jupyter'
EOF"

cat << EOF > /etc/systemd/system/jupyter.service
[Unit]
Description=Jupyter notebook
[Service]
Type=simple
ExecStartPre=source /opt/anaconda/bin/activate
ExecStart=/opt/anaconda/bin/jupyter lab
User=py
Group=py
WorkingDirectory=/home/py
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl enable jupyter
sudo systemctl start jupyter

# build odbc driver and install
apt-get -y install build-essential libtool m4 automake unixodbc unixodbc-dev
cd /opt/ignite/platforms/cpp/
libtoolize && aclocal && autoheader && automake --add-missing && autoreconf
./configure --enable-odbc --disable-node --disable-core
make
make install
odbcinst -i -d -f /opt/ignite/platforms/cpp/odbc/install/ignite-odbc-install.ini
echo '/usr/local/lib' >> /etc/ld.so.conf.d/ignite.conf
ldconfig

echo 'access -> http://192.168.55.101:8080/?token=jupyter'

SHELL
end

〇動作確認用コード
import pyodbc
conn = pyodbc.connect('DRIVER={Apache Ignite};Address=127.0.0.1:10800;CACHE=MyCache',autocommit=True)
conn.setdecoding(pyodbc.SQL_CHAR, 'utf-8')
conn.setdecoding(pyodbc.SQL_WCHAR, 'utf-8')
cur = conn.cursor()
cur.execute("select * from test1")
rows = cur.fetchall()
for row in rows:
  print("%d %s" % (row[0], row[1]))

○関連情報
・Apache Igniteに関する他の記事はこちらを参照してください。

2018年3月27日火曜日

VagrantでApache Ignite2.4.0をインストールした仮想マシン(Ubuntu16.04)を構築する

Apache Igniteはメモリ指向の分散データベースです。
以下のVagrantfileを使用して、Apache Ignite2.4.0をインストールした仮想マシンを構築する事が出来ます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/ubuntu-16.04"
  config.vm.hostname = "ub1604ignite240"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "ub1604ignite240"
     vbox.cpus = 2
     vbox.memory = 2048
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
config.vm.network "private_network", ip: "192.168.55.105", :netmask => "255.255.255.0"
config.vm.network "public_network", ip:"192.168.1.105", :netmask => "255.255.255.0"
  config.vm.provision "shell", inline: <<-SHELL
# update packages
apt-get update
#DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
locale-gen ja_JP.UTF-8
localectl set-locale LANG=ja_JP.UTF-8
apt-get -y install unzip

# install java
apt-get -y install openjdk-8-jdk

wget http://www-us.apache.org/dist//ignite/2.4.0/apache-ignite-fabric-2.4.0-bin.zip
unzip apache-ignite-fabric-2.4.0-bin.zip
mv apache-ignite-fabric-2.4.0-bin /opt/ignite

cat << EOF > /etc/systemd/system/ignite.service
[Unit]
Description=Apache Ignite

[Service]
ExecStart=/opt/ignite/bin/ignite.sh
WorkingDirectory=/opt/ignite
KillMode=process
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF
systemctl enable ignite.service
systemctl start ignite.service

# 11211ポートでlistenするまで待つ.
while netstat -lnt | awk '$4 ~ /:11211$/ {exit 1}'; do sleep 10; done
sleep 10

# サンプルSQLの実行
wget http://wiki.metawerx.net/attach/SJSQL/sjsql.java
wget http://wiki.metawerx.net/attach/SJSQL/sjsql.class

cat << EOF >> /home/vagrant/test.sql
create table test1 (test_id integer primary key, test_desc varchar(100));
insert into test1 (test_id, test_desc) values (1, 'test_id_001');
select * from test1;
EOF
java -cp .:/opt/ignite/libs/ignite-core-2.4.0.jar sjsql org.apache.ignite.IgniteJdbcThinDriver jdbc:ignite:thin://127.0.0.1/ test test /home/vagrant/test.sql

SHELL
end


○関連情報
・Apache Igniteに関する他の記事はこちらを参照してください。

VagrantでLiferea、Gnome Desktop環境、XRDPがインストールされた仮想マシン(Debian Stretch/9.3)を構築する

LifereaはオープンソースのRSSリーダーです。

仮想マシンの構築方法

以下のVagrantfileを使用して、Liferea、Gnome Desktop環境、XRDPをインストールした仮想マシン(Debian Stretch/9.3 )を構築できます。
XRDPがインストールされているので、Windowsのリモートデスクトップで接続することができます。ユーザ名はVagrant、パスワードもVagrantでログオンできます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/debian-9.3"
  config.vm.hostname = "db93gnomeliferea"
config.vm.network "public_network", ip:"192.168.1.114", :netmask => "255.255.255.0"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "db93gnomeliferea"
     vbox.gui = true
     vbox.cpus = 4
     vbox.memory = 4096
  end
  config.vm.provision "shell", inline: <<-SHELL
apt-get update
#DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
apt-get -y install task-japanese
sed -i -e 's/# ja_JP.UTF-8 UTF-8/ja_JP.UTF-8 UTF-8/' /etc/locale.gen
locale-gen
update-locale LANG=ja_JP.UTF-8
localectl set-locale LANG=ja_JP.UTF-8
localectl set-keymap jp106
apt-get update
cat << EOF > /etc/default/keyboard
XKBMODEL="pc106"
XKBLAYOUT="jp"
XKBVARIANT=""
XKBOPTIONS=""
BACKSPACE="guess"
EOF
cat << EOF > /home/vagrant/.xprofile
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
sed -i -e "s/^EnabledIMList.*$/EnabledIMList=fcitx-keyboard-jp:True,mozc:True,fcitx-keyboard-us:False/" /home/vagrant/.config/fcitx/profile
fcitx-remote -r
fcitx -r -d
EOF
chown vagrant:vagrant .xprofile
apt-get -y install  xrdp fcitx-mozc task-gnome-desktop tigervnc-standalone-server

apt-get -y install build-essential module-assistant dkms
wget http://download.virtualbox.org/virtualbox/5.2.6/VBoxGuestAdditions_5.2.6.iso
mount -o loop -t iso9660 VBoxGuestAdditions_5.2.6.iso /media/
/media/VBoxLinuxAdditions.run

export DISPLAY=:0.0
im-config -n fcitx
sudo -u vagrant bash -i -c "export DISPLAY=:0.0 && fcitx -r"
cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.org
cat /etc/xrdp/xrdp.ini.org | gawk '/\\[Globals\\]/,/\\[Xorg\\]/' | sed -e 's/\\[Xorg\\]//' > /etc/xrdp/xrdp.ini
cat << EOF >> /etc/xrdp/xrdp.ini
[Xvnc]
name=Xvnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=-1
EOF
systemctl restart xrdp
systemctl enable xrdp


# install Liferea
apt-get -y install liferea


init 5
SHELL
end

〇Lifereaの画面

関連情報

・Lifereaに関する他の記事はこちらを参照してください。

2018年3月26日月曜日

VagrantでJupyter LabとCouchDBをインストールした仮想マシン(Debian Stretch/9.3)を構築する

Jupyter Labでインタラクティブなコンピューティング環境を提供する事ができます。
以下のVagrantfileで、Jupyter LabとCouchDBをインストールした仮想マシン(Debian Stretch/9.3)を構築できます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/debian-9.3"
  config.vm.hostname = "db93jupyterlabcouchdb"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "db93jupyterlabcouchdb"
     vbox.cpus = 2
     vbox.memory = 2048
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
config.vm.network "private_network", ip: "192.168.55.101", :netmask => "255.255.255.0"
config.vm.network "public_network", ip:"192.168.1.101", :netmask => "255.255.255.0"
  config.vm.provision "shell", inline: <<-SHELL
apt-get -y install task-japanese
sed -i -e 's/# ja_JP.UTF-8 UTF-8/ja_JP.UTF-8 UTF-8/' /etc/locale.gen
locale-gen
update-locale LANG=ja_JP.UTF-8
localectl set-locale LANG=ja_JP.UTF-8
localectl set-keymap jp106
apt-get update
#DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade

# install couchdb
echo "deb http://apache.bintray.com/couchdb-deb stretch main" >> /etc/apt/sources.list
curl -L https://couchdb.apache.org/repo/bintray-pubkey.asc | apt-key add -
apt-get update
export DEBIAN_FRONTEND=noninteractive
apt-get -y install couchdb

sed -i -e 's/bind_address = 127.0.0.1/bind_address = 0.0.0.0/' /etc/couchdb/default.ini
systemctl restart couchdb.service


# install anaconda & jupyterlab
wget https://repo.continuum.io/archive/Anaconda3-5.1.0-Linux-x86_64.sh
chmod +x Anaconda3-5.1.0-Linux-x86_64.sh
./Anaconda3-5.1.0-Linux-x86_64.sh -b -p /opt/anaconda
source /opt/anaconda/bin/activate
pip install --upgrade pip
pip install jupyterlab

# install couchdb driver
pip install couchdb


useradd py
mkdir -p /home/py
chown -R py:py /home/py
sudo -u py bash -c "mkdir /home/py/.jupyter"
sudo -u py bash -c "cat << EOF > /home/py/.jupyter/jupyter_notebook_config.py
conf = get_config()
conf.NotebookApp.ip = '*'
conf.NotebookApp.open_browser = False
conf.NotebookApp.port = 8080
conf.NotebookApp.token = 'jupyter'
EOF"

cat << EOF > /etc/systemd/system/jupyter.service
[Unit]
Description=Jupyter notebook
[Service]
Type=simple
ExecStartPre=source /opt/anaconda/bin/activate
ExecStart=/opt/anaconda/bin/jupyter lab
User=py
Group=py
WorkingDirectory=/home/py
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl enable jupyter
sudo systemctl start jupyter


echo 'access : http://192.168.55.101:5984/_utils/index.html'
echo ''
echo 'url for jupyter lab -> http://192.168.55.101:8080/?token=jupyter'

SHELL
end

〇動作確認用コード
import couchdb

# connect to couchdb
couchserver = couchdb.Server("http://localhost:5984/")

# create a db
dbname = "testdb"
if dbname in couchserver:
  db = couchserver[dbname]
else:
  db = couchserver.create(dbname)

# store a document
doc_id, doc_rev = db.save({'message_id': 'hello world!'})

# get a document by id
print(db.get(doc_id))

〇Jupyter Labの画面


○関連情報
・CouchDBに関する他の記事はこちらを参照してください。

VagrantでDiffuse、LXDE Desktop環境、XRDPがインストールされた仮想マシン(Debian Stretch/9.3)を構築する

Diffuseで2つのテキストの差分を表示したり、マージしたりすることができます。

仮想マシンの構築方法

以下のVagrantfileを使用して、Diffuse、LXDE Desktop環境、XRDPをインストールした仮想マシン(Debian Stretch/9.3)を構築できます。
XRDPがインストールされているので、Windowsのリモートデスクトップで接続することができます。ユーザ名はVagrant、パスワードもVagrantでログオンできます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/debian-9.3"
  config.vm.hostname = "db93lxdediffuse"
config.vm.network "public_network", ip:"192.168.1.118", :netmask => "255.255.255.0"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "db93lxdediffuse"
     vbox.gui = true
     vbox.cpus = 4
     vbox.memory = 4096
  end
  config.vm.provision "shell", inline: <<-SHELL
apt-get update
#DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade

apt-get -y install task-japanese
sed -i -e 's/# ja_JP.UTF-8 UTF-8/ja_JP.UTF-8 UTF-8/' /etc/locale.gen
locale-gen
update-locale LANG=ja_JP.UTF-8
localectl set-locale LANG=ja_JP.UTF-8
localectl set-keymap jp106
apt-get update
cat << EOF > /etc/default/keyboard
XKBMODEL="pc106"
XKBLAYOUT="jp"
XKBVARIANT=""
XKBOPTIONS=""
BACKSPACE="guess"
EOF


cat << EOF > /home/vagrant/.xsession
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
sed -i -e "s/^EnabledIMList.*$/EnabledIMList=fcitx-keyboard-jp:True,mozc:True,fcitx-keyboard-us:False/" /home/vagrant/.config/fcitx/profile
fcitx-remote -r
fcitx -r -d
lxsession -s LXDE -e LXDE
EOF
chown vagrant:vagrant .xsession


apt-get -y install  xrdp fcitx-mozc task-lxde-desktop tigervnc-standalone-server fcitx-tools


apt-get -y install build-essential module-assistant dkms
wget http://download.virtualbox.org/virtualbox/5.2.6/VBoxGuestAdditions_5.2.6.iso
mount -o loop -t iso9660 VBoxGuestAdditions_5.2.6.iso /media/
/media/VBoxLinuxAdditions.run


export DISPLAY=:0.0
im-config -n fcitx
sudo -u vagrant bash -i -c "export DISPLAY=:0.0 && fcitx -r"


cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.org
cat /etc/xrdp/xrdp.ini.org | awk '/\\[Globals\\]/,/\\[Xorg\\]/' | sed -e 's/\\[Xorg\\]//' > /etc/xrdp/xrdp.ini
cat << EOF >> /etc/xrdp/xrdp.ini
[Xvnc]
name=Xvnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=-1
EOF
systemctl restart xrdp
systemctl enable xrdp


# install diffuse
apt-get -y install python-gtk2-dev
wget https://sourceforge.net/projects/diffuse/files/diffuse/0.4.8/diffuse_0.4.8-1_all.deb
dpkg -i diffuse_0.4.8-1_all.deb


init 5
SHELL
end

〇Diffuseの画面

関連情報

・diffuseのホームページ
https://sourceforge.net/projects/diffuse/

・Diffuseに関する他の記事はこちらを参照してください。

2018年3月25日日曜日

VagrantでZim、KDE Desktop環境、XRDPがインストールされた仮想マシン(Debian Stretch/9.3)を構築する

Zim はデスクトップWikiアプリです。
以下のVagrantfileを使用して、Zim、KDE Desktop環境、XRDPをインストールした仮想マシン(Debian Stretch/9.3)を構築できます。
XRDPがインストールされているので、Windowsのリモートデスクトップで接続することができます。ユーザ名はVagrant、パスワードもVagrantでログオンできます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/debian-9.3"
  config.vm.hostname = "db93kdezim"
config.vm.network "public_network", ip:"192.168.1.119", :netmask => "255.255.255.0"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "db93kdezim"
     vbox.gui = true
     vbox.cpus = 4
     vbox.memory = 4096
  end
  config.vm.provision "shell", inline: <<-SHELL
apt-get update
#DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade

apt-get -y install task-japanese
sed -i -e 's/# ja_JP.UTF-8 UTF-8/ja_JP.UTF-8 UTF-8/' /etc/locale.gen
locale-gen
update-locale LANG=ja_JP.UTF-8
localectl set-locale LANG=ja_JP.UTF-8
localectl set-keymap jp106
apt-get update
cat << EOF > /etc/default/keyboard
XKBMODEL="pc106"
XKBLAYOUT="jp"
XKBVARIANT=""
XKBOPTIONS=""
BACKSPACE="guess"
EOF


cat << EOF > /home/vagrant/.xsessionrc
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
sed -i -e "s/^EnabledIMList.*$/EnabledIMList=mozc:True,fcitx-keyboard-jp:False,fcitx-keyboard-us:False/" /home/vagrant/.config/fcitx/profile
fcitx-remote -r
fcitx -r -d
EOF
chown vagrant:vagrant .xsessionrc


apt-get -y install  xrdp fcitx-mozc task-kde-desktop tigervnc-standalone-server fcitx-tools

apt-get -y install build-essential module-assistant dkms
wget http://download.virtualbox.org/virtualbox/5.2.6/VBoxGuestAdditions_5.2.6.iso
mount -o loop -t iso9660 VBoxGuestAdditions_5.2.6.iso /media/
/media/VBoxLinuxAdditions.run


export DISPLAY=:0.0
im-config -n fcitx
#sudo -u vagrant bash -i -c "export DISPLAY=:0.0 && fcitx -r"


cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.org
cat /etc/xrdp/xrdp.ini.org | awk '/\\[Globals\\]/,/\\[Xorg\\]/' | sed -e 's/\\[Xorg\\]//' > /etc/xrdp/xrdp.ini
cat << EOF >> /etc/xrdp/xrdp.ini
[Xvnc]
name=Xvnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=-1
EOF
systemctl restart xrdp
systemctl enable xrdp


# install zim
apt-get -y install python-xdg
wget http://zim-wiki.org/downloads/zim_0.67_all.deb
dpkg -i zim_0.67_all.deb


init 5
SHELL
end

〇Zimの画面


○関連情報
・Zimに関する他の記事はこちらを参照してください。

VagrantでProjectLibre、Cinnamon Desktop環境、XRDPがインストールされた仮想マシン(Debian Stretch/9.3)を構築する

ProjectLibre を使用してMicrosoft Projectのようにプロジェクト管理を行う事ができます。

仮想マシンの構築方法

以下のVagrantfileを使用して、ProjectLibre 、Cinnamon Desktop環境、XRDPをインストールした仮想マシン(Debian Stretch/9.3) を構築できます。
XRDPがインストールされているので、Windowsのリモートデスクトップで接続することができます。ユーザ名はVagrant、パスワードもVagrantでログオンできます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/debian-9.3"
  config.vm.hostname = "db93cinnamonprojectlibre"
config.vm.network "public_network", ip:"192.168.1.116", :netmask => "255.255.255.0"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "db93cinnamonprojectlibre"
     vbox.gui = true
     vbox.cpus = 4
     vbox.memory = 4096
  end
  config.vm.provision "shell", inline: <<-SHELL
apt-get update
#DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
apt-get -y install task-japanese
sed -i -e 's/# ja_JP.UTF-8 UTF-8/ja_JP.UTF-8 UTF-8/' /etc/locale.gen
locale-gen
update-locale LANG=ja_JP.UTF-8
localectl set-locale LANG=ja_JP.UTF-8
localectl set-keymap jp106
apt-get update
cat << EOF > /etc/default/keyboard
XKBMODEL="pc106"
XKBLAYOUT="jp"
XKBVARIANT=""
XKBOPTIONS=""
BACKSPACE="guess"
EOF
cat << EOF > /home/vagrant/.xsessionrc
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
sed -i -e "s/^EnabledIMList.*$/EnabledIMList=fcitx-keyboard-jp:True,mozc:True,fcitx-keyboard-us:False/" /home/vagrant/.config/fcitx/profile
fcitx-remote -r
fcitx -r -d
EOF
chown vagrant:vagrant .xsessionrc
apt-get -y install  xrdp fcitx-mozc task-cinnamon-desktop tigervnc-standalone-server

apt-get -y install build-essential module-assistant dkms
wget http://download.virtualbox.org/virtualbox/5.2.6/VBoxGuestAdditions_5.2.6.iso
mount -o loop -t iso9660 VBoxGuestAdditions_5.2.6.iso /media/
/media/VBoxLinuxAdditions.run


im-config -n fcitx
sudo -u vagrant bash -i -c "export DISPLAY=:0.0 && fcitx -r"

cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.org
cat /etc/xrdp/xrdp.ini.org | gawk '/\\[Globals\\]/,/\\[Xorg\\]/' | sed -e 's/\\[Xorg\\]//' > /etc/xrdp/xrdp.ini
cat << EOF >> /etc/xrdp/xrdp.ini
[Xvnc]
name=Xvnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=-1
EOF
systemctl restart xrdp
systemctl enable xrdp


# install java
apt-get -y install openjdk-8-jdk

# install projectlibre
wget https://sourceforge.net/projects/projectlibre/files/ProjectLibre/1.7/projectlibre_1.7.0-1.deb
dpkg -i projectlibre_1.7.0-1.deb


init 5
SHELL
end

〇ProjectLibreの画面

関連情報

・ProjectLibreに関する他の記事はこちらを参照してください。

・ProjectLibreのwebサイト
http://www.projectlibre.com/

dockerでJupyter Notebook、MySQLがインストールされたコンテナのイメージを作成する

Jupyter Notebookでインタラクティブなコンピューティング環境を提供する事ができます。
以下の手順で、Jupyter Notebook、MySQLのコンテナを構築・実行します。

○構築方法
1. mysqlclientを追加したJupyter Notebookイメージの作成(Dockerfileがあるフォルダで実行)
docker build -t scipy-notebook-mysql .

Dockerfile
FROM jupyter/scipy-notebook
ENV TZ=Asia/Tokyo
USER root
RUN apt-get update \
  && apt-get -y install libmysqlclient-dev \
  && pip install mysqlclient \
  && apt-get clean
USER $NB_UID

2. Jupyter NotebookとMySQLコンテナの構築・実行(docker-compose.ymlがあるフォルダで実行)
docker-compose up -d

docker-compose.yml
version: "2"
services:
  scipy-notebook:
    image: scipy-notebook-mysql
    container_name: "scipy-notebook-mysql"
    volumes:
      - "scipy-notebook-data:/home/jovyan/work"
    ports:
      - "8888:8888"
    environment:
      JUPYTER_TOKEN: jupyter
    depends_on:
      - db
  db:
    image: mysql:5.7
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    container_name: "scipy-notebook-db"
    volumes:
      - "db-data:/var/lib/mysql"
    ports:
      - "3306:3306"
    environment:
        MYSQL_DATABASE: test
        MYSQL_ROOT_PASSWORD: test
volumes:
  db-data:
    driver: local
  scipy-notebook-data:
    driver: local

※Jupyter Labを使用したい場合は、以下のようにenvironmentにJUPYTER_ENABLE_LAB: 1を追加します。
    environment:
      JUPYTER_TOKEN: jupyter
      JUPYTER_ENABLE_LAB: 1

3.ブラウザから以下のURLにアクセス
http://<Dockerホスト名またはIP>:8888/?token=jupyter

○動作確認用コード
import MySQLdb

con = MySQLdb.connect(
  user='root',
  passwd='test',
  host='db',
  db='test')

try:
  cur= con.cursor()
  cur.execute("create table messages (message_id integer, message varchar(100))")
  cur.execute("insert into messages values (100, 'hello world!')")
  sql = "select message_id, message from messages"
  cur.execute(sql)

  for row in cur.fetchall():
    print(row)

except MySQLdb.Error as er:
    print('MySQLdb.Error:', er)
cur.close
con.close

○Jupyter Notebookの画面

2018年3月24日土曜日

VagrantでselfossとPostgreSQLをインストールした仮想マシン(Debian Stretch/9.3)を構築する

selfossはPHP製のフィードリーダーです。
以下のVagrantfileを使用して、selfossとPostgreSQLがインストールされた仮想マシン(Debian Stretch/9.3)を構築する事が出来ます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/debian-9.3"
  config.vm.hostname = "db93selfosspg"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "db93selfosspg"
     vbox.cpus = 2
     vbox.memory = 2048
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
config.vm.network "private_network", ip: "192.168.55.101", :netmask => "255.255.255.0"
config.vm.network "public_network", ip:"192.168.1.101", :netmask => "255.255.255.0"
  config.vm.provision "shell", inline: <<-SHELL
apt-get -y install task-japanese
sed -i -e 's/# ja_JP.UTF-8 UTF-8/ja_JP.UTF-8 UTF-8/' /etc/locale.gen
locale-gen
update-locale LANG=ja_JP.UTF-8
localectl set-locale LANG=ja_JP.UTF-8
localectl set-keymap jp106
apt-get update
#DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade


# install postgresql
apt-get -y install postgresql-9.6
echo "listen_addresses='*'" >> /etc/postgresql/9.6/main/postgresql.conf
echo "standard_conforming_strings=off" >> /etc/postgresql/9.6/main/postgresql.conf

#sed -i 's/host.*all.*all.*127.0.0.1/#host    all             all             127.0.0.1/g' /etc/postgresql/9.6/main/pg_hba.conf

echo "host    all         all         127.0.0.1/32          password" >> /etc/postgresql/9.6/main/pg_hba.conf
echo "host    all         all         192.168.1.0/24          password" >> /etc/postgresql/9.6/main/pg_hba.conf
echo "host    all         all         192.168.55.0/24          password" >> /etc/postgresql/9.6/main/pg_hba.conf

su - postgres << EOF
createdb -T template0 --locale=ja_JP.UTF-8 --encoding=UTF8 selfoss
psql -c "
alter user postgres with password 'postgres';
create user selfoss with password 'selfoss';
grant all privileges on database selfoss to selfoss;
"
EOF
echo "postgres:postgres" | chpasswd
systemctl restart postgresql.service


# install selfoss
apt-get -y install apache2 apache2-bin libapache2-mod-php7.0 php7.0-pgsql php7.0-mbstring php7.0-xml php7.0-gd unzip
mkdir -p /opt/selfoss
cd /opt/selfoss
wget https://github.com/SSilence/selfoss/releases/download/2.17/selfoss-2.17.zip
unzip selfoss-2.17.zip
cp defaults.ini config.ini
sed -i -e 's/db_type=sqlite/db_type=pgsql/' config.ini
#db_host=localhost
#db_database=selfoss
sed -i -e 's/db_username=root/db_username=selfoss/' config.ini
sed -i -e 's/db_password=/db_password=selfoss/' config.ini
sed -i -e 's/db_port=/db_port=5432/' config.ini
echo '0,10,20,30,40,50 * * * * root /usr/bin/php /opt/selfoss/cliupdate.php' >> /etc/crontab
systemctl restart cron

chown -R www-data:www-data /opt/selfoss
ln -s  /opt/selfoss /var/www/html
cat << EOF >> /etc/apache2/apache2.conf
<Directory /var/www/html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>
EOF
a2enmod rewrite
service apache2 restart

echo 'access http://192.168.1.101/selfoss/'
echo 'sample feed: http://serverarekore.blogspot.com/feeds/posts/default'

SHELL
end

〇selfossの画面


○関連情報
・selfossに関する他の記事はこちらを参照してください。

2018年3月23日金曜日

VagrantでGantt Project、Xfce Desktop環境、XRDPがインストールされた仮想マシン(CentOS7.4)を構築する

Gantt Projectを使用してMicrosoft Projectのようにプロジェクト管理を行う事ができます。
以下のVagrantfileを使用して、Gantt Project、Xfce Desktop環境、XRDPをインストールした仮想マシン(CentOS7.4 ) を構築できます。
XRDPがインストールされているので、Windowsのリモートデスクトップで接続することができます。ユーザ名はVagrant、パスワードもVagrantでログオンできます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/centos-7.4"
  config.vm.hostname = "co74xfceganttproject"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "co74xfceganttproject"
     vbox.gui = true
     vbox.cpus = 4
     vbox.memory = 4096
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
config.vm.network "public_network", ip: "192.168.1.116", :netmask => "255.255.255.0"
  config.vm.provision "shell", inline: <<-SHELL
localectl set-locale LANG=ja_JP.UTF-8
yum install -y epel-release
yum check-update
yum -y update

yum -y groupinstall yum groupinstall "X Window System"  Xfce "Input Methods"
yum -y install vlgothic-*  ipa-gothic-fonts ipa-mincho-fonts ipa-pgothic-fonts ipa-pmincho-fonts xrdp

cat << EOF >> /home/vagrant/.Xclients
export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus
ibus-daemon -drx
exec /usr/bin/xfce4-session
EOF
chmod +x /home/vagrant/.Xclients
chown vagrant:vagrant /home/vagrant/.Xclients

# 不要なダイアログを表示されないようにする
sudo sh -c "echo 'X-GNOME-Autostart-enabled=false' >> /etc/xdg/autostart/gnome-welcome-tour.desktop"
sudo sh -c "echo 'X-GNOME-Autostart-enabled=false' >> /etc/xdg/autostart/gnome-software-service.desktop"
sudo sh -c "echo 'X-GNOME-Autostart-enabled=false' >> /etc/xdg/autostart/gnome-settings-daemon.desktop"
sudo systemctl disable initial-setup-graphical.service
sudo systemctl disable initial-setup-text.service

systemctl set-default graphical.target

systemctl enable xrdp.service
systemctl start xrdp.service

yum -y remove java
wget --no-cookies --no-check-certificate --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u161-b12/2f38c3b165be4555a1fa6e98c45e0808/jdk-8u161-linux-x64.rpm
rpm -ivh jdk-8u161-linux-x64.rpm


# install GanttProject
yum -y install unzip
wget -O gantt.zip http://www.ganttproject.biz/dl/2.8.5/any
unzip gantt.zip
mv ganttproject* /opt/ganttproject

cat << EOF > /usr/share/applications/ganttproject.desktop
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=/opt/ganttproject/ganttproject
Name=Gantt Project
Categories=Development;
EOF


telinit 5
SHELL
end

〇Gantt Projectの画面

関連情報

・Gntt Projectに関する他の記事は、こちらを参照してください。

VagrantでAnki、Xfce Desktop環境、XRDPがインストールされた仮想マシン(CentOS7.4)を構築する

Ankiを使用して暗記カードのように繰り返し学習を行う事ができます。
以下のVagrantfileを使用して、Anki、Xfce Desktop環境、XRDPをインストールした仮想マシン(CentOS7.4) を構築できます。
XRDPがインストールされているので、Windowsのリモートデスクトップで接続することができます。ユーザ名はVagrant、パスワードもVagrantでログオンできます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/centos-7.4"
  config.vm.hostname = "co74xfceanki"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "co74xfceanki"
     vbox.gui = true
     vbox.cpus = 4
     vbox.memory = 4096
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
config.vm.network "public_network", ip: "192.168.1.116", :netmask => "255.255.255.0"
  config.vm.provision "shell", inline: <<-SHELL
localectl set-locale LANG=ja_JP.UTF-8
yum install -y epel-release
yum check-update
yum -y update

yum -y groupinstall yum groupinstall "X Window System"  Xfce "Input Methods"
yum -y install vlgothic-*  ipa-gothic-fonts ipa-mincho-fonts ipa-pgothic-fonts ipa-pmincho-fonts xrdp

cat << EOF >> /home/vagrant/.Xclients
export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus
ibus-daemon -drx
exec /usr/bin/xfce4-session
EOF
chmod +x /home/vagrant/.Xclients
chown vagrant:vagrant /home/vagrant/.Xclients

# 不要なダイアログを表示されないようにする
sudo sh -c "echo 'X-GNOME-Autostart-enabled=false' >> /etc/xdg/autostart/gnome-welcome-tour.desktop"
sudo sh -c "echo 'X-GNOME-Autostart-enabled=false' >> /etc/xdg/autostart/gnome-software-service.desktop"
sudo sh -c "echo 'X-GNOME-Autostart-enabled=false' >> /etc/xdg/autostart/gnome-settings-daemon.desktop"
sudo systemctl disable initial-setup-graphical.service
sudo systemctl disable initial-setup-text.service

systemctl set-default graphical.target

systemctl enable xrdp.service
systemctl start xrdp.service

# install Anki
curl -O https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm
yum -y localinstall rpmfusion-free-release-7.noarch.rpm

yum -y install mplayer firefox alsa-utils
wget https://apps.ankiweb.net/downloads/current/anki-2.0.47-amd64.tar.bz2
amixer scontrols
amixer -c 0 set Master playback 100% unmute
amixer -c 0 set PCM playback 100% unmute
tar jxf anki-2.0.47-amd64.tar.bz2
mv anki-2.0.47 /opt/anki
chown -R vagrant:vagrant /opt/anki

sed -i -e 's#Exec=anki#Exec=/opt/anki/bin/anki#' /opt/anki/anki.desktop
sed -i -e 's#Icon=anki#Icon=/opt/anki/anki.png#' /opt/anki/anki.desktop
cp /opt/anki/anki.desktop /usr/share/applications

telinit 5
SHELL
end

〇Ankiの画面

○関連情報
・Ankiに関する他の記事はこちらを参照してください。

2018年3月22日木曜日

VagrantでJupyter LabとCouchDBをインストールした仮想マシン(Ubuntu16.04)を構築する

Jupyter Labでインタラクティブなコンピューティング環境を提供する事ができます。
以下のVagrantfileで、Jupyter LabとCouchDBをインストールした仮想マシン(Ubuntu16.04)を構築できます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/ubuntu-16.04"
  config.vm.hostname = "ub1604jupyterlabcouchdb"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "ub1604jupyterlabcouchdb"
     vbox.cpus = 2
     vbox.memory = 2048
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
config.vm.network "private_network", ip: "192.168.55.105", :netmask => "255.255.255.0"
config.vm.network "public_network", ip:"192.168.1.105", :netmask => "255.255.255.0"
  config.vm.provision "shell", inline: <<-SHELL
# update packages
apt-get update
#DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
locale-gen ja_JP.UTF-8
localectl set-locale LANG=ja_JP.UTF-8

# install couchdb
apt-get install apt-file
apt-get update
apt-get install software-properties-common
add-apt-repository ppa:couchdb/stable
apt-get -y install couchdb

sed -i -e 's/bind_address = 127.0.0.1/bind_address = 0.0.0.0/' /etc/couchdb/default.ini
systemctl restart couchdb.service


# install anaconda & jupyterlab
wget https://repo.continuum.io/archive/Anaconda3-5.1.0-Linux-x86_64.sh
chmod +x Anaconda3-5.1.0-Linux-x86_64.sh
./Anaconda3-5.1.0-Linux-x86_64.sh -b -p /opt/anaconda
source /opt/anaconda/bin/activate
pip install --upgrade pip
pip install jupyterlab

# install couchdb driver
pip install couchdb


useradd py
mkdir -p /home/py
chown -R py:py /home/py
sudo -u py bash -c "mkdir /home/py/.jupyter"
sudo -u py bash -c "cat << EOF > /home/py/.jupyter/jupyter_notebook_config.py
conf = get_config()
conf.NotebookApp.ip = '*'
conf.NotebookApp.open_browser = False
conf.NotebookApp.port = 8080
conf.NotebookApp.token = 'jupyter'
EOF"

cat << EOF > /etc/systemd/system/jupyter.service
[Unit]
Description=Jupyter notebook
[Service]
Type=simple
ExecStartPre=source /opt/anaconda/bin/activate
ExecStart=/opt/anaconda/bin/jupyter lab
User=py
Group=py
WorkingDirectory=/home/py
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl enable jupyter
sudo systemctl start jupyter


echo 'url for couchdb -> http://192.168.55.105:5984/_utils/index.html'
echo ''
echo 'url for jupyter lab -> http://192.168.55.105:8080/?token=jupyter'

SHELL
end

〇動作確認用コード
import couchdb

# connect to couchdb
couchserver = couchdb.Server("http://localhost:5984/")

# create a db
dbname = "testdb"
if dbname in couchserver:
  db = couchserver[dbname]
else:
  db = couchserver.create(dbname)

# store a document
doc_id, doc_rev = db.save({'message_id': 'hello world!'})

# get a document by id
print(db.get(doc_id))

〇Jupyter Labの画面


○関連情報
・CouchDBに関する他の記事はこちらを参照してください。

VagrantでJupyter LabとRedisをインストールした仮想マシン(Ubuntu16.04)を構築する

Jupyter Labでインタラクティブなコンピューティング環境を提供する事ができます。
以下のVagrantfileで、Jupyter LabとRedisをインストールした仮想マシン(Ubuntu16.04)を構築できます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/ubuntu-16.04"
  config.vm.hostname = "ub1604jupyterlabredis"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "ub1604jupyterlabredis"
     vbox.cpus = 2
     vbox.memory = 2048
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
config.vm.network "private_network", ip: "192.168.55.101", :netmask => "255.255.255.0"
config.vm.network "public_network", ip:"192.168.1.101", :netmask => "255.255.255.0"
  config.vm.provision "shell", inline: <<-SHELL
# update packages
apt-get update
#DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
locale-gen ja_JP.UTF-8
localectl set-locale LANG=ja_JP.UTF-8


# install redis
apt-get -y install redis-server

# put some data..
redis-cli << EOF
ping
flushall
set mykey "hello world."
get mykey
EOF


# install anaconda & jupyterlab
wget https://repo.continuum.io/archive/Anaconda3-5.1.0-Linux-x86_64.sh
chmod +x Anaconda3-5.1.0-Linux-x86_64.sh
./Anaconda3-5.1.0-Linux-x86_64.sh -b -p /opt/anaconda
source /opt/anaconda/bin/activate
pip install --upgrade pip
pip install jupyterlab

# install redis driver
pip install redis

useradd py
mkdir -p /home/py
chown -R py:py /home/py
sudo -u py bash -c "mkdir /home/py/.jupyter"
sudo -u py bash -c "cat << EOF > /home/py/.jupyter/jupyter_notebook_config.py
conf = get_config()
conf.NotebookApp.ip = '*'
conf.NotebookApp.open_browser = False
conf.NotebookApp.port = 8080
conf.NotebookApp.token = 'jupyter'
EOF"

cat << EOF > /etc/systemd/system/jupyter.service
[Unit]
Description=Jupyter notebook
[Service]
Type=simple
ExecStartPre=source /opt/anaconda/bin/activate
ExecStart=/opt/anaconda/bin/jupyter lab
User=py
Group=py
WorkingDirectory=/home/py
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl enable jupyter
sudo systemctl start jupyter

echo 'access -> http://192.168.55.101:8080/?token=jupyter'

SHELL
end

〇動作確認用コード
import redis

r = redis.StrictRedis(host='localhost', port=6379, db=0)
print(r.get("mykey"))

〇Jupyter Labの画面

2018年3月21日水曜日

DockerでDiffuseとXfce、XRDPがインストールされたイメージ(Ubuntu16.04)を作成する

Diffuseでファイルの内容の比較を行うことができます。

○Diffuseの画面

イメージのビルドとコンテナの実行方法

以下のDockerfileを使用して、DiffuseとXfce、XRDPをインストールしたイメージ(Ubuntu16.04)を作成する事ができます。
XRDPもインストールされているので、リモートデスクトップクライアントからDockerホストにアクセスすることでコンテナ内のデスクトップ環境を利用できます。ログイン時にユーザ名にubuntu、パスワードにubuntuを指定します。

Dockerfile
from ubuntu:16.04
run sed -i.bak -e "s#http://archive.ubuntu.com/ubuntu/#http://ftp.riken.jp/pub/Linux/ubuntu/#g" /etc/apt/sources.list \
  && apt-get update \
  && apt-get -y install software-properties-common \
  && add-apt-repository ppa:hermlnx/xrdp \
  && apt-get update \
  && apt-get install -y language-pack-ja-base language-pack-ja \
  && ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime \
  && echo 'Asia/Tokyo' > /etc/timezone \
  && locale-gen ja_JP.UTF-8 \
  && echo 'LC_ALL=ja_JP.UTF-8' > /etc/default/locale \
  && echo 'LANG=ja_JP.UTF-8' >> /etc/default/locale
env LANG=ja_JP.UTF-8 \
   LANGUAGE=ja_JP.UTF-8 \
   LC_ALL=ja_JP.UTF-8
run DEBIAN_FRONTEND=noninteractive apt-get -y install \
      xubuntu-desktop \
      xrdp \
      fcitx-mozc \
      fonts-ipafont-gothic \
      fonts-ipafont-mincho \
      vim \
      python-xdg \
      python-gtk2 \
      python-gtk2-dev \
  && wget https://sourceforge.net/projects/diffuse/files/diffuse/0.4.8/diffuse_0.4.8-1_all.deb \
  && dpkg -i diffuse_0.4.8-1_all.deb \
  && im-config -n fcitx \
  && apt-get clean \
  && rm -rf /var/cache/apt/archives/* \
  && rm -rf /var/lib/apt/lists/* \
  && groupadd -g 1000 ubuntu \
  && useradd -d /home/ubuntu -m -s /bin/bash -u 1000 -g 1000 ubuntu \
  && echo 'ubuntu:ubuntu' | chpasswd \
  && echo "ubuntu ALL=NOPASSWD: ALL" >> /etc/sudoers \
  && echo 'sed -i -e "s/^EnabledIMList.*$/EnabledIMList=fcitx-keyboard-jp:True,mozc:True,fcitx-keyboard-us:False/" /home/ubuntu/.config/fcitx/profile' >> /home/ubuntu/.xsessionrc \
  && chown ubuntu:ubuntu /home/ubuntu/.xsessionrc \
  && mkdir -p /home/ubuntu/work \
  && chown -R ubuntu:ubuntu /home/ubuntu/work \
  && echo $'#!/bin/bash\n\
export GTK_IM_MODULE=fcitx\n\
export QT_IM_MODULE=fcitx\n\
export XMODIFIERS="@im=fcitx"\n\
startxfce4\n\
sudo /etc/init.d/xrdp start\n\
sudo /etc/init.d/dbus start\n\
fcitx -r -d &\n\
/bin/bash' >> /start.sh \
  && chmod +x /start.sh
expose 3389
volume ["/home/ubuntu/work"]
cmd /start.sh

○イメージのビルド
Dockerfileと同じディレクトリで以下のコマンドを実行します。
docker build -t cub1604xfcediffuse .

○コンテナの実行
docker run -it -v `pwd`:/home/ubuntu/work -p 3389:3389 -u ubuntu cub1604xfcediffuse

関連情報

・diffuseのホームページ
https://sourceforge.net/projects/diffuse/

・Diffuseに関する他の記事はこちらを参照してください。

VagrantでApache Ignite2.4.0がインストールされた仮想マシン(Ubuntu16.04)の3ノードクラスタを構築する

Apache Igniteはメモリ指向の分散データベースです。
以下のVagrantfileを使用して、Apache Igniteがインストールされた3ノードクラスタを構築する事ができます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.define "ignode1" do |server|
    server.vm.box = "bento/ubuntu-16.04"
    server.vm.hostname = "ignode1"
server.vm.network :public_network, ip:"192.168.1.91"
server.vm.network "private_network", ip: "192.168.55.91", :netmask => "255.255.255.0"
    server.vm.provider :virtualbox do |vbox|
      vbox.name = "ignode1"
      vbox.cpus = 2
      vbox.memory = 2048
      vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
    end
    server.vm.provision "shell", inline: <<-SHELL
# add host entries...
sed -i -e 's/^.*ignode1$//' /etc/hosts
cat << EOF >> /etc/hosts
192.168.55.91    ignode1
192.168.55.92    ignode2
192.168.55.93    ignode3
EOF

# update packages
apt-get update
#DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
locale-gen ja_JP.UTF-8
localectl set-locale LANG=ja_JP.UTF-8
apt-get -y install unzip

# install java
apt-get -y install openjdk-8-jdk

# download and install zookeeper
wget http://ftp.riken.jp/net/apache/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11.tar.gz
tar xvfz zookeeper-3.4.11.tar.gz
mv zookeeper-3.4.11 /opt/zookeeper

# create configuration file.
cat << EOF > /opt/zookeeper/conf/zoo.cfg
tickTime=2000
dataDir=/var/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=ignode1:2888:3888
server.2=ignode2:2888:3888
server.3=ignode3:2888:3888
EOF

mkdir -p /var/zookeeper
echo '1' >> /var/zookeeper/myid

# register as a service.
cat << EOF > /etc/systemd/system/zookeeper.service
[Unit]
Description=Apache Zookeeper
Requires=network.target
After=network.target

[Service]
Type=forking
ExecStart=/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zoo.cfg
ExecStop=/opt/zookeeper/bin/zkServer.sh stop
WorkingDirectory=/opt/zookeeper

[Install]
WantedBy=multi-user.target
EOF
systemctl enable zookeeper.service
systemctl start zookeeper.service

# 2181ポートでlistenするまで待つ.
while netstat -lnt | awk '$4 ~ /:2181$/ {exit 1}'; do sleep 10; done
sleep 10

# Apache Igniteのインストール
wget http://www-us.apache.org/dist//ignite/2.4.0/apache-ignite-fabric-2.4.0-bin.zip
unzip apache-ignite-fabric-2.4.0-bin.zip
mv apache-ignite-fabric-2.4.0-bin /opt/ignite

cat << EOF > /etc/systemd/system/ignite.service
[Unit]
Description=Apache Ignite

[Service]
ExecStart=/opt/ignite/bin/ignite.sh
WorkingDirectory=/opt/ignite
KillMode=process
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF
systemctl enable ignite.service
systemctl start ignite.service

# 11211ポートでlistenするまで待つ.
while netstat -lnt | awk '$4 ~ /:11211$/ {exit 1}'; do sleep 10; done
sleep 10

SHELL
  end
  #----------------------------------------------------------------------------------------
  config.vm.define "ignode2" do |server|
    server.vm.box = "bento/ubuntu-16.04"
    server.vm.hostname = "ignode2"
server.vm.network :public_network, ip:"192.168.1.92"
server.vm.network "private_network", ip: "192.168.55.92", :netmask => "255.255.255.0"
    server.vm.provider :virtualbox do |vbox|
      vbox.name = "ignode2"
      vbox.cpus = 2
      vbox.memory = 2048
      vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
    end
    server.vm.provision "shell", inline: <<-SHELL
# add host entries...
sed -i -e 's/^.*ignode2$//' /etc/hosts
cat << EOF >> /etc/hosts
192.168.55.91    ignode1
192.168.55.92    ignode2
192.168.55.93    ignode3
EOF

# update packages
apt-get update
#DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
locale-gen ja_JP.UTF-8
localectl set-locale LANG=ja_JP.UTF-8
apt-get -y install unzip

# install java
apt-get -y install openjdk-8-jdk

# download and install zookeeper
wget http://ftp.riken.jp/net/apache/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11.tar.gz
tar xvfz zookeeper-3.4.11.tar.gz
mv zookeeper-3.4.11 /opt/zookeeper

# create configuration file.
cat << EOF > /opt/zookeeper/conf/zoo.cfg
tickTime=2000
dataDir=/var/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=ignode1:2888:3888
server.2=ignode2:2888:3888
server.3=ignode3:2888:3888
EOF

mkdir -p /var/zookeeper
echo '2' >> /var/zookeeper/myid

# register as a service.
cat << EOF > /etc/systemd/system/zookeeper.service
[Unit]
Description=Apache Zookeeper
Requires=network.target
After=network.target

[Service]
Type=forking
ExecStart=/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zoo.cfg
ExecStop=/opt/zookeeper/bin/zkServer.sh stop
WorkingDirectory=/opt/zookeeper

[Install]
WantedBy=multi-user.target
EOF
systemctl enable zookeeper.service
systemctl start zookeeper.service

# 2181ポートでlistenするまで待つ.
while netstat -lnt | awk '$4 ~ /:2181$/ {exit 1}'; do sleep 10; done
sleep 10

# Apache Igniteのインストール
wget http://www-us.apache.org/dist//ignite/2.4.0/apache-ignite-fabric-2.4.0-bin.zip
unzip apache-ignite-fabric-2.4.0-bin.zip
mv apache-ignite-fabric-2.4.0-bin /opt/ignite

cat << EOF > /etc/systemd/system/ignite.service
[Unit]
Description=Apache Ignite

[Service]
ExecStart=/opt/ignite/bin/ignite.sh
WorkingDirectory=/opt/ignite
KillMode=process
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF
systemctl enable ignite.service
systemctl start ignite.service

# 11211ポートでlistenするまで待つ.
while netstat -lnt | awk '$4 ~ /:11211$/ {exit 1}'; do sleep 10; done
sleep 10


SHELL
  end
  #----------------------------------------------------------------------------------------
  config.vm.define "ignode3" do |server|
    server.vm.box = "bento/ubuntu-16.04"
    server.vm.hostname = "ignode3"
server.vm.network :public_network, ip:"192.168.1.93"
server.vm.network "private_network", ip: "192.168.55.93", :netmask => "255.255.255.0"
    server.vm.provider :virtualbox do |vbox|
      vbox.name = "ignode3"
      vbox.cpus = 2
      vbox.memory = 2048
      vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
    end
    server.vm.provision "shell", inline: <<-SHELL
# add host entries...
sed -i -e 's/^.*ignode3$//' /etc/hosts
cat << EOF >> /etc/hosts
192.168.55.91    ignode1
192.168.55.92    ignode2
192.168.55.93    ignode3
EOF


# update packages
apt-get update
#DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
locale-gen ja_JP.UTF-8
localectl set-locale LANG=ja_JP.UTF-8
apt-get -y install unzip

# install java
apt-get -y install openjdk-8-jdk

# download and install zookeeper
wget http://ftp.riken.jp/net/apache/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11.tar.gz
tar xvfz zookeeper-3.4.11.tar.gz
mv zookeeper-3.4.11 /opt/zookeeper

# create configuration file.
cat << EOF > /opt/zookeeper/conf/zoo.cfg
tickTime=2000
dataDir=/var/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=ignode1:2888:3888
server.2=ignode2:2888:3888
server.3=ignode3:2888:3888
EOF

mkdir -p /var/zookeeper
echo '3' >> /var/zookeeper/myid

# register as a service.
cat << EOF > /etc/systemd/system/zookeeper.service
[Unit]
Description=Apache Zookeeper
Requires=network.target
After=network.target

[Service]
Type=forking
ExecStart=/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zoo.cfg
ExecStop=/opt/zookeeper/bin/zkServer.sh stop
WorkingDirectory=/opt/zookeeper

[Install]
WantedBy=multi-user.target
EOF
systemctl enable zookeeper.service
systemctl start zookeeper.service

# 2181ポートでlistenするまで待つ.
while netstat -lnt | awk '$4 ~ /:2181$/ {exit 1}'; do sleep 10; done
sleep 10

# Apache Igniteのインストール
wget http://www-us.apache.org/dist//ignite/2.4.0/apache-ignite-fabric-2.4.0-bin.zip
unzip apache-ignite-fabric-2.4.0-bin.zip
mv apache-ignite-fabric-2.4.0-bin /opt/ignite

cat << EOF > /etc/systemd/system/ignite.service
[Unit]
Description=Apache Ignite

[Service]
ExecStart=/opt/ignite/bin/ignite.sh
WorkingDirectory=/opt/ignite
KillMode=process
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF
systemctl enable ignite.service
systemctl start ignite.service

# 11211ポートでlistenするまで待つ.
while netstat -lnt | awk '$4 ~ /:11211$/ {exit 1}'; do sleep 10; done
sleep 10

# サンプルSQLの実行
wget http://wiki.metawerx.net/attach/SJSQL/sjsql.java
wget http://wiki.metawerx.net/attach/SJSQL/sjsql.class

cat << EOF >> /home/vagrant/test1.sql
create table test1 (test_id integer primary key, test_desc varchar(100));
insert into test1 (test_id, test_desc) values (1, 'test_id_001');
EOF
java -cp .:/opt/ignite/libs/ignite-core-2.4.0.jar sjsql org.apache.ignite.IgniteJdbcThinDriver jdbc:ignite:thin://ignode1/ test test /home/vagrant/test1.sql

cat << EOF >> /home/vagrant/test2.sql
insert into test1 (test_id, test_desc) values (2, 'test_id_002');
EOF
java -cp .:/opt/ignite/libs/ignite-core-2.4.0.jar sjsql org.apache.ignite.IgniteJdbcThinDriver jdbc:ignite:thin://ignode2/ test test /home/vagrant/test2.sql

cat << EOF >> /home/vagrant/test3.sql
insert into test1 (test_id, test_desc) values (3, 'test_id_003');
select * from test1;
EOF
java -cp .:/opt/ignite/libs/ignite-core-2.4.0.jar sjsql org.apache.ignite.IgniteJdbcThinDriver jdbc:ignite:thin://ignode3/ test test /home/vagrant/test3.sql


SHELL
  end
  #----------------------------------------------------------------------------------------

end


○関連情報
・Apache Igniteに関する他の記事はこちらを参照してください。

VagrantでDiffuse、Xfce Desktop環境、XRDPがインストールされた仮想マシン(Ubuntu16.04)を構築する

Diffuseで2つのテキストの差分を表示したり、マージしたりすることができます。

〇Diffuseの画面

仮想マシンの構築方法

以下のVagrantfileを使用して、Diffuse 、Xfce Desktop環境、XRDPをインストールした仮想マシン(Ubuntu16.04)を構築できます。
XRDPがインストールされているので、Windowsのリモートデスクトップで接続することができます。ユーザ名はVagrant、パスワードもVagrantでログオンできます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/ubuntu-16.04"
  config.vm.hostname = "ub1604xfcediffuse"
config.vm.network :public_network, ip:"192.168.1.114"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "ub1604xfcediffuse"
     vbox.gui = true
     vbox.cpus = 4
     vbox.memory = 4096
  end
  config.vm.provision "shell", inline: <<-SHELL
sed -i.bak -e "s#http://archive.ubuntu.com/ubuntu/#http://ftp.riken.jp/pub/Linux/ubuntu/#g" /etc/apt/sources.list
localectl set-locale LANG=ja_JP.UTF-8
localectl set-keymap jp106
apt-get update
apt-get -y install  xrdp fcitx-mozc xubuntu-desktop language-pack-ja language-pack-ja virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11
im-config -n fcitx

# install diffuse
apt-get -y install python-gtk2-dev
wget https://sourceforge.net/projects/diffuse/files/diffuse/0.4.8/diffuse_0.4.8-1_all.deb
dpkg -i diffuse_0.4.8-1_all.deb

init 5
SHELL
end

関連情報

・diffuseのホームページ
https://sourceforge.net/projects/diffuse/

・Diffuseに関する他の記事はこちらを参照してください。

dockerでBolt、MariaDBがインストールされたコンテナのイメージを作成する

BoltはPHP製のCMSです。
以下の手順で、Bolt、MariaDBのコンテナを構築・実行します。

○構築方法
1. Boltイメージの作成(Dockerfileがあるフォルダで実行)
docker build -t bolt .

Dockerfile
FROM alpine:3.7
WORKDIR /
RUN  apk update \
  && apk add --no-cache apache2 php7-apache2 php7 php7-mysqli php7-pdo php7-pdo_mysql php7-mbstring php7-session php7-curl php7-json php7-xml php7-zip php7-ctype php7-dom php7-simplexml php7-iconv php7-tokenizer php7-intl php7-posix openssl openrc \
  && rm -rf /var/cache/apk/* \
  && wget  https://bolt.cm/distribution/bolt-latest.tar.gz \
  && tar -xzf bolt-latest.tar.gz \
  && rm -f bolt-latest.tar.gz \
  && mkdir /opt \
  && mv bolt-v* /opt/bolt
WORKDIR /opt/bolt
RUN app/nut init \
  && sed -i -e 's#DocumentRoot "/var/www/localhost/htdocs"#DocumentRoot "/opt/bolt/public"#' /etc/apache2/httpd.conf \
  && sed -i -e 's#Directory "/var/www/localhost/htdocs"#Directory "/opt/bolt/public"#' /etc/apache2/httpd.conf \
  && sed -i -e 's#AllowOverride None#AllowOverride All#' /etc/apache2/httpd.conf \
  && sed -i -e 's/driver: sqlite/driver: mysql\n    username: root\n    password: bolt\n    host: db\n    port: 3306/' ./app/config/config.yml \
  && sed -i -e 's|#LoadModule rewrite_module modules/mod_rewrite.so|LoadModule rewrite_module modules/mod_rewrite.so|' /etc/apache2/httpd.conf \
  && chown -R apache:apache /opt/bolt \
  && mkdir -p /run/apache2
EXPOSE 80
VOLUME /opt/bolt
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

2. BoltとMySQLコンテナの構築・実行(docker-compose.ymlがあるフォルダで実行)
docker-compose up -d

docker-compose.yml
version: "2"
services:
  bolt:
    image: bolt
    container_name: "bolt"
    volumes:
      - "bolt-data:/opt/bolt"
    ports:
      - "80:80"
    depends_on:
      - db
    environment:
      BOLT_DB_HOST: "db:3306"
  db:
    image: mariadb:10.0
    container_name: "bolt-db"
    volumes:
      - "db-data:/var/lib/mysql"
    environment:
        MYSQL_DATABASE: bolt
        MYSQL_ROOT_PASSWORD: bolt
volumes:
  db-data:
    driver: local
  bolt-data:
    driver: local

3. ブラウザからhttp://<Dockerホスト名またはIP>/にアクセス
管理者ユーザの情報を入力する


○Boltの画面



○関連情報
・Boltに関する他の記事はこちらを参照してください。

2018年3月20日火曜日

VagrantでJupyter Labとmonetdbをインストールした仮想マシン(Ubuntu16.04)を構築する

Jupyter Labでインタラクティブなコンピューティング環境を提供する事ができます。MonetDBはオープンソースのカラム指向のデータベースです。

仮想マシンの構築方法

以下のVagrantfileで、Jupyter Labとmonetdbをインストールした仮想マシン(Ubuntu16.04)を構築できます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/ubuntu-16.04"
  config.vm.hostname = "ub1604jupyterlabmonetdb"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "ub1604jupyterlabmonetdb"
     vbox.cpus = 2
     vbox.memory = 2048
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
config.vm.network "private_network", ip: "192.168.55.101", :netmask => "255.255.255.0"
config.vm.network "public_network", ip:"192.168.1.101", :netmask => "255.255.255.0"
  config.vm.provision "shell", inline: <<-SHELL
# update packages
apt-get update
#DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
locale-gen ja_JP.UTF-8
localectl set-locale LANG=ja_JP.UTF-8


# install monetdb
cat << EOF >> /etc/apt/sources.list.d/monetdb.list
deb https://dev.monetdb.org/downloads/deb/ xenial monetdb
deb-src https://dev.monetdb.org/downloads/deb/ xenial monetdb
EOF
wget --output-document=- https://www.monetdb.org/downloads/MonetDB-GPG-KEY | apt-key add -
apt-get update
apt-get -y install monetdb5-sql monetdb-client

chown monetdb:monetdb /var/lib/monetdb

systemctl enable monetdbd
systemctl start monetdbd

/usr/bin/monetdb create testdb
/usr/bin/monetdb start testdb
/usr/bin/monetdb release testdb
cat << EOF > /home/vagrant/.monetdb
user=monetdb
password=monetdb
language=sql
save_history=true
EOF
sudo -u vagrant /usr/bin/mclient -d testdb -s 'create table test1 (message_id integer, message varchar(100))'
sudo -u vagrant /usr/bin/mclient -d testdb -s "insert into test1 values (100, 'hello world\\!')"
sudo -u vagrant /usr/bin/mclient -d testdb -s "select * from test1"

# install anaconda & jupyterlab
wget https://repo.continuum.io/archive/Anaconda3-5.1.0-Linux-x86_64.sh
chmod +x Anaconda3-5.1.0-Linux-x86_64.sh
./Anaconda3-5.1.0-Linux-x86_64.sh -b -p /opt/anaconda
source /opt/anaconda/bin/activate
pip install --upgrade pip
pip install jupyterlab

# install pymonetdb driver
pip install pymonetdb


useradd py
mkdir -p /home/py
chown -R py:py /home/py
sudo -u py bash -c "mkdir /home/py/.jupyter"
sudo -u py bash -c "cat << EOF > /home/py/.jupyter/jupyter_notebook_config.py
conf = get_config()
conf.NotebookApp.ip = '*'
conf.NotebookApp.open_browser = False
conf.NotebookApp.port = 8080
conf.NotebookApp.token = 'jupyter'
EOF"

cat << EOF > /etc/systemd/system/jupyter.service
[Unit]
Description=Jupyter notebook
[Service]
Type=simple
ExecStartPre=source /opt/anaconda/bin/activate
ExecStart=/opt/anaconda/bin/jupyter lab
User=py
Group=py
WorkingDirectory=/home/py
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl enable jupyter
sudo systemctl start jupyter

echo 'access -> http://192.168.55.101:8080/?token=jupyter'

SHELL
end

〇動作確認用コード
import pymonetdb

con = pymonetdb.connect(username="monetdb", password="monetdb", hostname="localhost", database="testdb")

try:
  cur= con.cursor()
  sql = "select message_id, message from test1"
  cur.execute(sql)

  for row in cur.fetchall():
    print(row)

except pymonetdb.Error as er:
    print('pymonetdb.Error:', er)
cur.close
con.close

〇Jupyter Labの画面

関連情報

・monetdbに関する他の記事はこちらを参照してください。

・プロジェクトgithubリポジトリ
https://github.com/MonetDB/MonetDB

VagrantでZim、Xfce Desktop環境、XRDPがインストールされた仮想マシン(Debian Stretch/9.3)を構築する

Zim はデスクトップWikiアプリです。
以下のVagrantfileを使用して、Zim、Xfce Desktop環境、XRDPをインストールした仮想マシン(Debian Stretch/9.3) を構築できます。
XRDPがインストールされているので、Windowsのリモートデスクトップで接続することができます。ユーザ名はVagrant、パスワードもVagrantでログオンできます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/debian-9.3"
  config.vm.hostname = "db93xfcekexi"
config.vm.network "public_network", ip:"192.168.1.115", :netmask => "255.255.255.0"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "db93xfcezim"
     vbox.gui = true
     vbox.cpus = 4
     vbox.memory = 4096
  end
  config.vm.provision "shell", inline: <<-SHELL
apt-get update
#DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
apt-get -y install task-japanese
sed -i -e 's/# ja_JP.UTF-8 UTF-8/ja_JP.UTF-8 UTF-8/' /etc/locale.gen
locale-gen
update-locale LANG=ja_JP.UTF-8
localectl set-locale LANG=ja_JP.UTF-8
localectl set-keymap jp106
apt-get update
cat << EOF > /etc/default/keyboard
XKBMODEL="pc106"
XKBLAYOUT="jp"
XKBVARIANT=""
XKBOPTIONS=""
BACKSPACE="guess"
EOF
cat << EOF > /home/vagrant/.xsessionrc
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
sed -i -e "s/^EnabledIMList.*$/EnabledIMList=fcitx-keyboard-jp:True,mozc:True,fcitx-keyboard-us:False/" /home/vagrant/.config/fcitx/profile
fcitx-remote -r
fcitx -r -d
EOF
chown vagrant:vagrant .xsessionrc
apt-get -y install  xrdp fcitx-mozc task-xfce-desktop tigervnc-standalone-server fcitx-tools

apt-get -y install build-essential module-assistant dkms
wget http://download.virtualbox.org/virtualbox/5.2.6/VBoxGuestAdditions_5.2.6.iso
mount -o loop -t iso9660 VBoxGuestAdditions_5.2.6.iso /media/
/media/VBoxLinuxAdditions.run


export DISPLAY=:0.0
im-config -n fcitx
sudo -u vagrant bash -i -c "export DISPLAY=:0.0 && fcitx -r"
cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.org
cat /etc/xrdp/xrdp.ini.org | awk '/\\[Globals\\]/,/\\[Xorg\\]/' | sed -e 's/\\[Xorg\\]//' > /etc/xrdp/xrdp.ini
cat << EOF >> /etc/xrdp/xrdp.ini
[Xvnc]
name=Xvnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=-1
EOF
systemctl restart xrdp
systemctl enable xrdp


# install zim
apt-get -y install python-xdg
wget http://zim-wiki.org/downloads/zim_0.67_all.deb
dpkg -i zim_0.67_all.deb


init 5
SHELL
end

〇Zimの画面


○関連情報
・Zimに関する他の記事はこちらを参照してください。