[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
ラベル LXD の投稿を表示しています。 すべての投稿を表示
ラベル LXD の投稿を表示しています。 すべての投稿を表示

2018年6月12日火曜日

LXDでMetabaseとPostgreSQLがインストールされたコンテナ(Ubuntu18.04)を構築する

Metabaseはオープンソースのデータ解析・可視化ツールです。

〇Metabaseの画面


〇コンテナの構築
1.LXDで以下のコマンドを実行して、PostgreSQLがインストールされたコンテナを構築します。
lxc init ubuntu:18.04 ub1804metabasepg
lxc config set ub1804metabasepg user.user-data - < config.yml
lxc start ub1804metabasepg

config.yml
#cloud-config

package_upgrade: true

hostname: ub1804metabasepg
manage_etc_hosts: true

write_files:
  - path: /etc/systemd/system/metabase.service
    content: |
      [Unit]
      Description=metabase
      [Service]
      Type=simple
      Environment="MB_JETTY_PORT=8080"
      Environment="MB_DB_TYPE=postgres"
      Environment="MB_DB_DBNAME=metabase"
      Environment="MB_DB_PORT=5432"
      Environment="MB_DB_USER=metabase"
      Environment="MB_DB_PASS=metabase"
      Environment="MB_DB_HOST=localhost"
      ExecStart=/usr/bin/java -Xmx2g -jar /opt/metabase/metabase.jar
      WorkingDirectory=/opt/metabase
      Restart=no
      [Install]
      WantedBy=multi-user.target

  - path: /tmp/init.sql
    content: |
      alter user postgres with password 'postgres';
      create user metabase with password 'metabase';
      grant all privileges on database metabase to metabase;

  - path: /tmp/sample.sql
    content: |
      create table messages (message_id integer not null, message varchar(100));
      insert into messages value (1, 'hello world.');
      insert into messages value (2, 'test message.');

runcmd:
  - 'apt-get update'
  - 'apt-get -y install language-pack-ja'
  - 'apt-get -y install postgresql-10'
  - "echo \"listen_addresses='*'\" >> /etc/postgresql/10/main/postgresql.conf"
  - 'echo "host    all         all         127.0.0.1/32          password" >> /etc/postgresql/10/main/pg_hba.conf'
  - 'echo "host    all         all         192.168.1.0/24          password" >> /etc/postgresql/10/main/pg_hba.conf'
  - 'echo "host    all         all         192.168.55.0/24          password" >> /etc/postgresql/10/main/pg_hba.conf'
  - 'su - postgres /bin/sh -c "export LC_ALL=ja_JP.UTF-8 && createdb -T template0 --locale=ja_JP.UTF-8 --encoding=UTF8 metabase"'
  - 'su - postgres /bin/sh -c "psql -f /tmp/init.sql"'
  - 'export PGPASSWORD=metabase && psql -U metabase -f sample.sql metabase'
  - 'echo "postgres:postgres" | chpasswd'
  - 'systemctl restart postgresql.service'
  - "apt-get -y install openjdk-8-jdk"
  - "wget http://downloads.metabase.com/v0.29.0/metabase.jar"
  - "mkdir -p /opt/metabase"
  - "mv metabase.jar /opt/metabase"
  - "systemctl enable metabase.service"
  - "systemctl start metabase.service"
final_message: "completed."

2.ブラウザからブラウザからhttp://<ホストのIP>:8080/にアクセスします。
ユーザ情報を入力します。


3.データベースのタイプを選択します


4.接続データベース情報を以下のように入力します
Database type: postgres
Host: localhost
Port: 5432
Database name: metabase
Database username: metabase
Database password: metabase
これ以降はお好みで選択します。


〇コンテナに入る
lxc exec ub1804metabasepg /bin/bash

〇ホストマシンの外部からコンテナにアクセスしたい場合
以下のコマンドを実行します。
PORT=8080 PUBLIC_IP=<ホストのIP> CONTAINER_IP=<コンテナのIP> sudo -E bash -c 'iptables -t nat -I PREROUTING -i eth0 -p TCP -d $PUBLIC_IP --dport $PORT -j DNAT --to-destination $CONTAINER_IP:$PORT -m comment --comment "container"'

〇コンテナのIPを調べる
コンテナのIPは以下のコマンドで調べることができます。
lxc list

〇コンテナの停止
lxc stop ub1804metabasepg

〇コンテナの削除
lxc delete ub1804metabasepg


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

2018年6月6日水曜日

LXDでphpMyAdminとMariaDBがインストールされたコンテナ(Ubuntu18.04)を構築する

phpMyAdminでブラウザからMariaDBを操作する事ができます。

〇phpMyAdminの画面


ブラウザでhttp://<ホストのIP>/phpmyadmin/にアクセスします。ユーザ名/パスワードはroot/rootまたはtest1/test1です。

〇構築方法
LXDで以下のコマンドを実行して、phpMyAdminとMariaDBがインストールされたコンテナを構築します。
lxc init ubuntu:18.04 ub1804phpmyadminmariadb
lxc config set ub1804phpmyadminmariadb user.user-data - < config.yml
lxc start ub1804phpmyadminmariadb

config.yml
#cloud-config

package_upgrade: true

hostname: ub1804phpmyadminmariadb
manage_etc_hosts: true

runcmd:
  - 'echo "mariadb-server-10.0 mysql-server/root_password password root" | sudo debconf-set-selections'
  - 'echo "mariadb-server-10.0 mysql-server/root_password_again password root" | sudo debconf-set-selections'
  - 'apt-get -y install mariadb-server'
  - "mysql -uroot -proot -e \"SET PASSWORD FOR root@localhost=PASSWORD('');\""
  - mysql -uroot -proot -e "CREATE DATABASE test1 DEFAULT CHARACTER SET utf8mb4;"
  - mysql -uroot -proot -e "CREATE USER test1@localhost IDENTIFIED BY 'test1';"
  - mysql -uroot -proot -e "GRANT ALL PRIVILEGES ON test1.* TO 'test1'@'localhost';"
  - mysql -uroot -proot -e "FLUSH PRIVILEGES;"
  - 'echo "phpmyadmin phpmyadmin/dbconfig-install boolean true" | debconf-set-selections'
  - 'echo "phpmyadmin phpmyadmin/mysql/admin-pass password root" | debconf-set-selections'
  - 'echo "phpmyadmin phpmyadmin/reconfigure-webserver multiselect apache2" | debconf-set-selections'
  - 'echo "phpmyadmin phpmyadmin/mysql/app-pass password root" | debconf-set-selections'
  - 'apt-get -y install phpmyadmin'
  - mysql -uroot -proot -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' identified by 'root';"
  - mysql -uroot -proot -e "FLUSH PRIVILEGES;"
  - service apache2 restart
final_message: "completed."

〇コンテナに入る
lxc exec ub1804phpmyadminmariadb /bin/bash

〇ホストマシンの外部からコンテナにアクセスしたい場合
PORT=80 PUBLIC_IP=<ホストのIP> CONTAINER_IP=<コンテナのIP> sudo -E bash -c 'iptables -t nat -I PREROUTING -i eth0 -p TCP -d $PUBLIC_IP --dport $PORT -j DNAT --to-destination $CONTAINER_IP:$PORT -m comment --comment "container"'

〇コンテナのIPを調べる
コンテナのIPは以下のコマンドで調べることができます。
lxc list

〇コンテナの停止
lxc stop ub1804phpmyadminmariadb

〇コンテナの削除
lxc delete ub1804phpmyadminmariadb


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

・プロジェクトwebサイト
https://www.phpmyadmin.net/

2018年6月4日月曜日

LXDでLycheeとMariaDBをインストールしたコンテナ(Ubuntu18.04)を構築する

LycheeはPHP製の画像管理ソフトです。

〇Lycheeの画面


〇コンテナの構築
1.LXDで以下のコマンドを実行して、LycheeとMariaDBがインストールされたコンテナを構築します。
lxc init ubuntu:18.04 ub1804lycheemariadb
lxc config set ub1804lycheemariadb user.user-data - < config.yml
lxc start ub1804lycheemariadb

config.yml
#cloud-config

package_upgrade: true

hostname: ub1804lycheemariadb
manage_etc_hosts: true

runcmd:
  - "apt-get update"
  - 'echo "mariadb-server-10.3 mysql-server/root_password password root" | sudo debconf-set-selections'
  - 'echo "mariadb-server-10.3 mysql-server/root_password_again password root" | sudo debconf-set-selections'
  - "apt-get -y install mariadb-server"
  - 'mysql -uroot -proot -e "CREATE DATABASE lychee DEFAULT CHARACTER SET utf8;"'
  - "mysql -uroot -proot -e \"CREATE USER lychee@localhost IDENTIFIED BY 'lychee';\""
  - "mysql -uroot -proot -e \"GRANT ALL PRIVILEGES ON lychee.* TO 'lychee'@'localhost';\""
  - 'mysql -uroot -proot -e "FLUSH PRIVILEGES;"'
  - 'echo "sql_mode=NO_ENGINE_SUBSTITUTION" >> /etc/mysql/mysql.conf.d/mysqld.cnf'
  - "systemctl restart mysql.service"
  - "apt-get -y install apache2 libapache2-mod-php7.2"
  - "apt-get -y install php7.2-gd php7.2-json php7.2-mysql php7.2-pdo php7.2-curl php7.2-mbstring"
  - "apt-get -y install unzip"
  - "wget  https://github.com/electerious/Lychee/archive/master.zip"
  - "unzip master.zip"
  - "mv Lychee-master /opt/lychee"
  - "chown -R www-data:www-data /opt/lychee"
  - "ln -s  /opt/lychee /var/www/html"
  - "systemctl restart apache2"

final_message: "completed."

2.初期設定画面1
以下を入力します。
Database Host : localhost
Database Username : lychee
Database Password : lychee
Database Name : lychee


3.初期設定画面2
ユーザ情報を入力します。


〇コンテナのIPを調べる
コンテナのIPは以下のコマンドで調べることができます。
lxc list

〇ホストマシンの外部からコンテナにアクセスしたい場合
以下のコマンドを実行します。
PORT=80 PUBLIC_IP=<ホストのIP> CONTAINER_IP=<コンテナのIP> sudo -E bash -c 'iptables -t nat -I PREROUTING -i eth0 -p TCP -d $PUBLIC_IP --dport $PORT -j DNAT --to-destination $CONTAINER_IP:$PORT -m comment --comment "container"'

〇コンテナに入る
lxc exec ub1804lycheemariadb /bin/bash

〇コンテナの停止
lxc stop ub1804lycheemariadb

〇コンテナの削除
lxc delete ub1804lycheemariadb


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

2018年6月3日日曜日

LXDでApache Cassandraをインストールしたコンテナ(Ubuntu18.04)を構築する

Apache Cassandraはjava製の分散データベースです。

〇構築方法
以下のコマンドを実行して1ノード構成のCassandraを構築することができます。
インストールと合わせて認証の設定とテストテーブルの作成・選択も実行します。
lxc init ubuntu:18.04 ub1804cassandra
lxc config set ub1804cassandra user.user-data - < config.yml
lxc start ub1804cassandra

config.yml
#cloud-config

package_upgrade: true

hostname: ub1804cassandra
manage_etc_hosts: true

write_files:
  - path: /tmp/sample.cql
    content: |
      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;

runcmd:
  - "apt-get update"
  - "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"
  - "while netstat -lnt | awk '$4 ~ /:9042$/ {exit 1}'; do sleep 10; done"
  - "sleep 10"
  - "cqlsh -u cassandra -p cassandra -f /tmp/sample.cql >> /tmp/output.log"

final_message: "completed."

〇コンテナのIPを調べる
コンテナのIPは以下のコマンドで調べることができます。
lxc list

〇ホストマシンの外部からコンテナにアクセスしたい場合
以下のコマンドを実行します。
PORT=9042 PUBLIC_IP=<ホストのIP> CONTAINER_IP=<コンテナのIP> sudo -E bash -c 'iptables -t nat -I PREROUTING -i eth0 -p TCP -d $PUBLIC_IP --dport $PORT -j DNAT --to-destination $CONTAINER_IP:$PORT -m comment --comment "container"'

〇コンテナに入る
lxc exec ub1804cassandra /bin/bash

〇コンテナの停止
lxc stop ub1804cassandra

〇コンテナの削除
lxc delete ub1804cassandra


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

2018年5月20日日曜日

LXDでApache Zookeeper3.4.12がインストールされたコンテナ(Ubuntu18.04)を構築する

Apache Zookeeperは設定情報や構成情報を管理する分散システムです。

〇コンテナの構築
LXDで以下のコマンドを実行して、CouchDBがインストールされたコンテナを構築します。
lxc init ubuntu:18.04 ub1804zookeeper
lxc config set ub1804zookeeper user.user-data - < config.yml
lxc start ub1804zookeeper

config.yml
#cloud-config

package_upgrade: true

hostname: ub1804zookeeper
manage_etc_hosts: true

write_files:
  - path: /etc/systemd/system/zookeeper.service
    content: |
      [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
  - path: /tmp/zoo.cfg
    content: |
      tickTime=2000
      dataDir=/var/zookeeper
      clientPort=2181

runcmd:
  - 'apt-get update'
  - 'apt-get -y install openjdk-8-jdk'
  - 'apt-get -y install unzip'
  - 'wget http://ftp.riken.jp/net/apache/zookeeper/zookeeper-3.4.12/zookeeper-3.4.12.tar.gz'
  - 'tar xvfz zookeeper-3.4.12.tar.gz'
  - 'mv zookeeper-3.4.12 /opt/zookeeper'
  - 'mv /tmp/zoo.cfg /opt/zookeeper/conf'
  - systemctl enable zookeeper.service
  - systemctl start zookeeper.service
  - "while netstat -lnt | awk '$4 ~ /:2181$/ {exit 1}'; do sleep 10; done"
  - "sleep 10"
  - "/opt/zookeeper/bin/zkCli.sh -server localhost:2181 create /test mydata"
  - "/opt/zookeeper/bin/zkCli.sh -server localhost:2181 ls /"
  - "/opt/zookeeper/bin/zkCli.sh -server localhost:2181 get /test"
final_message: "completed."

〇コンテナに入る
lxc exec ub1804zookeeper /bin/bash

〇コンテナのIPを調べる
コンテナのIPは以下のコマンドで調べることができます。
lxc list

〇コンテナの停止
lxc stop ub1804zookeeper

〇コンテナの削除
lxc delete ub1804zookeeper

2018年5月15日火曜日

LXDでApache SupersetとMariaDBがインストールされたコンテナ(Ubuntu18.04)を構築する

Apache SupersetはPython製のデータ可視化ツールです。

〇Apache Supersetの画面

ブラウザからhttp://<ホストのIP>:8088/にアクセスします。
デフォルトユーザ名はadmin、パスワードもadminです。

〇コンテナの構築
LXDで以下のコマンドを実行して、Apache SupersetとMariaDBがインストールされたコンテナを構築します。
lxc init ubuntu:18.04 ub1804supersetmariadb
lxc config set ub1804supersetmariadb user.user-data - < config.yml
lxc start ub1804supersetmariadb

config.yml
#cloud-config

package_upgrade: true

hostname: ub1804supersetmariadb
manage_etc_hosts: true

runcmd:
  - 'apt-get update'
  - 'echo "mariadb-server-10.0 mysql-server/root_password password root" | sudo debconf-set-selections'
  - 'echo "mariadb-server-10.0 mysql-server/root_password_again password root" | sudo debconf-set-selections'
  - 'apt-get -y install mariadb-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.');\""
  - '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'
  - 'apt-get -y install build-essential libssl-dev libffi-dev python-dev python-pip libsasl2-dev libldap2-dev'
  - 'apt-get -y install libmysqlclient-dev'
  - "/bin/bash -c 'source /opt/anaconda/bin/activate && pip install mysqlclient'"
  - "/bin/bash -c 'source /opt/anaconda/bin/activate && pip install --upgrade setuptools'"
  - "/bin/bash -c 'source /opt/anaconda/bin/activate && pip install superset'"
  - "/bin/bash -c 'source /opt/anaconda/bin/activate && pip install cryptography --upgrade'"
  - "mkdir -p /opt/superset"
  - "cd /opt/superset"
  - "/bin/bash -c 'source /opt/anaconda/bin/activate && fabmanager create-admin --app superset --username admin --firstname admin --lastname user --email admin@localhost.localdomain --password admin'"
  - "/bin/bash -c 'source /opt/anaconda/bin/activate && superset db upgrade'"
  - "/bin/bash -c 'source /opt/anaconda/bin/activate && superset load_examples'"
  - "/bin/bash -c 'source /opt/anaconda/bin/activate && superset init'"
  - "/bin/bash -c 'source /opt/anaconda/bin/activate && superset runserver -a 0.0.0.0 &'"
final_message: "completed."

〇コンテナに入る
lxc exec ub1804supersetmariadb /bin/bash

〇ホストマシンの外部からコンテナにアクセスしたい場合
以下のコマンドを実行します。
PORT=8080 PUBLIC_IP=<ホストのIP> CONTAINER_IP=<コンテナのIP> sudo -E bash -c 'iptables -t nat -I PREROUTING -i eth0 -p TCP -d $PUBLIC_IP --dport $PORT -j DNAT --to-destination $CONTAINER_IP:$PORT -m comment --comment "container"'

〇コンテナのIPを調べる
コンテナのIPは以下のコマンドで調べることができます。
lxc list

〇コンテナの停止
lxc stop ub1804supersetmariadb

〇コンテナの削除
lxc delete ub1804supersetmariadb

○データソースの追加
同じコンテナにインストールされたMySQLに接続するには、以下の画面のようにSQLAlchemy URIにmysql://test:test@localhost/testを指定します。


2018年5月14日月曜日

LXDでTextpatternとMySQLがインストールされたコンテナ(Ubuntu18.04)を構築する

TextpatternはPHP製のCMSです。

〇Textpatternの画面


○構築方法
以下のconfig.ymlを使用して、TextpatternとMySQLをインストールしたコンテナ(Ubuntu18.04)を構築する事ができます。

1. 以下の手順で、TextpatternとMySQLのコンテナを構築・実行します。
lxc init ubuntu:18.04 ub1804textpattern
lxc config set ub1804textpattern user.user-data - < config.yml
lxc start ub1804textpattern

config.yml
#cloud-config

package_upgrade: true

hostname: ub1804textpattern
manage_etc_hosts: true

write_files:
  - path: /tmp/textpattern.conf
    content: |
      <Directory /var/www/html>
      Options Indexes FollowSymLinks
      AllowOverride All
      Require all granted
      </Directory>

runcmd:
  - "apt-get update"
  - 'echo "mysql-server-5.7 mysql-server/root_password password root" | sudo debconf-set-selections'
  - 'echo "mysql-server-5.7 mysql-server/root_password_again password root" | sudo debconf-set-selections'
  - "apt-get -y install mysql-server-5.7"
  - 'mysql -uroot -proot -e "CREATE DATABASE lychee DEFAULT CHARACTER SET utf8;"'
  - "mysql -uroot -proot -e \"CREATE USER lychee@localhost IDENTIFIED BY 'lychee';\""
  - "mysql -uroot -proot -e \"GRANT ALL PRIVILEGES ON lychee.* TO 'lychee'@'localhost';\""
  - 'mysql -uroot -proot -e "FLUSH PRIVILEGES;"'
  - 'echo "sql_mode=NO_ENGINE_SUBSTITUTION" >> /etc/mysql/mysql.conf.d/mysqld.cnf'
  - "systemctl restart mysql.service"
  - "apt-get -y install apache2 libapache2-mod-php7.2"
  - "apt-get -y install php7.2-gd php7.2-json php7.2-mysql php7.2-pdo php7.2-curl php7.2-mbstring php7.0-json php7.2-mcrypt php7.2-xml php7.2-zip"
  - "mv /tmp/textpattern.conf /etc/apache2"
  - "wget https://textpattern.com/file_download/74/textpattern-4.6.2.tar.gz"
  - "tar xvfz textpattern-4.6.2.tar.gz"
  - "mv textpattern-4.6.2 /opt/textpattern"
  - "chown -R www-data:www-data /opt/textpattern"
  - "ln -s  /opt/textpattern /var/www/html"
  - "a2enmod rewrite"
  - "systemctl restart apache2.service"

final_message: "completed."

2. ブラウザからhttp://<ホスト名またはIP>/textpattern/textpattern/setup/index.phpにアクセス
インストール言語として日本語を選択して、submitボタンをクリックする


2. 以下の項目を入力し、「次へ」ボタンをクリックする
MySQLログイン: textpattern
MySQLパスワード:textpattern
MySQLサーバ:localhost
MySQLデータベース:textpattern
テーブルプリフィックス:(空のまま)
http(s)://:<ホスト名またはIP>/textpattern


5. 画面に表示されたconfig.phpの内容をコピーして、以下のコマンドを実行する
lxc exec ub1804textpattern /bin/bash
cd /opt/textpattern/textpattern
vi config.phpコマンドで、config.phpに内容を貼り付け。
実行後、「行いました!」ボタンをクリックする


6. 管理者ユーザの情報を入力、管理ページのテーマを選択して「次へ」ボタンをクリックする


7. 完了画面から「今すぐログイン」ボタンをクリックする


〇コンテナのIPを調べる
コンテナのIPは以下のコマンドで調べることができます。
lxc list

〇ホストマシンの外部からコンテナにアクセスしたい場合
以下のコマンドを実行します。
PORT=80 PUBLIC_IP=<ホストのIP> CONTAINER_IP=<コンテナのIP> sudo -E bash -c 'iptables -t nat -I PREROUTING -i eth0 -p TCP -d $PUBLIC_IP --dport $PORT -j DNAT --to-destination $CONTAINER_IP:$PORT -m comment --comment "container"'

〇コンテナに入る
lxc exec ub1804textpattern /bin/bash

〇コンテナの停止
lxc stop ub1804textpattern

〇コンテナの削除
lxc delete ub1804textpattern


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

2018年5月13日日曜日

LXDでVisual Studio CodeとXfce Desktop環境、XRDPをインストールしたコンテナ(Ubuntu16.04)を構築する

Visual Studio CodeはMicrosoft製のテキストエディターです。
XRDPもインストールされているので、リモートデスクトップから接続することができます。ユーザはubuntu、パスワードもubuntuです。

〇Visual Studio Codeの画面


〇構築方法
LXDで以下のコマンドを実行して、Visual Studio CodeとXfce Desktop環境インストールされたコンテナを構築します。
lxc init ubuntu:16.04 lxdxfcevscode
lxc config set lxdxfcevscode user.user-data - < config.yml
lxc start lxdxfcevscode

config.yml
#cloud-config

package_upgrade: true

hostname: lxdxfcevscode
manage_etc_hosts: true

write_files:
  - path: /tmp/.xsessionrc
    content: |
      export LANG=ja_JP.UTF-8
      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/ubuntu/.config/fcitx/profile
      fcitx -r -d &

  - path: /etc/default/keyboard
    content: |
      XKBMODEL="pc106"
      XKBLAYOUT="jp"
      XKBVARIANT=""
      XKBOPTIONS=""
      BACKSPACE="guess"

runcmd:
  - '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 software-properties-common'
  - 'add-apt-repository ppa:hermlnx/xrdp'
  - 'apt-get update'
  - 'echo "export LANG=ja_JP.UTF-8" >> /home/ubuntu/.bash_profile'
  - "echo 'ubuntu:ubuntu' | chpasswd"
  - 'apt-get -y install xrdp fcitx-mozc xubuntu-desktop language-pack-ja language-pack-ja'
  - 'im-config -n fcitx'
  - 'mv /tmp/.xsessionrc /home/ubuntu'
  - 'chown -R ubuntu:ubuntu /home/ubuntu'
  - 'wget -O vsc.deb https://go.microsoft.com/fwlink/?LinkID=760868'
  - 'dpkg -i vsc.deb'
  - 'fcitx -r -d &'

final_message: "completed."

〇コンテナのIPを調べる
コンテナのIPは以下のコマンドで調べることができます。
lxc list

〇ホストマシンの外部からコンテナにアクセスしたい場合
以下のコマンドを実行します。
PORT=3389 PUBLIC_IP=<ホストのIP> CONTAINER_IP=<コンテナのIP> sudo -E bash -c 'iptables -t nat -I PREROUTING -i eth0 -p TCP -d $PUBLIC_IP --dport $PORT -j DNAT --to-destination $CONTAINER_IP:$PORT -m comment --comment "container"'

〇コンテナに入る
lxc exec lxdxfcevscode /bin/bash

〇コンテナの停止
lxc stop lxdxfcevscode

〇コンテナの削除
lxc delete lxdxfcevscode


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

LXDでRStudioとXfce Desktop環境、XRDPをインストールしたコンテナ(Ubuntu16.04)を構築する

RStudioはR言語のIDEです。
XRDPもインストールされているので、リモートデスクトップから接続することができます。ユーザはubuntu、パスワードもubuntuです。

〇RStudioの画面


〇構築方法
LXDで以下のコマンドを実行して、RStudioとXfce Desktop環境インストールされたコンテナを構築します。
lxc init ubuntu:16.04 lxdxfcerstudio
lxc config set lxdxfcerstudio user.user-data - < config.yml
lxc start lxdxfcerstudio

config.yml
#cloud-config

package_upgrade: true

hostname: lxdxfcerstudio
manage_etc_hosts: true

write_files:
  - path: /tmp/.xsessionrc
    content: |
      export LANG=ja_JP.UTF-8
      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/ubuntu/.config/fcitx/profile
      fcitx -r -d &

  - path: /etc/default/keyboard
    content: |
      XKBMODEL="pc106"
      XKBLAYOUT="jp"
      XKBVARIANT=""
      XKBOPTIONS=""
      BACKSPACE="guess"

runcmd:
  - '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 software-properties-common'
  - 'add-apt-repository ppa:hermlnx/xrdp'
  - 'apt-get update'
  - 'echo "export LANG=ja_JP.UTF-8" >> /home/ubuntu/.bash_profile'
  - "echo 'ubuntu:ubuntu' | chpasswd"
  - 'apt-get -y install xrdp fcitx-mozc xubuntu-desktop language-pack-ja language-pack-ja'
  - 'im-config -n fcitx'
  - 'mv /tmp/.xsessionrc /home/ubuntu'
  - 'chown -R ubuntu:ubuntu /home/ubuntu'
  - 'echo "deb https://cran.rstudio.com/bin/linux/ubuntu $(lsb_release -cs)/" | sudo tee -a /etc/apt/sources.list'
  - "gpg --keyserver keyserver.ubuntu.com --recv-key E084DAB9"
  - "gpg -a --export E084DAB9 | sudo apt-key add -"
  - "apt-get update"
  - "apt-get -y install r-base"
  - "apt-get -y install libjpeg62"
  - "wget https://download1.rstudio.org/rstudio-xenial-1.1.383-amd64.deb"
  - "dpkg -i rstudio-xenial-1.1.383-amd64.deb"
  - 'fcitx -r -d &'

final_message: "completed."

〇コンテナのIPを調べる
コンテナのIPは以下のコマンドで調べることができます。
lxc list

〇ホストマシンの外部からコンテナにアクセスしたい場合
以下のコマンドを実行します。
PORT=3389 PUBLIC_IP=<ホストのIP> CONTAINER_IP=<コンテナのIP> sudo -E bash -c 'iptables -t nat -I PREROUTING -i eth0 -p TCP -d $PUBLIC_IP --dport $PORT -j DNAT --to-destination $CONTAINER_IP:$PORT -m comment --comment "container"'

〇コンテナに入る
lxc exec lxdxfcerstudio /bin/bash

〇コンテナの停止
lxc stop lxdxfcerstudio

〇コンテナの削除
lxc delete lxdxfcerstudio


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

LXDでDokuWikiをインストールしたコンテナ(Ubuntu18.04)を構築する

DokuWikiはPHP製のWikiアプリケーションです。

〇DokuWikiの画面


〇コンテナの構築
LXDで以下のコマンドを実行して、DokuWikiがインストールされたコンテナを構築します。
lxc init ubuntu:18.04 ub1804dokuwiki
lxc config set ub1804dokuwiki user.user-data - < config.yml
lxc start ub1804dokuwiki

config.yml
#cloud-config

package_upgrade: true

hostname: ub1804dokuwiki
manage_etc_hosts: true

runcmd:
  - "apt-get update"
  - "apt-get -y install php7.2 libapache2-mod-php7.2 apache2 php7.2-mbstring php7.2-xml"
  - "wget http://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz"
  - "tar xvfz dokuwiki-stable.tgz"
  - "mv dokuwiki-2018-04-22a /var/www/html/dokuwiki"
  - "chown -R www-data:www-data /var/www/html/dokuwiki"
  - "systemctl restart apache2"

final_message: "completed."

〇ホストマシンの外部からコンテナにアクセスしたい場合
以下のコマンドを実行します。
PORT=80 PUBLIC_IP=<ホストのIP> CONTAINER_IP=<コンテナのIP> sudo -E bash -c 'iptables -t nat -I PREROUTING -i eth0 -p TCP -d $PUBLIC_IP --dport $PORT -j DNAT --to-destination $CONTAINER_IP:$PORT -m comment --comment "container"'

コンテナ構築後、ブラウザからhttp://<ホストのIP>/dokuwiki/にアクセスします。

〇コンテナに入る
lxc exec ub1804dokuwiki /bin/bash

〇コンテナのIPを調べる
コンテナのIPは以下のコマンドで調べることができます。
lxc list

〇コンテナの停止
lxc stop ub1804dokuwiki

〇コンテナの削除
lxc delete ub1804dokuwiki


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

Zimというデスクトップアプリケーションで自分だけのWikiを作成することもできます。

2018年5月12日土曜日

LXDでApache SupersetとPostgreSQLがインストールされたコンテナ(Ubuntu18.04)を構築する

Apache SupersetはPython製のデータ可視化ツールです。

〇Apache Supersetの画面

ブラウザからhttp://<ホストのIP>:8088/にアクセスします。
デフォルトユーザ名はadmin、パスワードもadminです。

〇コンテナの構築
LXDで以下のコマンドを実行して、Apache SupersetとPostgreSQLがインストールされたコンテナを構築します。
lxc init ubuntu:18.04 ub1804supersetpg
lxc config set ub1804supersetpg user.user-data - < config.yml
lxc config set ub1804supersetpg environment.LC_ALL ja_JP.UTF-8
lxc start ub1804supersetpg

config.yml
#cloud-config

package_upgrade: true

hostname: ub1804supersetpg
manage_etc_hosts: true

write_files:
  - path: /tmp/init.sql
    content: |
      alter user postgres with password 'postgres';
      create user test with password 'test';
      grant all privileges on database test to test;

  - path: /tmp/sample.sql
    content: |
      create table messages (message_id integer not null, message varchar(100));
      insert into messages value (1, 'hello world.');
      insert into messages value (2, 'test message.');

runcmd:
  - 'apt-get update'
  - 'apt-get -y install language-pack-ja'
  - 'apt-get -y install postgresql-10'
  - "echo \"listen_addresses='*'\" >> /etc/postgresql/10/main/postgresql.conf"
  - 'echo "host    all         all         127.0.0.1/32          password" >> /etc/postgresql/10/main/pg_hba.conf'
  - 'echo "host    all         all         192.168.1.0/24          password" >> /etc/postgresql/10/main/pg_hba.conf'
  - 'echo "host    all         all         192.168.55.0/24          password" >> /etc/postgresql/10/main/pg_hba.conf'
  - 'su - postgres /bin/sh -c "export LC_ALL=ja_JP.UTF8 && createdb -T template0 --locale=ja_JP.UTF-8 --encoding=UTF8 test"'
  - 'su - postgres /bin/sh -c "psql -f /tmp/init.sql"'
  - 'export PGPASSWORD=test && psql -U test -f sample.sql'
  - 'echo "postgres:postgres" | chpasswd'
  - 'systemctl restart postgresql.service'
  - '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'
  - 'apt-get -y install libpq-dev python-dev gcc g++ libssl-dev libsasl2-dev'
  - "/bin/bash -c 'source /opt/anaconda/bin/activate && pip install psycopg2-binary'"
  - "/bin/bash -c 'source /opt/anaconda/bin/activate && pip install --upgrade setuptools'"
  - "/bin/bash -c 'source /opt/anaconda/bin/activate && pip install superset'"
  - "/bin/bash -c 'source /opt/anaconda/bin/activate && pip install cryptography --upgrade'"
  - "/bin/bash -c 'source /opt/anaconda/bin/activate && fabmanager create-admin --app superset --username admin --firstname admin --lastname user --email admin@localhost.localdomain --password admin'"
  - "/bin/bash -c 'source /opt/anaconda/bin/activate && superset db upgrade'"
  - "/bin/bash -c 'source /opt/anaconda/bin/activate && superset load_examples'"
  - "/bin/bash -c 'source /opt/anaconda/bin/activate && superset init'"
  - "/bin/bash -c 'source /opt/anaconda/bin/activate && superset runserver -a 0.0.0.0 &'"
final_message: "completed."

〇コンテナに入る
lxc exec ub1804supersetpg /bin/bash

〇ホストマシンの外部からコンテナにアクセスしたい場合
以下のコマンドを実行します。
PORT=8080 PUBLIC_IP=<ホストのIP> CONTAINER_IP=<コンテナのIP> sudo -E bash -c 'iptables -t nat -I PREROUTING -i eth0 -p TCP -d $PUBLIC_IP --dport $PORT -j DNAT --to-destination $CONTAINER_IP:$PORT -m comment --comment "container"'

〇コンテナのIPを調べる
コンテナのIPは以下のコマンドで調べることができます。
lxc list

〇コンテナの停止
lxc stop ub1804supersetpg

〇コンテナの削除
lxc delete ub1804supersetpg

○データソースの追加
同じ仮想マシンにインストールされたPostgreSQLに接続するには、以下の画面のようにSQLAlchemy URIにpostgresql+psycopg2://test:test@localhost/testを指定します。



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

2018年5月11日金曜日

LXDでApache SupersetとMySQLがインストールされたコンテナ(Ubuntu18.04)を構築する

Apache SupersetはPython製のデータ可視化ツールです。

〇Apache Supersetの画面

ブラウザからhttp://<ホストのIP>:8088/にアクセスします。デフォルトユーザ名はadmin、パスワードもadminです。

〇コンテナの構築
LXDで以下のコマンドを実行して、MySQLがインストールされたコンテナを構築します。
lxc init ubuntu:18.04 ub1804supersetmysql
lxc config set ub1804supersetmysql user.user-data - < config.yml
lxc start ub1804supersetmysql

config.yml
#cloud-config

package_upgrade: true

hostname: ub1804supersetmysql
manage_etc_hosts: true

runcmd:
  - 'apt-get update'
  - 'wget https://dev.mysql.com/get/mysql-apt-config_0.8.9-1_all.deb'
  - 'echo mysql-apt-config mysql-apt-config/enable-repo select mysql-5.7-dmr | sudo debconf-set-selections'
  - 'export DEBIAN_FRONTEND=noninteractive && 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.');\""
  - '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'
  - 'apt-get -y install build-essential libssl-dev libffi-dev python-dev python-pip libsasl2-dev libldap2-dev'
  - 'apt-get -y install libmysqlclient-dev'
  - "/bin/bash -c 'source /opt/anaconda/bin/activate && pip install mysqlclient'"
  - "/bin/bash -c 'source /opt/anaconda/bin/activate && pip install --upgrade setuptools'"
  - "/bin/bash -c 'source /opt/anaconda/bin/activate && pip install superset'"
  - "/bin/bash -c 'source /opt/anaconda/bin/activate && pip install cryptography --upgrade'"
  - "/bin/bash -c 'source /opt/anaconda/bin/activate && fabmanager create-admin --app superset --username admin --firstname admin --lastname user --email admin@localhost.localdomain --password admin'"
  - "/bin/bash -c 'source /opt/anaconda/bin/activate && superset db upgrade'"
  - "/bin/bash -c 'source /opt/anaconda/bin/activate && superset load_examples'"
  - "/bin/bash -c 'source /opt/anaconda/bin/activate && superset init'"
  - "/bin/bash -c 'source /opt/anaconda/bin/activate && superset runserver -a 0.0.0.0 &'"
final_message: "completed."

○データソースの追加
同じコンテナにインストールされたMySQLに接続するには、以下の画面のようにSQLAlchemy URIにmysql://test:test@localhost/testを指定します。


〇コンテナに入る
lxc exec ub1804supersetmysql /bin/bash

〇ホストマシンの外部からコンテナにアクセスしたい場合
以下のコマンドを実行します。
PORT=8080 PUBLIC_IP=<ホストのIP> CONTAINER_IP=<コンテナのIP> sudo -E bash -c 'iptables -t nat -I PREROUTING -i eth0 -p TCP -d $PUBLIC_IP --dport $PORT -j DNAT --to-destination $CONTAINER_IP:$PORT -m comment --comment "container"'

〇コンテナのIPを調べる
コンテナのIPは以下のコマンドで調べることができます。
lxc list

〇コンテナの停止
lxc stop ub1804supersetmysql

〇コンテナの削除
lxc delete ub1804supersetmysql

LXDでEclipse OxygenとXfce Desktop環境、XRDPをインストールしたコンテナ(Ubuntu16.04)を構築する

Atomはオープンソースのテキストエディタです。
XRDPもインストールされているので、リモートデスクトップから接続することができます。ユーザはubuntu、パスワードもubuntuです。

〇Eclipse Oxygenの画面


〇構築方法
LXDで以下のコマンドを実行して、Eclipse OxygenとXfce Desktop環境インストールされたコンテナを構築します。
lxc init ubuntu:16.04 lxdxfceeclipse
lxc config set lxdxfceeclipse user.user-data - < config.yml
lxc start lxdxfceeclipse

config.yml
#cloud-config

package_upgrade: true

hostname: lxdxfceeclipse
manage_etc_hosts: true

write_files:
  - path: /tmp/.xsessionrc
    content: |
      export LANG=ja_JP.UTF-8
      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/ubuntu/.config/fcitx/profile
      fcitx -r -d &

  - path: /etc/default/keyboard
    content: |
      XKBMODEL="pc106"
      XKBLAYOUT="jp"
      XKBVARIANT=""
      XKBOPTIONS=""
      BACKSPACE="guess"

  - path: /tmp/eclipse.desktop
    content: |
      #!/usr/bin/env xdg-open
      [Desktop Entry]
      Version=1.0
      Type=Application
      Terminal=false
      Exec=/opt/eclipse/eclipse
      Name=eclipse
      Categories=Development;

runcmd:
  - '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 software-properties-common'
  - 'add-apt-repository ppa:hermlnx/xrdp'
  - 'apt-get update'
  - 'echo "export LANG=ja_JP.UTF-8" >> /home/ubuntu/.bash_profile'
  - "echo 'ubuntu:ubuntu' | chpasswd"
  - 'apt-get -y install xrdp fcitx-mozc xubuntu-desktop language-pack-ja language-pack-ja'
  - 'im-config -n fcitx'
  - 'mv /tmp/.xsessionrc /home/ubuntu'
  - 'chown -R ubuntu:ubuntu /home/ubuntu'
  - 'apt-get -y install openjdk-8-jdk'
  - 'wget http://ftp.yz.yamagata-u.ac.jp/pub/eclipse/technology/epp/downloads/release/oxygen/3a/eclipse-java-oxygen-3a-linux-gtk-x86_64.tar.gz'
  - 'tar xvfz eclipse-java-oxygen-3a-linux-gtk-x86_64.tar.gz'
  - 'mv eclipse /opt'
  - 'mv /tmp/eclipse.desktop /usr/share/applications'
  - 'fcitx -r -d &'

final_message: "completed."

〇コンテナのIPを調べる
コンテナのIPは以下のコマンドで調べることができます。
lxc list

〇ホストマシンの外部からコンテナにアクセスしたい場合
以下のコマンドを実行します。
PORT=3389 PUBLIC_IP=<ホストのIP> CONTAINER_IP=<コンテナのIP> sudo -E bash -c 'iptables -t nat -I PREROUTING -i eth0 -p TCP -d $PUBLIC_IP --dport $PORT -j DNAT --to-destination $CONTAINER_IP:$PORT -m comment --comment "container"'

〇コンテナに入る
lxc exec lxdxfceeclipse /bin/bash

〇コンテナの停止
lxc stop lxdxfceeclipse

〇コンテナの削除
lxc delete lxdxfceeclipse


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

2018年5月10日木曜日

LXDでMySQLがインストールされたコンテナ(Ubuntu18.04)を構築する

MySQLはオープンソースのリレーショナルデータベースです。

〇実行方法
コンテナに入って、以下のようなmysqlコマンドでデータベースに接続する事ができます。
mysql -uroot -proot
mysql -h localhost -utest -ptest test

〇コンテナの構築
LXDで以下のコマンドを実行して、MySQLがインストールされたコンテナを構築します。
lxc init ubuntu:18.04 ub1804mysql
lxc config set ub1804mysql user.user-data - < config.yml
lxc start ub1804mysql

config.yml
#cloud-config

package_upgrade: true

hostname: ub1804mysql
manage_etc_hosts: true

runcmd:
  - 'apt-get update'
  - 'locale-gen ja_JP.UTF-8'
  - 'wget https://dev.mysql.com/get/mysql-apt-config_0.8.9-1_all.deb'
  - 'echo mysql-apt-config mysql-apt-config/enable-repo select mysql-5.7-dmr | sudo debconf-set-selections'
  - 'export DEBIAN_FRONTEND=noninteractive && 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.');\""
  - 'mysql -utest -ptest test -e "select * from messages;"'
final_message: "completed."

〇コンテナに入る
lxc exec ub1804mysql /bin/bash

〇ホストマシンの外部からコンテナにアクセスしたい場合
以下のコマンドを実行します。
PORT=3306 PUBLIC_IP=<ホストのIP> CONTAINER_IP=<コンテナのIP> sudo -E bash -c 'iptables -t nat -I PREROUTING -i eth0 -p TCP -d $PUBLIC_IP --dport $PORT -j DNAT --to-destination $CONTAINER_IP:$PORT -m comment --comment "container"'

〇コンテナのIPを調べる
コンテナのIPは以下のコマンドで調べることができます。
lxc list

〇コンテナの停止
lxc stop ub1804mysql

〇コンテナの削除
lxc delete ub1804mysql

2018年5月9日水曜日

LXDでOrientDBがインストールされたコンテナ(Ubuntu18.04)を構築する

OrientDBはJava製のNoSQLデータベースです。

〇OrientDB Studioの画面

ブラウザからhttp://<ホスト名またはIP>:2480にアクセスします。デフォルトユーザはadmin、パスワードはadminです。

〇コンテナの構築
LXDで以下のコマンドを実行して、Apache Ignite2.4.0がインストールされたコンテナを構築します。
lxc init ubuntu:18.04 ub1804orientdb
lxc config set ub1804orientdb user.user-data - < config.yml
lxc start ub1804orientdb

config.yml
#cloud-config

package_upgrade: true

hostname: ub1804orientdb
manage_etc_hosts: true

write_files:
  - path: /etc/systemd/system/orientdb.service
    content: |
      [Unit]
      Description=OrientDB
      [Service]
      Type=simple
      EnvironmentFile=/etc/sysconfig/orientdb
      ExecStart=/opt/orientdb/bin/server.sh
      ExecStop=/opt/orientdb/bin/shutdown.sh
      WorkingDirectory=/opt/orientdb
      KillMode=process
      [Install]
      WantedBy=multi-user.target

  - path: /etc/sysconfig/orientdb
    content: |
      ORIENTDB_ROOT_PASSWORD=root

runcmd:
  - 'apt-get update'
  - 'apt-get -y install openjdk-8-jdk'
  - 'apt-get -y install unzip'
  - "wget https://bit.ly/orientdb-ce-2-2-34 -O orientdb-community-2.2.34.zip"
  - "unzip orientdb-community-2.2.34.zip"
  - "mv orientdb-community-2.2.34 /opt/orientdb"
  - "systemctl enable orientdb.service"
  - "systemctl start orientdb.service"
final_message: "completed."

〇コンテナに入る
lxc exec ub1804orientdb /bin/bash

〇ホストマシンの外部からコンテナにアクセスしたい場合
以下のコマンドを実行します。
PORT=2480 PUBLIC_IP=<ホストのIP> CONTAINER_IP=<コンテナのIP> sudo -E bash -c 'iptables -t nat -I PREROUTING -i eth0 -p TCP -d $PUBLIC_IP --dport $PORT -j DNAT --to-destination $CONTAINER_IP:$PORT -m comment --comment "container"'

〇コンテナのIPを調べる
コンテナのIPは以下のコマンドで調べることができます。
lxc list

〇コンテナの停止
lxc stop ub1804orientdb

〇コンテナの削除
lxc delete ub1804orientdb

2018年5月8日火曜日

LXDでLycheeとMySQLをインストールしたコンテナ(Ubuntu18.04)を構築する

LycheeはPHP製の画像管理ソフトです。

〇Lycheeの画面


〇コンテナの構築
1.LXDで以下のコマンドを実行して、LycheeとMySQLがインストールされたコンテナを構築します。
lxc init ubuntu:18.04 ub1804lychee
lxc config set ub1804lychee user.user-data - < config.yml
lxc start ub1804lychee

config.yml
#cloud-config

package_upgrade: true

hostname: ub1804lychee
manage_etc_hosts: true

runcmd:
  - "apt-get update"
  - 'echo "mysql-server-5.7 mysql-server/root_password password root" | sudo debconf-set-selections'
  - 'echo "mysql-server-5.7 mysql-server/root_password_again password root" | sudo debconf-set-selections'
  - "apt-get -y install mysql-server-5.7"
  - 'mysql -uroot -proot -e "CREATE DATABASE lychee DEFAULT CHARACTER SET utf8;"'
  - "mysql -uroot -proot -e \"CREATE USER lychee@localhost IDENTIFIED BY 'lychee';\""
  - "mysql -uroot -proot -e \"GRANT ALL PRIVILEGES ON lychee.* TO 'lychee'@'localhost';\""
  - 'mysql -uroot -proot -e "FLUSH PRIVILEGES;"'
  - 'echo "sql_mode=NO_ENGINE_SUBSTITUTION" >> /etc/mysql/mysql.conf.d/mysqld.cnf'
  - "systemctl restart mysql.service"
  - "apt-get -y install apache2 libapache2-mod-php7.2"
  - "apt-get -y install php7.2-gd php7.2-json php7.2-mysql php7.2-pdo php7.2-curl php7.2-mbstring"
  - "apt-get -y install unzip"
  - "wget  https://github.com/electerious/Lychee/archive/master.zip"
  - "unzip master.zip"
  - "mv Lychee-master /opt/lychee"
  - "chown -R www-data:www-data /opt/lychee"
  - "ln -s  /opt/lychee /var/www/html"
  - "systemctl restart apache2"

final_message: "completed."

2.初期設定画面1
以下を入力します。
Database Host : localhost
Database Username : lychee
Database Password : lychee
Database Name : lychee


3.初期設定画面2
ユーザ情報を入力します。


〇コンテナのIPを調べる
コンテナのIPは以下のコマンドで調べることができます。
lxc list

〇ホストマシンの外部からコンテナにアクセスしたい場合
以下のコマンドを実行します。
PORT=80 PUBLIC_IP=<ホストのIP> CONTAINER_IP=<コンテナのIP> sudo -E bash -c 'iptables -t nat -I PREROUTING -i eth0 -p TCP -d $PUBLIC_IP --dport $PORT -j DNAT --to-destination $CONTAINER_IP:$PORT -m comment --comment "container"'

〇コンテナに入る
lxc exec ub1804lychee /bin/bash

〇コンテナの停止
lxc stop ub1804lychee

〇コンテナの削除
lxc delete ub1804lychee


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

2018年5月7日月曜日

LXDでMetabaseとMySQLがインストールされたコンテナ(Ubuntu18.04)を構築する

Metabaseはオープンソースのデータ解析・可視化ツールです。

〇Metabaseの画面


〇コンテナの構築
1.LXDで以下のコマンドを実行して、MySQLがインストールされたコンテナを構築します。
lxc init ubuntu:18.04 ub1804metabasemysql
lxc config set ub1804metabasemysql user.user-data - < config.yml
lxc start ub1804metabasemysql

config.yml
#cloud-config

package_upgrade: true

hostname: ub1804supersetmysql
manage_etc_hosts: true

write_files:
  - path: /etc/systemd/system/metabase.service
    content: |
      [Unit]
      Description=metabase
      [Service]
      Type=simple
      Environment="MB_JETTY_PORT=8080"
      Environment="MB_DB_TYPE=mysql"
      Environment="MB_DB_DBNAME=metabase"
      Environment="MB_DB_PORT=3306"
      Environment="MB_DB_USER=metabase"
      Environment="MB_DB_PASS=metabase"
      Environment="MB_DB_HOST=localhost"
      ExecStart=/usr/bin/java -Xmx2g -jar /opt/metabase/metabase.jar
      WorkingDirectory=/opt/metabase
      Restart=no
      [Install]
      WantedBy=multi-user.target

runcmd:
  - 'apt-get update'
  - 'wget https://dev.mysql.com/get/mysql-apt-config_0.8.9-1_all.deb'
  - 'echo mysql-apt-config mysql-apt-config/enable-repo select mysql-5.7-dmr | sudo debconf-set-selections'
  - 'export DEBIAN_FRONTEND=noninteractive && 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 metabase DEFAULT CHARACTER SET utf8;"'
  - "mysql -uroot -e \"CREATE USER metabase@localhost IDENTIFIED BY 'metabase';\""
  - "mysql -uroot -e \"GRANT ALL PRIVILEGES ON metabase.* TO 'metabase'@'localhost';\""
  - "mysql -uroot -e \"FLUSH PRIVILEGES;\""
  - 'mysql -umetabase -pmetabase test -e "create table messages (message_id integer not null, message varchar(100));"'
  - "mysql -umetabase -pmetabase test -e \"insert into messages value (1, 'hello world.');\""
  - "mysql -umetabase -pmetabase test -e \"insert into messages value (2, 'test message.');\""
  - "apt-get -y install openjdk-8-jdk"
  - "wget http://downloads.metabase.com/v0.29.0/metabase.jar"
  - "mkdir -p /opt/metabase"
  - "mv metabase.jar /opt/metabase"
  - "systemctl enable metabase.service"
  - "systemctl start metabase.service"
final_message: "completed."

2.ブラウザからブラウザからhttp://<ホストのIP>:8080/にアクセスします。
ユーザ情報を入力します。


3.データベースのタイプを選択します


4.接続データベース情報を以下のように入力します
Database type: mysql
Host: localhost
Port: 3306
Database name: metabase
Database username: metabase
Database password: metabase
これ以降はお好みで選択します。


〇コンテナに入る
lxc exec ub1804metabasemysql /bin/bash

〇ホストマシンの外部からコンテナにアクセスしたい場合
以下のコマンドを実行します。
PORT=8080 PUBLIC_IP=<ホストのIP> CONTAINER_IP=<コンテナのIP> sudo -E bash -c 'iptables -t nat -I PREROUTING -i eth0 -p TCP -d $PUBLIC_IP --dport $PORT -j DNAT --to-destination $CONTAINER_IP:$PORT -m comment --comment "container"'

〇コンテナのIPを調べる
コンテナのIPは以下のコマンドで調べることができます。
lxc list

〇コンテナの停止
lxc stop ub1804metabasemysql

〇コンテナの削除
lxc delete ub1804metabasemysql


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

LXDでJupyter LabとMariaDBがインストールされたコンテナ(Ubuntu18.04)を構築する

Jupyter Labでインタラクティブなコンピューティング環境を提供する事ができます。

〇Jupyter Labの画面

ブラウザでhttp://<ホスト名またはIPアドレス>:8888/?token=jupyterにアクセスします。

コンテナの構築 LXDで以下のコマンドを実行して、JupyterLabとMariaDBがインストールされたコンテナ(Ubuntu18.04)を構築します。
lxc init ubuntu:18.04 ub1804jupyterlabmariadb
lxc config set ub1804jupyterlabmariadb user.user-data - < config.yml
lxc start ub1804jupyterlabmariadb

config.yml
#cloud-config

package_upgrade: true

hostname: ub1804jupyterlabmariadb
manage_etc_hosts: true

write_files:
  - path: /etc/systemd/system/jupyter.service
    content: |
      [Unit]
      Description=Jupyter notebook
      [Service]
      Type=simple
      EnvironmentFile=/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
  - path: /tmp/jupyter_notebook_config.py
    content: |
      conf = get_config()
      conf.NotebookApp.ip = '*'
      conf.NotebookApp.open_browser = False
      conf.NotebookApp.port = 8080
      conf.NotebookApp.token = 'jupyter'

runcmd:
  - 'apt-get update'
  - 'locale-gen ja_JP.UTF-8'
  - 'localectl set-locale LANG=ja_JP.UTF-8'
  - 'echo "mariadb-server-10.0 mysql-server/root_password password root" | sudo debconf-set-selections'
  - 'echo "mariadb-server-10.0 mysql-server/root_password_again password root" | sudo debconf-set-selections'
  - 'apt-get -y install mariadb-server'
  - 'mysql -uroot -proot -e "CREATE DATABASE test DEFAULT CHARACTER SET utf8mb4;"'
  - "mysql -uroot -proot -e \"CREATE USER test@localhost IDENTIFIED BY 'test';\""
  - "mysql -uroot -proot -e \"GRANT ALL PRIVILEGES ON test.* TO 'test'@'localhost';\""
  - 'mysql -uroot -proot -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.');\""
  - "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"
  - "/bin/bash -c 'source /opt/anaconda/bin/activate && pip install jupyterlab'"
  - "apt-get -y install libmariadbclient-dev gcc"
  - "/bin/bash -c 'source /opt/anaconda/bin/activate && 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 "cp /tmp/jupyter_notebook_config.py /home/py/.jupyter/jupyter_notebook_config.py"'
  - "sudo systemctl enable jupyter"
  - "sudo systemctl start jupyter"
final_message: "completed."

〇コンテナに入る
lxc exec ub1804jupyterlabmariadb /bin/bash

〇ホストマシンの外部からコンテナにアクセスしたい場合
以下のコマンドを実行します。
PORT=8080 PUBLIC_IP=<ホストのIP> CONTAINER_IP=<コンテナのIP> sudo -E bash -c 'iptables -t nat -I PREROUTING -i eth0 -p TCP -d $PUBLIC_IP --dport $PORT -j DNAT --to-destination $CONTAINER_IP:$PORT -m comment --comment "container"'

〇コンテナのIPを調べる
コンテナのIPは以下のコマンドで調べることができます。
lxc list

〇コンテナの停止
lxc stop ub1804jupyterlabmariadb

〇コンテナの削除
lxc delete ub1804jupyterlabmariadb

○動作確認用コード
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に関する他の情報はこちらを参照してください。

2018年5月5日土曜日

LXDでphpMyAdminとMySQLがインストールされたコンテナ(Ubuntu18.04)を構築する

phpMyAdminでブラウザからMySQLを操作する事ができます。

〇phpMyAdminの画面

ブラウザでhttp://<ホストのIP>/phpmyadmin/にアクセスします。ユーザ名/パスワードはroot/rootまたはtest1/test1です。

LXDで以下のコマンドを実行して、phpMyAdminとMySQLがインストールされたコンテナ(Ubuntu18.04)を構築します。
lxc init ubuntu:18.04 ub1804phpmyadmin
lxc config set ub1804phpmyadmin user.user-data - < config.yml
lxc start ub1804phpmyadmin

config.yml
#cloud-config

package_upgrade: true

hostname: ub1804phpmysqladmin
manage_etc_hosts: true

runcmd:
  - 'echo "mysql-server-5.7 mysql-server/root_password password root" | sudo debconf-set-selections'
  - 'echo "mysql-server-5.7 mysql-server/root_password_again password root" | sudo debconf-set-selections'
  - 'DEBIAN_FRONTEND=noninteractive apt-get -y install mysql-server-5.7'
  - mysql -uroot -proot -e "CREATE DATABASE test1 DEFAULT CHARACTER SET utf8mb4;"
  - mysql -uroot -proot -e "CREATE USER test1@localhost IDENTIFIED BY 'test1';"
  - mysql -uroot -proot -e "GRANT ALL PRIVILEGES ON test1.* TO 'test1'@'localhost';"
  - mysql -uroot -proot -e "FLUSH PRIVILEGES;"
  - 'echo "phpmyadmin phpmyadmin/dbconfig-install boolean true" | debconf-set-selections'
  - 'echo "phpmyadmin phpmyadmin/mysql/admin-pass password root" | debconf-set-selections'
  - 'echo "phpmyadmin phpmyadmin/reconfigure-webserver multiselect apache2" | debconf-set-selections'
  - 'echo "phpmyadmin phpmyadmin/mysql/app-pass password root" | debconf-set-selections'
  - 'apt-get -y install phpmyadmin'
  - service apache2 restart
final_message: "completed."

〇コンテナに入る
lxc exec ub1804phpmyadmin /bin/bash

〇ホストマシンの外部からコンテナにアクセスしたい場合
PORT=80 PUBLIC_IP=<ホストのIP> CONTAINER_IP=<コンテナのIP> sudo -E bash -c 'iptables -t nat -I PREROUTING -i eth0 -p TCP -d $PUBLIC_IP --dport $PORT -j DNAT --to-destination $CONTAINER_IP:$PORT -m comment --comment "container"'

〇コンテナのIPを調べる
コンテナのIPは以下のコマンドで調べることができます。
lxc list

〇コンテナの停止
lxc stop ub1804phpmyadmin

〇コンテナの削除
lxc delete ub1804phpmyadmin


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

・プロジェクトwebサイト
https://www.phpmyadmin.net/

LXDでkritaとGimp、Xfce Desktop環境、XRDPをインストールしたコンテナ(Ubuntu16.04)を構築する

Krita、Gimpはオープンソースの画像編集ソフトです。
XRDPもインストールされているので、リモートデスクトップから接続することができます。ユーザはubuntu、パスワードもubuntuです。

〇Kritaの画面


〇Gimpの画面


〇構築方法
LXDで以下のコマンドを実行して、KritaとGimp、Xfce Desktop環境インストールされたコンテナを構築します。
lxc init ubuntu:16.04 lxdxfcekritagimp
lxc config lxdxfcekritagimp user.user-data - < config.yml
lxc start lxdxfcekritagimp

config.yml
#cloud-config

package_upgrade: true

hostname: lxdxfcekritagimp
manage_etc_hosts: true

write_files:
  - path: /tmp/.xsessionrc
    content: |
      export LANG=ja_JP.UTF-8
      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/ubuntu/.config/fcitx/profile
      fcitx -r -d &

  - path: /etc/default/keyboard
    content: |
      XKBMODEL="pc106"
      XKBLAYOUT="jp"
      XKBVARIANT=""
      XKBOPTIONS=""
      BACKSPACE="guess"

runcmd:
  - '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 software-properties-common'
  - 'add-apt-repository ppa:hermlnx/xrdp'
  - 'apt-get update'
  - 'echo "export LANG=ja_JP.UTF-8" >> /home/ubuntu/.bash_profile'
  - "echo 'ubuntu:ubuntu' | chpasswd"
  - 'apt-get -y install xrdp fcitx-mozc xubuntu-desktop language-pack-ja language-pack-ja'
  - 'im-config -n fcitx'
  - 'mv /tmp/.xsessionrc /home/ubuntu'
  - 'chown -R ubuntu:ubuntu /home/ubuntu'
  - 'apt-get -y install apt-file unzip'
  - 'apt-get update'
  - 'apt-get -y install software-properties-common'
  - 'add-apt-repository ppa:kritalime/ppa'
  - 'apt-get update'
  - 'apt-get -y install krita gimp'
  - 'fcitx -r -d &'

final_message: "completed."

〇コンテナのIPを調べる
コンテナのIPは以下のコマンドで調べることができます。
lxc list

〇ホストマシンの外部からコンテナにアクセスしたい場合
以下のコマンドを実行します。
PORT=3389 PUBLIC_IP=<ホストのIP> CONTAINER_IP=<コンテナのIP> sudo -E bash -c 'iptables -t nat -I PREROUTING -i eth0 -p TCP -d $PUBLIC_IP --dport $PORT -j DNAT --to-destination $CONTAINER_IP:$PORT -m comment --comment "container"'

〇コンテナに入る
lxc exec lxdxfcekritagimp /bin/bash

〇コンテナの停止
lxc stop lxdxfcekritagimp

〇コンテナの削除
lxc delete lxdxfcekritagimp


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