2017年9月20日水曜日

VagrantでTaskBoardがインストールされた仮想マシンを構築する

以下のVagrantfileを使用して、TaskBoardがインストールされた仮想マシンを構築する事ができます。
TaskBoardにhttp://192.168.55.105/TaskBoard/でアクセスして、ユーザ名admin、パスワードadminを入力します。

Vagrantfile

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/ubuntu-16.04"
  config.vm.hostname = "ub1604taskboard"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "ub1604taskboard"
     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
apt-get -y install unzip

wget https://github.com/kiswa/TaskBoard/archive/master.zip
unzip master.zip

apt-get -y install php7.0 libapache2-mod-php7.0 apache2 php7.0-sqlite sqlite

mv TaskBoard-master/ /opt/TaskBoard
cd /opt/TaskBoard/build
./build-all
chown -R www-data:www-data /opt/TaskBoard/
sudo ln -s /opt/TaskBoard /var/www/html/

cat << EOF >> /etc/apache2/apache2.conf

    AllowOverride All
    Options All
    Require all granted

EOF

sed -i -e "s/Listen 80/Listen 0.0.0.0:80/" /etc/apache2/ports.conf
a2enmod expires
a2enmod rewrite
service apache2 restart

echo "access http://192.168.55.105/TaskBoard/"
echo "user: admin, password: admin"
SHELL
end

2017年9月19日火曜日

VagrantでPure-FTPdがインストールされた仮想マシンを構築する

以下のVagrantfileを使用してpure-FTPdがインストールされた仮想マシンを構築する事ができます。
ftpクライアントから、ユーザ名test1、パスワードtest1でアクセスします。

Vagrantfile

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/ubuntu-16.04"
  config.vm.hostname = "ub1604pureftpd"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "ub1604pureftpd"
     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
apt-get -y install pure-ftpd 
groupadd ftpgroup
useradd -g ftpgroup -d /dev/null -s /etc ftpuser
sudo mkdir /home/ftpusers
sudo mkdir /home/ftpusers/test1
PASSWORD=test1
( echo ${PASSWORD} ; echo ${PASSWORD} ) | pure-pw useradd test1 -u ftpuser -d /home/ftpusers/test1 > /dev/null 2>&1
pure-pw mkdb
ln -s /etc/pure-ftpd/pureftpd.passwd /etc/pureftpd.passwd
ln -s /etc/pure-ftpd/pureftpd.pdb /etc/pureftpd.pdb
ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/PureDB
sudo chown -hR ftpuser:ftpgroup /home/ftpusers/
gksudo pureadmin
sudo /etc/init.d/pure-ftpd restart

SHELL
end

VagrantでPostgreSQLとphpPgAdminがインストールされた仮想マシンを構築する

以下のVagrantfileでPostgreSQLとphpPgAdminがインストールされた仮想マシンを構築する事ができます。
phpPgAdminにhttp://192.168.55.105/phpmyadmin/でアクセスします。

Vagrantfile

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/ubuntu-16.04"
  config.vm.hostname = "ub1604phppgadmin"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "ub1604phppgadmin"
     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

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

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

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

su - postgres << EOF
psql -c "
alter user postgres with password 'postgres';
"
EOF
echo "postgres:postgres" | chpasswd
systemctl restart postgresql.service

# install phppgadmin
apt-get -y install php7.0 libapache2-mod-php7.0 apache2 phppgadmin 
sed -i -e "s#Require local#Require ip 192.168.55.0/24#" /etc/apache2/conf-available/phppgadmin.conf 
sed -i -e "s/extra_login_security.*true;/extra_login_security\\'\\] = false;/" /usr/share/phppgadmin/conf/config.inc.php

systemctl restart apache2 

ln -s /etc/apache2/conf.d/phppgadmin /etc/apache2/conf-available/phppgadmin.conf 
sudo ln -s /usr/share/phppgadmin/ /var/www/html/

echo 'access http://192.168.55.105/phpmyadmin/'
echo 'user: postgres, password: postgres'
SHELL
end

2017年9月18日月曜日

VagrantでMySQLとphpMyAdminが一緒にインストールされた仮想マシンを構築する

以下のVagrantfileでMySQL5.7とphpMyAdminがインストールされた仮想マシンを構築する事ができます。

Vagrantfile

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/ubuntu-16.04"
  config.vm.hostname = "ub1604mysqladmin"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "ub1604mysqladmin"
     vbox.cpus = 2
     vbox.memory = 2048
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
  config.vm.network "private_network", ip: "192.168.55.104", :netmask => "255.255.255.0"
  config.vm.network "public_network", ip:"192.168.1.104", :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

# install mysql
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

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 install -y phpmyadmin
service apache2 resart

echo 'access http://192.168.1.104/phpmyadmin/'
echo 'user: root, password: root'
SHELL
end

2017年9月17日日曜日

DockerでSeleniumとHeadless modeのFirefoxがインストールされたコンテナを作成する

以下のDockerfileを使用して、SeleniumとHeadless modeのFirefoxがインストールされたコンテナを作成します。

Dockerfile

FROM ubuntu:16.04

RUN locale-gen ja_JP.UTF-8
ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:en
ENV LC_ALL ja_JP.UTF-8
ENV MOZ_HEADLESS 1

RUN apt-get update \
  && apt-get -y install bzip2 wget firefox language-pack-ja fonts-ipafont-gothic fonts-ipafont-mincho \
  && wget https://repo.continuum.io/archive/Anaconda3-4.4.0-Linux-x86_64.sh \
  && chmod +x Anaconda3-4.4.0-Linux-x86_64.sh \
  && ./Anaconda3-4.4.0-Linux-x86_64.sh -b -p /opt/anaconda \
  && /bin/bash -c "source /opt/anaconda/bin/activate && pip install selenium" \
  && wget https://github.com/mozilla/geckodriver/releases/download/v0.19.0/geckodriver-v0.19.0-linux64.tar.gz \
  && tar -xvzf geckodriver-v0.19.0-linux64.tar.gz \
  && chmod +x geckodriver \
  && cp geckodriver /usr/local/bin/

CMD "/bin/bash"
コンテナをビルドするには以下のコマンドを実行します。
docker build -t ub1604headlessff .
コンテナ内で実行するpythonスクリプト(以下のsample.py)はdatサブディレクトリ内に保存します。

sample.py

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Firefox()

driver.get('https://www.google.co.jp/')
input = driver.find_element_by_name('q')
input.send_keys('selenium')
input.submit()
RESULTS_LOCATOR = "//div/h3/a"

WebDriverWait(driver, 10).until(
    EC.visibility_of_element_located((By.XPATH, RESULTS_LOCATOR)))

# get screen shot
driver.save_screenshot('screenshot1.png')
print("quit")
driver.quit()
サンプルスクリプトをコンテナ内で実行するには、以下のコマンドを実行します。
docker run -v `pwd`/dat:/dat --rm -i -t ub1604headlessff
コンテナに入った後に、以下のコマンドを実行します。
source /opt/anaconda/bin/activate
cd /dat && python sample.py
○関連項目
VagrantでSeleniumとheadlessモードのfirefoxがインストールされた仮想マシンを構築する

VagrantでSeleniumとheadlessモードのfirefoxがインストールされた仮想マシンを構築する

以下のVagrantfileでSeleniumとheadlessモードのfirefoxがインストールされた仮想マシンを構築できます。
vagrantユーザでログオン後、source /opt/anaconda/bin/activateを実行後、sample.pyを実行するとgoogleの検索結果のスクリーンショットを取得します。

Vagrantfile

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/ubuntu-16.04"
  config.vm.hostname = "ub1604selenium"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "ub1604selenium"
     vbox.cpus = 2
     vbox.memory = 2048
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
  config.vm.network "private_network", ip: "192.168.55.102", :netmask => "255.255.255.0"
  config.vm.network "public_network", ip:"192.168.1.102", :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
apt-get -y install bzip2 wget firefox language-pack-ja fonts-ipafont-gothic fonts-ipafont-mincho
wget https://repo.continuum.io/archive/Anaconda3-4.4.0-Linux-x86_64.sh
chmod +x Anaconda3-4.4.0-Linux-x86_64.sh
./Anaconda3-4.4.0-Linux-x86_64.sh -b -p /opt/anaconda
source /opt/anaconda/bin/activate 
pip install selenium 
wget https://github.com/mozilla/geckodriver/releases/download/v0.19.0/geckodriver-v0.19.0-linux64.tar.gz 
tar -xvzf geckodriver-v0.19.0-linux64.tar.gz 
chmod +x geckodriver 
cp geckodriver /usr/local/bin/

echo "export MOZ_HEADLESS=1" >> ~vagrant/.bash_profile
chown vagrant:vagrant ~vagrant/.bash_profile

cat << EOF > /vagrant/sample.py
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Firefox()

driver.get('https://www.google.co.jp/')
input = driver.find_element_by_name('q')
input.send_keys('selenium')
input.submit()
RESULTS_LOCATOR = "//div/h3/a"

WebDriverWait(driver, 10).until(
    EC.visibility_of_element_located((By.XPATH, RESULTS_LOCATOR)))

# get screen shot
driver.save_screenshot('screenshot1.png')
print("quit")
driver.quit()

EOF
echo '1. logon as vagrant'
echo '2. source /opt/anaconda/bin/activate'
echo '3. cd /vagrant && python sample.py'
SHELL
end

○関連項目
DockerでSeleniumとHeadless modeのFirefoxがインストールされたコンテナを作成する

2017年9月16日土曜日

Vagrantで指定したユーザだけがアクセスできるsambaサーバを仮想マシン上に構築する

以下のVagrantfileを使用して、指定したユーザだけがアクセスできるsambaサーバを仮想マシン上にインストールします。
\\192.168.1.101\shareにtest1ユーザ、パスワードtest1でアクセスできます。

Vagrantfile

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/ubuntu-16.04"
  config.vm.hostname = "ub1604samba"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "ub1604samba"
     vbox.cpus = 2
     vbox.memory = 1024
     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

# create a user
useradd test1
echo "test1:test1" | chpasswd

# create a shared directory
mkdir /opt/share
chown test1:test1 /opt/share

apt-get -y install samba 
echo -e "test1\\ntest1" | pdbedit -a -t -u test1

mv /etc/samba/smb.conf /etc/samba/smb.conf.org
cat << EOF > /etc/samba/smb.conf
[global]
dos charset = CP932
unix charset = UTF-8
display charset = UTF-8
workgroup = Workgroup
netbios name = ub1604samba
server string = ub1604samba
encrypt passwords = true
passdb backend = tdbsam

log level=2
log file=/var/log/samba/access.log
max log size=500

[share]
path = /opt/share
read only=no
browsable=yes
guest ok = yes
force user = test1
EOF

systemctl enable smbd
systemctl start smbd

systemctl enable nmbd
systemctl start nmbd

echo 'access to \\\\192.168.1.101\\share'
SHELL
end