ラベル CMS の投稿を表示しています。 すべての投稿を表示
ラベル CMS の投稿を表示しています。 すべての投稿を表示

2022年11月5日土曜日

Ubuntu 22.04にDrupal9.4.8とMariaDBをインストールする

DrupalはPHP製のCMSです。

〇Drupalの画面

構築方法

1. 以下のコマンドを実行してMariaDBをインストールします
※パスワードは適宜変更してください
sudo apt-get update

sudo apt-get -y install mariadb-server

sudo mysql -uroot -e "SET PASSWORD = PASSWORD('root'); FLUSH PRIVILEGES;"

mysql -uroot -proot -e "CREATE DATABASE drupal DEFAULT CHARACTER SET utf8;"

mysql -uroot -proot -e "CREATE USER drupal@localhost IDENTIFIED BY 'drupal';"

mysql -uroot -proot -e "GRANT ALL PRIVILEGES ON drupal.* TO 'drupal'@'localhost';"

mysql -uroot -proot -e "FLUSH PRIVILEGES;"

2. Drupalをインストールします
sudo apt-get -y install apache2 \
  php8.1 \
  libapache2-mod-php8.1 \
  apache2 \
  php8.1-mbstring \
  php8.1-mysql \
  php8.1-gd \
  php8.1-curl \
  php8.1-dom

wget https://ftp.drupal.org/files/projects/drupal-9.4.8.tar.gz

tar xvfz drupal-9.4.8.tar.gz

sudo mv drupal-9.4.8 /opt/drupal

sudo chown -R www-data:www-data /opt/drupal

sudo ln -s /opt/drupal/ /var/www/html/

cat << EOF | sudo tee -a /etc/apache2/apache2.conf
<Directory /var/www/html>
  AllowOverride All
  RewriteEngine on
</Directory>
EOF

sudo a2enmod rewrite

sudo systemctl restart apache2

3.ブラウザからhttp://<ホスト名またはアドレス>/drupal/にアクセスします。「Save and continue」ボタンをクリックします。

4.「標準」を選択して「保存して次へ」をクリックします

5.データベース名・ユーザー名・パスワードに「drupal」を入力して「保存して次へ」ボタンをクリックします

6.サイト名・管理者の情報を入力します

7.インストール完了画面

2019年9月13日金曜日

VagrantでJoomla3.9.10とMariaDBがインストールされた仮想マシン(Debian Buster/10)を構築する

JoomlaはPHP製のCMSです。

○Joomlaの管理者画面


○構築方法
1.以下のVagrantfileを使用して、Joomla3.9.10とMariaDBがインストールされた仮想マシン(Debian Buster/10)を構築する事ができます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/debian-10"
  config.vm.hostname = "db10joomla"
config.vm.network "public_network", ip:"192.168.1.103", :netmask => "255.255.255.0"
config.vm.network "private_network", ip: "192.168.55.103", :netmask => "255.255.255.0"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "db10joomla"
     vbox.gui = true
     vbox.cpus = 2
     vbox.memory = 2048
  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 gawk
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
timedatectl set-timezone Asia/Tokyo

# install mariadb
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 joomla DEFAULT CHARACTER SET utf8;"
mysql -uroot -proot -e "CREATE USER joomla@localhost IDENTIFIED BY 'joomla';"
mysql -uroot -proot -e "GRANT ALL PRIVILEGES ON joomla.* TO 'joomla'@'localhost';"
mysql -uroot -proot -e "FLUSH PRIVILEGES;"
apt-get -y install apache2 libapache2-mod-php7.3 php7.3-cgi  php7.3-gd php7.3-json php7.3-mysql php7.3-curl php7.3-mbstring php7.3-xml

apt-get -y install unzip
# install joomla
mkdir joomla
cd joomla
wget -O joomla.zip https://downloads.joomla.org/cms/joomla3/3-9-10/Joomla_3-9-10-Stable-Full_Package.zip?format=zip
unzip joomla.zip
mv ~vagrant/joomla /opt/joomla
chown -R www-data:www-data /opt/joomla
ln -s  /opt/joomla /var/www/html
service apache2 restart
echo 'access http://192.168.1.103/joomla/'
echo 'user: joomla  password:joomla  db:joomla'

SHELL
end

2.ブラウザでhttp://192.168.1.103/joomla/にアクセスして、サイト設定画面のサイト名称や管理者情報を入力します。


3.データベース設定画面で接続情報を入力します。
データベース: MySQLi
ホスト名: localhost
ユーザ名: joomla
パスワード: joomla
データベース: joomla


4. 概要設定画面でインストールボタンをクリックします。


5. インストール完了画面で「installationディレクトリを削除」ボタンをクリックします。



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

2018年12月6日木曜日

Raspberry Pi上のDockerでPagekit、MariaDBがインストールされたコンテナ(Alpine 3.8)を構築する

PagekitはPHP製のCMSです。

○Pagekitの画面


○構築方法
以下の手順で、PagekitとMariaDBのコンテナを構築・実行します。
1. Pagekitイメージの作成(Dockerfileがあるフォルダで実行)
docker build -t mypagekit .

Dockerfile
FROM alpine:3.8
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 php7-openssl openssl openrc \
  && rm -rf /var/cache/apk/* \
  && mkdir -p /opt/pagekit
WORKDIR /opt/pagekit
RUN wget https://github.com/pagekit/pagekit/releases/download/1.0.14/pagekit-1.0.14.zip \
  && unzip pagekit-* \
  && rm -f pagekit-*.zip \
  && chown -R apache:apache /opt/pagekit \
  && ln -s  /opt/pagekit /var/www/localhost/htdocs \
  && mkdir -p /run/apache2
EXPOSE 80
VOLUME /opt/pagekit
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

2. Pagekit用のMariaDBイメージの作成(Dockerfile-mariadbとsetupdb.shのあるディレクトリで実行)
docker build -f Dockerfile-mariadb -t mariadb-pagekit .

Dockerfile-mariadb
FROM alpine:3.8
COPY ./setupdb.sh /
RUN apk --no-cache add mariadb mariadb-client \
  && addgroup mysql mysql \
  && chmod +x /setupdb.sh
VOLUME /var/lib/mysql
EXPOSE 3306
ENTRYPOINT ["/setupdb.sh"]

setupdb.sh
#!/bin/sh
if [ ! -d "/run/mysqld" ]; then
  mkdir -p /run/mysqld
  chown -R mysql:mysql /run/mysqld
fi
if [ ! -e /usr/my.cnf ]; then
  cat << EOF > /usr/my.cnf
[mysqld]
datadir=/var/lib/mysql
log-bin = /var/lib/mysql/mysql-bin
port = 3306
user = mysql
symbolic-links=0
character-set-server = utf8
pid-file=/run/mysqld/mysqld.pid
EOF
  chown -R mysql:mysql /var/lib/mysql
  mysql_install_db --user=mysql
  nohup /bin/sh /usr/bin/mysqld_safe \
    --datadir=/var/lib/mysql \
    --socket=/run/mysqld/mysqld.sock \
    --pid-file=/run/mysqld/mysqld.pid \
    --basedir=/usr \
    --user=mysql \
    --skip-grant-tables \
    --skip-networking &
  while :
  do
    [ -r /run/mysqld/mysqld.pid ] || continue
    if ps -ef | grep -q $(cat /run/mysqld/mysqld.pid) ; then
        break
    fi
    sleep 10
  done
  cat << EOF > /tmp/setupdb.sql
USE mysql;
UPDATE mysql.user SET Password=PASSWORD('pagekit') WHERE User='root';
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'pagekit';
FLUSH PRIVILEGES;
EOF
  /usr/bin/mysql < /tmp/setupdb.sql
  cat << EOF > /tmp/createdb.sql
CREATE DATABASE pagekit DEFAULT CHARACTER SET utf8mb4;
EOF
  /usr/bin/mysql -uroot -ppagekit < /tmp/createdb.sql
  kill `cat /run/mysqld/mysqld.pid`
  sleep 10
fi
exec /usr/bin/mysqld --defaults-file=/usr/my.cnf --console --user=mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

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

docker-compose.yml
version: "2"
services:
  pagekit:
    image: mypagekit
    container_name: "pagekit"
    volumes:
      - "pagekit-data:/opt/pagekit"
    ports:
      - "80:80"
    depends_on:
      - db
  db:
    image: mariadb-pagekit
    container_name: "pagekit-db"
    volumes:
      - "db-data:/var/lib/mysql"
    ports:
      - "3306:3306"
volumes:
  db-data:
    driver: local
  pagekit-data:
    driver: local

3. ブラウザからhttp://<Dockerホスト名またはIP>/pagekit/にアクセスして、言語を選択します。


4. Connect Database画面
以下の値を設定します。
Driver : MySQL
Hostname : db
User : root
Password : pagekit
Database name: pagekit


5. サイト名、管理者情報を入力します。


〇参考情報
Raspberry PiにDockerとdocker-composeをインストールするには以下の記事を参照してください。
Raspberry Pi Raspbian GNU/Linux 9 (stretch)にdocker-composeをインストールする

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

2018年10月21日日曜日

Raspberry Pi上のDockerでDrupal8.6.2とMariadb10.2のコンテナを構築する

DrupalはPHP製のCMSです。

〇Drupalの画面


〇構築手順
1. Drupalイメージの作成(Dockerfileがあるフォルダで実行)
docker build -t mydrupal .

Dockerfile
FROM alpine:3.8
WORKDIR /
RUN  apk update \
  && apk add --no-cache apache2 php7-apache2 php7-mysqli php7-mbstring php7-session php7-curl php7-xml php7-dom php7-json php7-ctype php7-tokenizer php7-gd php7-pdo php7-pdo_mysql php7-simplexml php7-opcache openssl openrc \
  && rm -rf /var/cache/apk/* \
  && wget https://ftp.drupal.org/files/projects/drupal-8.6.2.tar.gz \
  && tar xvfz drupal-8.6.2.tar.gz \
  && rm -f drupal-8.6.2.tar.gz \
  && mkdir /opt \
  && mv drupal-8.6.2 /opt/drupal \
  && chown -R apache:apache /opt/drupal \
  && mkdir -p /run/apache2 \
  && echo $'\n\
  Options Indexes FollowSymLinks \n\
  AllowOverride All \n\
  Require all granted \n\
  RewriteEngine on \n\
  RewriteBase / \n\
  RewriteCond %{REQUEST_FILENAME} !-f \n\
  RewriteCond %{REQUEST_FILENAME} !-d \n\
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] \n\
' >> /etc/apache2/httpd.conf \
  && sed -i -e 's|#LoadModule rewrite_module modules/mod_rewrite.so|LoadModule rewrite_module modules/mod_rewrite.so|' /etc/apache2/httpd.conf \
  && sed -i -e 's|DocumentRoot "/var/www/localhost/htdocs"|DocumentRoot "/opt/drupal"|' /etc/apache2/httpd.conf
EXPOSE 80
VOLUME /opt/drupal
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

2. Drupal用のMariaDBイメージの作成(Dockerfile-mariadbとsetupdb.shのあるディレクトリで実行)
docker build -f Dockerfile-mariadb -t mariadb-drupal .

Dockerfile-mariadb
FROM alpine:3.8
COPY ./setupdb.sh /
RUN apk --no-cache add mariadb mariadb-client \
  && addgroup mysql mysql \
  && chmod +x /setupdb.sh
VOLUME /var/lib/mysql
EXPOSE 3306
ENTRYPOINT ["/setupdb.sh"]

setupdb.sh
#!/bin/sh
if [ ! -d "/run/mysqld" ]; then
  mkdir -p /run/mysqld
  chown -R mysql:mysql /run/mysqld
fi
if [ ! -e /usr/my.cnf ]; then
  cat << EOF > /usr/my.cnf
[mysqld]
datadir=/var/lib/mysql
log-bin = /var/lib/mysql/mysql-bin
port = 3306
user = mysql
symbolic-links=0
character-set-server = utf8
pid-file=/run/mysqld/mysqld.pid
EOF
  chown -R mysql:mysql /var/lib/mysql
  mysql_install_db --user=mysql
  nohup /bin/sh /usr/bin/mysqld_safe \
    --datadir=/var/lib/mysql \
    --socket=/run/mysqld/mysqld.sock \
    --pid-file=/run/mysqld/mysqld.pid \
    --basedir=/usr \
    --user=mysql \
    --skip-grant-tables \
    --skip-networking &
  while :
  do
    [ -r /run/mysqld/mysqld.pid ] || continue
    if ps -ef | grep -q $(cat /run/mysqld/mysqld.pid) ; then
        break
    fi
    sleep 10
  done
  cat << EOF > /tmp/setupdb.sql
USE mysql;
UPDATE mysql.user SET Password=PASSWORD('drupal') WHERE User='root';
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'drupal';
FLUSH PRIVILEGES;
EOF
  /usr/bin/mysql < /tmp/setupdb.sql
  cat << EOF > /tmp/createdb.sql
CREATE DATABASE drupal DEFAULT CHARACTER SET utf8mb4;
EOF
  /usr/bin/mysql -uroot -pdrupal < /tmp/createdb.sql
  kill `cat /run/mysqld/mysqld.pid`
  sleep 10
fi
exec /usr/bin/mysqld --defaults-file=/usr/my.cnf --console --user=mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

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

docker-compose.yml
version: "2"
services:
  drupal:
    image: mydrupal
    container_name: "drupal"
    volumes:
      - "drupal-data:/opt/drupal"
    ports:
      - "80:80"
    depends_on:
      - drupaldb
  drupaldb:
    image: mariadb-drupal
    container_name: "drupal-db"
    volumes:
      - "drupaldb-data:/var/lib/mysql"
    ports:
      - "3306:3306"
volumes:
  drupal-data:
    driver: local
  drupaldb-data:
    driver: local

3.ブラウザからhttp://<Dockerホスト>にアクセスします。「Save and continue」ボタンをクリックします。


4.「標準」を選択して「保存して次へ」をクリックします


5. 32bitなので警告が表示されますが、「とりあえず進む」をクリックします。


6.以下を入力して「保存して次へ」ボタンをクリックします
データベース名: drupal
ユーザ名: root
パスワード: drupal
ホスト: drupaldb


7.サイト名・管理者の情報を入力します


8.インストール完了画面


〇参考情報
Raspberry PiにDockerとdocker-composeをインストールするには以下の記事を参照してください。
Raspberry Pi Raspbian GNU/Linux 9 (stretch)にdocker-composeをインストールする


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

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

2018年9月23日日曜日

VagrantでMezzanineとMariaDBをインストールした仮想マシン(Ubuntu18.04)を構築する

MezzanineはPython製のCMSです。

○Mezzanineの画面

デフォルトアカウント/パスワードはadmin/defaultです

○構築方法
以下のVagrantfileを使用して、MezzanineとMariaDBがインストールされた仮想マシン(Ubuntu18.04)を構築する事ができます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/ubuntu-18.04"
  config.vm.hostname = "ub1804mezzaninemariadb"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "ub1804mezzaninemariadb"
     vbox.cpus = 2
     vbox.memory = 2048
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
config.vm.network "private_network", ip: "192.168.55.62", :netmask => "255.255.255.0"
config.vm.network "public_network", ip:"192.168.1.62", :netmask => "255.255.255.0"
  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
locale-gen ja_JP.UTF-8
localectl set-locale LANG=ja_JP.UTF-8
timedatectl set-timezone Asia/Tokyo

# install mariadb
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 mezzanine DEFAULT CHARACTER SET utf8;"
mysql -uroot -proot -e "CREATE USER mezzanine@localhost IDENTIFIED BY 'mezzanine';"
mysql -uroot -proot -e "GRANT ALL PRIVILEGES ON mezzanine.* TO 'mezzanine'@'localhost';"
mysql -uroot -proot -e "FLUSH PRIVILEGES;"


# install apache2 and wsgi
apt-get -y install apache2 libapache2-mod-wsgi
a2enmod wsgi

# install mezzanine
apt-get -y install python-pip
pip install mezzanine

apt-get -y install libmariadbclient-dev
pip install mysqlclient

mkdir -p /opt/mezzanine
cd /opt/mezzanine

mezzanine-project mysite

sed -i -e 's/"ENGINE": "django.db.backends.sqlite3",/"ENGINE": "django.db.backends.mysql",/' /opt/mezzanine/mysite/mysite/local_settings.py
sed -i -e 's/"NAME": "dev.db",/"NAME": "mezzanine",/' /opt/mezzanine/mysite/mysite/local_settings.py
sed -i -e 's/"USER": "",/"USER": "mezzanine",/' /opt/mezzanine/mysite/mysite/local_settings.py
sed -i -e 's/"PASSWORD": "",/"PASSWORD": "mezzanine",/' /opt/mezzanine/mysite/mysite/local_settings.py
sed -i -e 's/"HOST": "",/"HOST": "localhost",/' /opt/mezzanine/mysite/mysite/local_settings.py
sed -i -e 's/"PORT": "",/"PORT": "3306",/' /opt/mezzanine/mysite/mysite/local_settings.py
echo 'ALLOWED_HOSTS = ["*"]' >> /opt/mezzanine/mysite/mysite/local_settings.py

cd /opt/mezzanine/mysite
python manage.py createdb --noinput
python manage.py collectstatic --noinput

cat << EOF > /etc/apache2/sites-available/mezzanine.conf
<VirtualHost *:80>
  ServerName 192.168.55.62
  WSGIDaemonProcess mezzanine processes=1 threads=25
  WSGIScriptAlias / /opt/mezzanine/mysite/mysite/wsgi.py
  Alias /static/ /opt/mezzanine/mysite/static/
  <Directory /opt/mezzanine/mysite>
    WSGIProcessGroup mezzanine
    WSGIApplicationGroup %{GLOBAL}
    Require all granted
  </Directory>
</VirtualHost>
EOF

cat << EOF > /opt/mezzanine/mysite/mysite/wsgi.py
import os
import sys

from django.core.wsgi import get_wsgi_application
from mezzanine.utils.conf import real_project_name
sys.path.append("/opt/mezzanine/mysite")
os.environ.setdefault("DJANGO_SETTINGS_MODULE",
                      "%s.settings" % real_project_name("mysite"))

application = get_wsgi_application()
EOF

chown -R www-data:www-data /opt/mezzanine

a2ensite mezzanine.conf
a2dissite 000-default.conf

systemctl restart apache2

echo 'access to http://192.168.55.62/'
echo 'access to http://192.168.55.62/admin/'
echo 'user: admin  password: default'
SHELL
end

2018年9月17日月曜日

DockerでMezzanine、MariaDB10.3がインストールされたコンテナ(Alpine3.8)を構築する

MezzanineはPython製のCMSです。

○Mezzanineの画面


○構築方法
以下の手順で、Mezzanineのコンテナを構築・実行します。

1. Mezzanineイメージの作成(Dockerfileがあるフォルダで実行)
docker build -t mezzanine .

Dockerfile
FROM python:3.6-alpine3.8

RUN mkdir -p /opt/mezzanine
WORKDIR /opt/mezzanine
RUN apk update \
  && apk add --no-cache --virtual=build-deps jpeg jpeg-dev zlib-dev musl-dev gcc mariadb-dev build-base \
  && pip install mezzanine \
  && pip install mysqlclient \
  && apk del mariadb-dev build-base build-deps gcc \
  && apk add mariadb-client mariadb-connector-c \
  && rm -rf /var/cache/apk/* \
  && mezzanine-project mysite \
  && echo $'#!/bin/sh \n\
until mysql -h db -u root -pmezzanine mezzanine\n\
do \n\
  echo -n "." \n\
  sleep 1 \n\
done \n\
cd /opt/mezzanine/mysite \n\
sed -i -e \'s/"ENGINE": "django.db.backends.sqlite3",/"ENGINE": "django.db.backends.mysql",/\' /opt/mezzanine/mysite/mysite/local_settings.py \n\
sed -i -e \'s/"NAME": "dev.db",/"NAME": "mezzanine",/\' /opt/mezzanine/mysite/mysite/local_settings.py \n\
sed -i -e \'s/"USER": "",/"USER": "root",/\' /opt/mezzanine/mysite/mysite/local_settings.py \n\
sed -i -e \'s/"PASSWORD": "",/"PASSWORD": "mezzanine",/\' /opt/mezzanine/mysite/mysite/local_settings.py \n\
sed -i -e \'s/"HOST": "",/"HOST": "db",/\' /opt/mezzanine/mysite/mysite/local_settings.py \n\
sed -i -e \'s/"PORT": "",/"PORT": "3306",/\' /opt/mezzanine/mysite/mysite/local_settings.py \n\
sed -i -e \'s/ALLOWED_HOSTS = \[.*\]/ALLOWED_HOSTS  = ["*"]/\' /opt/mezzanine/mysite/mysite/local_settings.py \n\
python manage.py createdb --noinput \n\
python manage.py migrate --noinput \n\
python manage.py runserver 0.0.0.0:80' > /opt/mezzanine/mysite/start.sh \
  && chmod +x /opt/mezzanine/mysite/start.sh
EXPOSE 80
VOLUME /opt/mezzanine/mysite
CMD ["/opt/mezzanine/mysite/start.sh"]

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

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

3.ブラウザから以下のURLにアクセス
http://<Dockerホスト名またはIP>/
※デフォルトユーザとパスワードはadmin/defaultです。

2018年9月11日火曜日

DockerでMezzanine、PostgreSQL10.4がインストールされたコンテナ(Alpine3.8)を構築する

MezzanineはPython製のCMSです。

○Mezzanineの画面


○構築方法
以下の手順で、Mezzanineのコンテナを構築・実行します。

1. Mezzanineイメージの作成(Dockerfileがあるフォルダで実行)
docker build -t mezzanine-pg .

Dockerfile
FROM python:3.6-alpine3.8

RUN mkdir -p /opt/mezzanine
WORKDIR /opt/mezzanine
RUN apk update \
  && apk add --no-cache --virtual=build-deps jpeg jpeg-dev zlib-dev musl-dev gcc build-base python3-dev postgresql-dev\
  && pip install mezzanine psycopg2 \
  && apk del build-base build-deps gcc \
  && apk add --no-cache postgresql-client \
  && rm -rf /var/cache/apk/* \
  && mezzanine-project mysite \
  && echo $'#!/bin/sh \n\
export PGPASSWORD=mezzanine \n\
until psql -h db -U postgres -d mezzanine -c "\l" \n\
do \n\
  echo -n "." \n\
  sleep 1 \n\
done \n\
cd /opt/mezzanine/mysite \n\
sed -i -e \'s/"ENGINE": "django.db.backends.sqlite3",/"ENGINE": "django.db.backends.postgresql_psycopg2",/\' /opt/mezzanine/mysite/mysite/local_settings.py \n\
sed -i -e \'s/"NAME": "dev.db",/"NAME": "mezzanine",/\' /opt/mezzanine/mysite/mysite/local_settings.py \n\
sed -i -e \'s/"USER": "",/"USER": "postgres",/\' /opt/mezzanine/mysite/mysite/local_settings.py \n\
sed -i -e \'s/"PASSWORD": "",/"PASSWORD": "mezzanine",/\' /opt/mezzanine/mysite/mysite/local_settings.py \n\
sed -i -e \'s/"HOST": "",/"HOST": "db",/\' /opt/mezzanine/mysite/mysite/local_settings.py \n\
sed -i -e \'s/"PORT": "",/"PORT": "5432",/\' /opt/mezzanine/mysite/mysite/local_settings.py \n\
sed -i -e \'s/ALLOWED_HOSTS = \[.*\]/ALLOWED_HOSTS  = ["*"]/\' /opt/mezzanine/mysite/mysite/local_settings.py \n\
python manage.py createdb --noinput \n\
python manage.py migrate --noinput \n\
python manage.py runserver 0.0.0.0:80' > /opt/mezzanine/mysite/start.sh \
  && chmod +x /opt/mezzanine/mysite/start.sh
EXPOSE 80
VOLUME /opt/mezzanine/mysite
CMD ["/opt/mezzanine/mysite/start.sh"]

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

docker-compose.yml
version: "2"
services:
  db:
    image: postgres:10.4-alpine
    container_name: "mezzanine-db"
    ports:
      - "5432:5432"
    volumes:
      - "db-data:/var/lib/postgresql/data"
    environment:
        POSTGRES_DB: mezzanine
        POSTGRES_PASSWORD: mezzanine
  mezzanine:
    image: mezzanine-pg
    container_name: "mezzanine"
    volumes:
      - "mezzanine-data:/opt/mezzanine/mysite"
    ports:
      - "80:80"
    depends_on:
      - db
volumes:
  db-data:
    driver: local
  mezzanine-data:
    driver: local

3.ブラウザから以下のURLにアクセス
http://<Dockerホスト名またはIP>/
※デフォルトユーザとパスワードはadmin/defaultです。


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

2018年9月8日土曜日

AnsibleでPagekitとMariaDBをインストールする(Ubuntu18.04用)

PagekitはPHP製のCMSです。

〇Pagekitの画面


〇インストール方法
1.下準備
~/.ansible.cfgに以下の内容を設定します
[ssh_connection]
pipelining=True
[defaults]
host_key_checking = False

2. インストール対象ホストのユーザやパスワードを環境に合わせてinventoryファイルに記入します

inventory例
[pagekit]
192.168.1.61

[all:vars]
ansible_ssh_port=22
ansible_ssh_user=vagrant
ansible_ssh_pass=vagrant
ansible_sudo_pass=vagrant

3.inventory、pagekit.ymlを準備し、以下のコマンドを実行します。
ansible-playbook -i inventory pagekit.yml

pagekit.yml
- hosts: pagekit
  vars:
    - dbname: pagekit
    - dbuser: pagekit
    - dbpassword: pagekit
    - dbhost: localhost
    - dbport: 3306
    - servername: 192.168.1.61
  tasks:
    - name: set password for root
      shell: echo "mariadb-server-10.1 mysql-server/root_password password root" | sudo debconf-set-selections
      become: yes
    - name: set password for root
      shell: echo "mariadb-server-10.1 mysql-server/root_password_again password root" | sudo debconf-set-selections
      become: yes
    - name: install mariadb
      apt:
        name: mariadb-server
        state: present
      become: yes
    - name: enable and start mariadb
      systemd:
        name: mysql
        enabled: yes
        state: started
      become: yes
    - name: Install required software
      apt: name={{ item }} state=present
      with_items:
        - libmysqlclient-dev
        - python-pip
      become: true
    - name: install MySQL-python using pip
      pip:
        name: "{{ item }}"
        state: forcereinstall
      with_items:
        - pip
        - MySQL-python
      become: true
    - name: create db
      mysql_db:
        name={{ dbname }}
        state=present
        encoding=utf8
        login_user=root
      become: true
    - name: create and grant a database user
      mysql_user:
        name={{ dbuser }}
        password={{ dbpassword }}
        priv="pagekit.*:ALL"
        state=present
      become: true
    - name: Install apache and php modules
      apt: name={{ item }} state=present
      with_items:
        - apache2
        - libapache2-mod-php7.2
        - php7.2-gd
        - php7.2-json
        - php7.2-mysql
        - php7.2-curl
        - php7.2-mbstring
        - php7.2-xml
        - php7.2-zip
        - unzip
      become: true
    - name: download pagekit
      get_url:
        url: https://github.com/pagekit/pagekit/releases/download/1.0.14/pagekit-1.0.14.zip
        dest: /tmp/
      become: true
    - name: mkdir
      file: path=/opt/pagekit state=directory owner=root group=root mode=0755
      become: true
    - name: extract pagekit
      unarchive:
        remote_src: yes
        src: /tmp/pagekit-1.0.14.zip
        dest: /opt/pagekit
      become: true
    - name: change owner
      file:
        path: /opt/pagekit
        owner: www-data
        group: www-data
        recurse: yes
      become: true
    - name: clean up
      file:
        state: absent
        path: /tmp/pagekit-1.0.14.zip
      become: yes
    - name: symlink
      file:
        path: /var/www/html/pagekit
        state: link
        src: /opt/pagekit
      become: true
    - name: start apache2.service
      systemd:
        name: apache2
        state: restarted
      become: yes

4. ブラウザからhttp://<ホスト名またはIP>/pagekit/にアクセスします。言語を選択して「NEXT」ボタンをクリックします。


5. Connect Database画面
以下の値を設定します。
Hostname : localhost
User : pagekit
Password : pagekit
Database name: pagekit


6. サイト名、管理者情報を入力します。



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

2018年9月7日金曜日

DockerでBolt、PostgreSQL10.4がインストールされたコンテナ(Alpine 3.8)のイメージを作成する

BoltはPHP製のCMSです。

〇Bolt CMSの画面


○構築方法
以下の手順で、Bolt、PostgreSQL10.4のコンテナ(Alpine 3.8)を構築・実行します。

1. Boltイメージの作成(Dockerfileがあるフォルダで実行)
docker build -t boltpg .

Dockerfile
FROM alpine:3.8
WORKDIR /
RUN  apk update \
  && apk add --no-cache apache2 php7-apache2 php7 php7-pgsql php7-pdo php7-pdo_pgsql 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 php7-openssl 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-* /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: postgres\n    username: postgres\n    password: bolt\n    host: db\n    port: 5432/' ./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とPostgreSQLコンテナの構築・実行(docker-compose.ymlがあるフォルダで実行)
docker-compose up -d

docker-compose.yml
version: "2"
services:
  bolt:
    image: boltpg
    container_name: "bolt"
    volumes:
      - "bolt-data:/opt/bolt"
    ports:
      - "80:80"
    depends_on:
      - db
  db:
    image: postgres:10.4-alpine
    container_name: "bolt-db"
    ports:
      - "5432:5432"
    volumes:
      - "db-data:/var/lib/postgresql/data"
    environment:
        POSTGRES_DB: bolt
        POSTGRES_PASSWORD: bolt
volumes:
  db-data:
    driver: local
  bolt-data:
    driver: local

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


〇Boltの管理者画面



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

2018年9月4日火曜日

VagrantでPagekitとMariaDBをインストールした仮想マシン(Ubuntu18.04)を構築する

PagekitはPHP製のCMSです。

〇Pagekitの画面


〇構築方法
1.以下のVagrantfileを使用して、PagekitとMariaDBをインストールした仮想マシン(Ubuntu18.04)を構築する事ができます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/ubuntu-18.04"
  config.vm.hostname = "ub1804pagekitmariadb"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "ub1804pagekitmariadb"
     vbox.cpus = 2
     vbox.memory = 2048
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
config.vm.network "private_network", ip: "192.168.55.68", :netmask => "255.255.255.0"
config.vm.network "public_network", ip:"192.168.1.68", :netmask => "255.255.255.0"
  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
locale-gen ja_JP.UTF-8
localectl set-locale LANG=ja_JP.UTF-8
timedatectl set-timezone Asia/Tokyo

# install mariadb
echo "mariadb-server-10.0 mysql-server/root_password password root" | debconf-set-selections
echo "mariadb-server-10.0 mysql-server/root_password_again password root" | debconf-set-selections
apt-get -y install mariadb-server
mysql -uroot -proot -e "CREATE DATABASE pagekit DEFAULT CHARACTER SET utf8;"
mysql -uroot -proot -e "CREATE USER pagekit@localhost IDENTIFIED BY 'pagekit';"
mysql -uroot -proot -e "GRANT ALL PRIVILEGES ON pagekit.* TO 'pagekit'@'localhost';"
mysql -uroot -proot -e "FLUSH PRIVILEGES;"


# install php
apt-get -y install apache2 libapache2-mod-php7.2 graphviz aspell
apt-get -y install php7.2-gd php7.2-json php7.2-mysql  php7.2-mbstring
apt-get -y install php7.2-xml php7.2-zip php7.2-intl php7.2-curl


# install pagekit
apt-get -y install unzip
mkdir -p /opt/pagekit
cd /opt/pagekit
wget https://github.com/pagekit/pagekit/releases/download/1.0.14/pagekit-1.0.14.zip
unzip pagekit-*
chown -R www-data:www-data /opt/pagekit
ln -s  /opt/pagekit /var/www/html


service apache2 restart
echo 'access http://192.168.55.68/pagekit/'
echo 'db user: pagekit  password:pagekit  db:pagekit'
SHELL
end

2. ブラウザからhttp://<ホスト名またはIP>/pagekit/にアクセスします。言語を選択して「NEXT」ボタンをクリックします。


4. Connect Database画面
以下の値を設定します。
Hostname : localhost
User : pagekit
Password : pagekit
Database name: pagekit


5. サイト名、管理者情報を入力します。



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

2018年8月30日木曜日

AnsibleでGravをインストールする(CentOS7.5用)

Gravはデータベースを使用しないPHP製のCMSです。

〇Gravの画面

ブラウザからhttp://<対象ホスト>/grav/にアクセスします。

〇Gravの管理者画面

ブラウザからhttp://<対象ホスト>/grav/admin/にアクセスします。ユーザ/パスワードはadmin/Admin123です。

〇インストール方法
1.下準備
~/.ansible.cfgに以下の内容を設定します
[ssh_connection]
pipelining=True
[defaults]
host_key_checking = False

2. インストール対象ホストのユーザやパスワードを環境に合わせてinventoryファイルに記入します

inventory例
[grav]
192.168.1.107

[all:vars]
ansible_ssh_port=22
ansible_ssh_user=vagrant
ansible_ssh_pass=vagrant
ansible_sudo_pass=vagrant

3.inventory、grav.ymlを準備し、以下のコマンドを実行します。
ansible-playbook -i inventory grav.yml

grav.yml
- hosts: grav
  tasks:
    - name: install remi repository
      yum: name=http://ftp.riken.jp/Linux/remi/enterprise/remi-release-7.rpm
      become: true
    - name: Install apache and php modules
      yum: name={{ item }} state=present enablerepo=remi-php71
      with_items:
        - httpd
        - php
        - php-gd
        - php-json
        - php-curl
        - php-mbstring
        - php-xml
        - php-simplexml
        - php-zip
        - unzip
      become: true
    - name: download grav
      get_url:
        url: https://getgrav.org/download/core/grav-admin/1.4.8
        dest: /tmp/grav.zip
      become: true
    - name: extract grav
      unarchive:
        remote_src: yes
        src: /tmp/grav.zip
        dest: /opt/
      become: true
    - name: download skelton
      get_url:
        url: https://getgrav.org/download/skeletons/soraarticle-blog/1.1.2
        dest: /tmp/grav-skeleton-soraarticle-blog-v1.1.2.zip
      become: true
    - name: extract skelton
      unarchive:
        remote_src: yes
        src: /tmp/grav-skeleton-soraarticle-blog-v1.1.2.zip
        dest: /opt/grav-admin
      become: true
    - name: place skelton
      shell: cp -R  /opt/grav-admin/grav-skeleton-soraarticle-blog/* /opt/grav-admin
      become: true
    - name: create a user
      command: ./bin/plugin login newuser --user=admin --password=Admin123 --email=admin@localhost.localdomain --permissions=b --fullname=administrator --title=admin
      args:
          chdir: /opt/grav-admin
      become: true
    - name: setup systemd
      blockinfile:
        dest: /etc/httpd/conf.d/grav.conf
        create: yes
        block: |
          
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
          
      become: true
    - name: change owner
      file:
        path: /opt/grav-admin
        owner: apache
        group: apache
        recurse: yes
      become: true
    - name: symlink
      file:
        path: /var/www/html/grav
        state: link
        src: /opt/grav-admin
      become: true
    - name: clean up
      file:
        state: absent
        path: /tmp/grav.zip
      become: yes
    - name: clean up skelton
      file:
        state: absent
        path: /tmp/grav-skeleton-soraarticle-blog-v1.1.2.zip
      become: yes
    - name: start httpd.service
      systemd:
        name: httpd
        state: restarted
      become: yes


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

2018年8月26日日曜日

AnsibleでGravをインストールする(Ubuntu16.04/Debian Stretch用)

Gravはデータベースを使用しないPHP製のCMSです。

〇Gravの画面

ブラウザからhttp://<対象ホスト>/grav/にアクセスします。

〇Gravの管理者画面

ブラウザからhttp://<対象ホスト>/grav/admin/にアクセスします。ユーザ/パスワードはadmin/Admin123です。

〇インストール方法
1.下準備
~/.ansible.cfgに以下の内容を設定します
[ssh_connection]
pipelining=True
[defaults]
host_key_checking = False

2. インストール対象ホストのユーザやパスワードを環境に合わせてinventoryファイルに記入します

inventory例
[grav]
192.168.1.107

[all:vars]
ansible_ssh_port=22
ansible_ssh_user=vagrant
ansible_ssh_pass=vagrant
ansible_sudo_pass=vagrant

3.inventory、grav.ymlを準備し、以下のコマンドを実行します。
ansible-playbook -i inventory grav.yml

grav.yml
- hosts: grav
  tasks:
    - name: Install apache and php modules
      apt: name={{ item }} state=present
      with_items:
        - apache2
        - libapache2-mod-php7.0
        - php7.0-gd
        - php7.0-json
        - php7.0-curl
        - php7.0-mbstring
        - php7.0-xml
        - php7.0-zip
        - unzip
      become: true
    - name: download grav
      get_url:
        url: https://getgrav.org/download/core/grav-admin/1.4.8
        dest: /tmp/grav.zip
      become: true
    - name: extract grav
      unarchive:
        remote_src: yes
        src: /tmp/grav.zip
        dest: /opt/
      become: true
    - name: download skelton
      get_url:
        url: https://getgrav.org/download/skeletons/soraarticle-blog/1.1.2
        dest: /tmp/grav-skeleton-soraarticle-blog-v1.1.2.zip
      become: true
    - name: extract skelton
      unarchive:
        remote_src: yes
        src: /tmp/grav-skeleton-soraarticle-blog-v1.1.2.zip
        dest: /opt/grav-admin
      become: true
    - name: place skelton
      shell: cp -R  /opt/grav-admin/grav-skeleton-soraarticle-blog/* /opt/grav-admin
      become: true
    - name: create a user
      command: ./bin/plugin login newuser --user=admin --password=Admin123 --email=admin@localhost.localdomain --permissions=b --fullname=administrator --title=admin
      args:
          chdir: /opt/grav-admin
      become: true
    - name: setup systemd
      blockinfile:
        dest: /etc/apache2/apache2.conf
        create: yes
        block: |
          
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
          
      become: true
    - name: change owner
      file:
        path: /opt/grav-admin
        owner: www-data
        group: www-data
        recurse: yes
      become: true
    - name: symlink
      file:
        path: /var/www/html/grav
        state: link
        src: /opt/grav-admin
      become: true
    - name: clean up
      file:
        state: absent
        path: /tmp/grav.zip
      become: yes
    - name: clean up skelton
      file:
        state: absent
        path: /tmp/grav-skeleton-soraarticle-blog-v1.1.2.zip
      become: yes
    - name: enable mod_rewrite
      apache2_module:
        state: present
        name: rewrite
      become: yes
    - name: start apache2.service
      systemd:
        name: apache2
        state: restarted
      become: yes


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

2018年8月5日日曜日

DockerでJoomla3.8.8、PostgreSQL10.4がインストールされたコンテナ(Alpine 3.7)を構築する

JoomlaはPHP製のCMSです。

〇Joomlaの管理者画面


○構築方法
以下の手順で、Joomla3.8.8とPostgreSQL10.4のコンテナを構築・実行します。

1. Joomlaイメージの作成(Dockerfileがあるフォルダで実行)
docker build -t joomlapg .

Dockerfile
FROM alpine:3.7
WORKDIR /
RUN  apk update \
  && apk add --no-cache apache2 php7-apache2 php7-pgsql php7-pdo php7-session php7-mbstring php7-mcrypt php7-curl php7-json php7-xml php7-simplexml php7-zip php7-gd openssl openrc unzip \
  && rm -rf /var/cache/apk/* \
  && wget -O joomla.zip https://downloads.joomla.org/cms/joomla3/3-8-8/Joomla_3-8-8-Stable-Full_Package.zip?format=zip \
  && mkdir -p /opt/joomla \
  && unzip joomla.zip -d /opt/joomla \
  && rm -f joomla.zip \
  && chown -R apache:apache /opt/joomla \
  && mkdir -p /run/apache2 \
  && ln -s /opt/joomla /var/www/localhost/htdocs
EXPOSE 80
VOLUME /opt/joomla
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

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

docker-compose.yml
version: "2"
services:
  joomla:
    image: joomlapg
    container_name: "joomla"
    volumes:
      - "joomla-data:/opt/joomla"
    ports:
      - "80:80"
    depends_on:
      - db
  db:
    image: postgres:10.4-alpine
    environment:
      POSTGRES_DB: joomla
      POSTGRES_USER: joomla
      POSTGRES_PASSWORD: joomla
    ports:
      - "5432:5432"
    container_name: postgres
    volumes:
      - "db-data:/var/lib/postgresql/data"
volumes:
  db-data:
    driver: local
  joomla-data:
    driver: local

2.ブラウザでhttp://<Dockerホスト名またはIP>/joomla/にアクセスして、サイト設定画面のサイト名称や管理者情報を入力します。


3.データベース設定画面で接続情報を入力します。
データベース: PostgreSQL
ホスト名: db
ユーザ名: joomla
パスワード: joomla
データベース: joomla


4. Webホスティングアカウントの所有権の確認メッセージで、以下のコマンドを実行します。
docker ps
docker exec <docker psで表示されたjoomlaコンテナのID> rm -rf /opt/joomla/installation/<画面に表示されたファイル名>


5. 概要設定画面でインストールボタンをクリックします。


6. インストール完了画面で「installationディレクトリを削除」ボタンをクリックします。


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

2018年8月3日金曜日

AnsibleでGravをインストールする(Ubuntu18.04用)

Gravはデータベースを使用しないPHP製のCMSです。

〇Gravの画面

ブラウザからhttp://<対象ホスト>/grav/にアクセスします。

〇Gravの管理者画面

ブラウザからhttp://<対象ホスト>/grav/admin/にアクセスします。ユーザ/パスワードはadmin/Admin123です。

〇インストール方法
1.下準備
~/.ansible.cfgに以下の内容を設定します
[ssh_connection]
pipelining=True
[defaults]
host_key_checking = False

2. インストール対象ホストのユーザやパスワードを環境に合わせてinventoryファイルに記入します

inventory例
[grav]
192.168.1.107

[all:vars]
ansible_ssh_port=22
ansible_ssh_user=vagrant
ansible_ssh_pass=vagrant
ansible_sudo_pass=vagrant
3.inventory、grav.ymlを準備し、以下のコマンドを実行します。
ansible-playbook -i inventory grav.yml
grav.yml
- hosts: grav
  tasks:
    - name: Install apache and php modules
      apt: name={{ item }} state=present
      with_items:
        - apache2
        - libapache2-mod-php7.2
        - php7.2-gd
        - php7.2-json
        - php7.2-curl
        - php7.2-mbstring
        - php7.2-xml
        - php7.2-zip
        - unzip
      become: true
    - name: download grav
      get_url:
        url: https://getgrav.org/download/core/grav-admin/1.4.8
        dest: /tmp/grav.zip
      become: true
    - name: extract grav
      unarchive:
        remote_src: yes
        src: /tmp/grav.zip
        dest: /opt/
      become: true
    - name: download skelton
      get_url:
        url: https://getgrav.org/download/skeletons/soraarticle-blog/1.1.2
        dest: /tmp/grav-skeleton-soraarticle-blog-v1.1.2.zip
      become: true
    - name: extract skelton
      unarchive:
        remote_src: yes
        src: /tmp/grav-skeleton-soraarticle-blog-v1.1.2.zip
        dest: /opt/grav-admin
      become: true
    - name: place skelton
      shell: cp -R  /opt/grav-admin/grav-skeleton-soraarticle-blog/* /opt/grav-admin
      become: true
    - name: create a user
      command: ./bin/plugin login newuser --user=admin --password=Admin123 --email=admin@localhost.localdomain --permissions=b --fullname=administrator --title=admin
      args:
          chdir: /opt/grav-admin
      become: true
    - name: setup systemd
      blockinfile:
        dest: /etc/apache2/apache2.conf
        create: yes
        block: |
          
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
          
      become: true
    - name: change owner
      file:
        path: /opt/grav-admin
        owner: www-data
        group: www-data
        recurse: yes
      become: true
    - name: symlink
      file:
        path: /var/www/html/grav
        state: link
        src: /opt/grav-admin
      become: true
    - name: clean up
      file:
        state: absent
        path: /tmp/grav.zip
      become: yes
    - name: clean up skelton
      file:
        state: absent
        path: /tmp/grav-skeleton-soraarticle-blog-v1.1.2.zip
      become: yes
    - name: enable mod_rewrite
      apache2_module:
        state: present
        name: rewrite
      become: yes
    - name: start apache2.service
      systemd:
        name: apache2
        state: restarted
      become: yes


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

2018年7月30日月曜日

DockerでJoomla3.8.8、Percona Serverがインストールされたコンテナ(Alpine 3.7)を構築する

JoomlaはPHP製のCMSです。

〇Joomlaの管理者画面


○構築方法
以下の手順で、Joomla3.8.8とPercona Serverのコンテナを構築・実行します。

1. Joomlaイメージの作成(Dockerfileがあるフォルダで実行)
docker build -t joomla .

Dockerfile
FROM alpine:3.7
WORKDIR /
RUN  apk update \
  && apk add --no-cache apache2 php7-apache2 php7-mysqli php7-pdo php7-session php7-mbstring php7-mcrypt php7-curl php7-json php7-xml php7-simplexml php7-zip php7-gd openssl openrc unzip \
  && rm -rf /var/cache/apk/* \
  && wget -O joomla.zip https://downloads.joomla.org/cms/joomla3/3-8-8/Joomla_3-8-8-Stable-Full_Package.zip?format=zip \
  && mkdir -p /opt/joomla \
  && unzip joomla.zip -d /opt/joomla \
  && rm -f joomla.zip \
  && chown -R apache:apache /opt/joomla \
  && mkdir -p /run/apache2 \
  && ln -s /opt/joomla /var/www/localhost/htdocs
EXPOSE 80
VOLUME /opt/joomla
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

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

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

2.ブラウザでhttp://<Dockerホスト名またはIP>/joomla/にアクセスして、サイト設定画面のサイト名称や管理者情報を入力します。


3.データベース設定画面で接続情報を入力します。
データベース: MySQLi
ホスト名: db
ユーザ名: root
パスワード: joomla
データベース: joomla


4. Webホスティングアカウントの所有権の確認メッセージで、以下のコマンドを実行します。
docker ps
docker exec <docker psで表示されたjoomlaコンテナのID> rm -rf /opt/joomla/installation/<画面に表示されたファイル名>


5. 概要設定画面でインストールボタンをクリックします。


6. インストール完了画面で「installationディレクトリを削除」ボタンをクリックします。


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