Stack Overflowのクローン「Question2Answer」をインストールする
Q&Aサイト(って言っていい?)「Stack Overflow」のクローン「Question2Answer」のインストール方法を紹介します。使用したマシンのOSは、Ubuntu Server 16.04.4 LTSです(Ubuntu Server 18.04 LTSでも同じ手順だと思う)。
とりあえず、実行するコマンドは次の通り。
$ sudo apt -y install apache2 php php-mysql mysql-server libapache2-mod-php php-gd php-mbstring php-xml php-mcrypt git
MySQLの管理者パスワードを設定
$ mysqladmin create q2a -u root -p
MySQLの管理者パスワードを入力
$ sudo a2enmod rewrite
$ git clone https://github.com/q2a/question2answer.git
$ git clone https://github.com/naga0ka/Q2A-Japanese.git
$ mv Q2A-Japanese/ja question2answer/qa-lang/.
$ mv question2answer/qa-config-example.php question2answer/qa-config.php
$ vi question2answer/qa-config.php
初めの方の3行を青字で示したように書き換える
define('QA_MYSQL_USERNAME', 'root');
define('QA_MYSQL_PASSWORD', 'MySQLの管理者パスワード');
define('QA_MYSQL_DATABASE', 'q2a');
$ sudo mv question2answer/ /var/www/html/q2a
$ sudo chown www-data.www-data /var/www/html/q2a
$ sudo systemctl restart apache2
「http://IPアドレス/q2a」にアクセス。インストーラーに指示に従って導入(手順省略)。インストール後、Gmailのメールサーバーを設定すれば、各種通知をメールで配信できます(「安全性の低いアプリの許可」を有効にしておく)。
CMS「Joruri」をUbuntuで動かす
徳島県庁のホームページに使われているCMS「Joruri」をWeb記事にしようと思いましたが、目的のものと違ったのでここに掲載します。CMSとしてはとてもよくできています。このコマンド通りにインストールすれば、Ubuntu上で動きます(たぶん問題ないと思われます)。ちなみに音声読み上げの箇所はやっていません。nginxのログ部分は、暫定対処にしています(「main」と「warn」のフォーマットが読み込まれていないって問題がありました)。
CenOSへのインストール手順はここにあるので、参考にしてください。
$ sudo apt install ruby nginx postgresql build-essential ruby-dev zlib1g-dev liblzma-dev libgmp3-dev libpq-dev libpq-dev libmagickcore-dev imagemagick libmagickwand-dev
$ sudo gem install bundler nio4r
$ sudo su - postgres -c "psql -c \"CREATE USER joruri WITH CREATEDB ENCRYPTED PASSWORD 'joruripass';\""
$ sudo useradd -m joruri
$ sudo git clone https://github.com/joruri/joruri-cms-2017.git /var/www/joruri
$ sudo chown -R joruri.joruri /var/www/joruri
$ sudo apt install libxml++2.6-dev libxslt1-dev libldap2-dev nodejs exiv2
$ sudo -i
# su - joruri -c 'export LANG=ja_JP.UTF-8; cd /var/www/joruri && bundle config build.pg --with-pg-config=/usr/bin/pg_config'
# su - joruri -c 'export LANG=ja_JP.UTF-8; cd /var/www/joruri && bundle install --path vendor/bundle --without development test'
# cp /var/www/joruri/config/samples/logrotate /etc/logrotate.d/joruri_logrotate
# cp /var/www/joruri/config/samples/reload_servers.sh /root/. && chmod 755 /root/reload_servers.sh
# ROOT_CRON_TXT='/var/www/joruri/config/samples/root_cron.txt'
# crontab -l > $ROOT_CRON_TXT
# grep -s reload_servers.sh $ROOT_CRON_TXT || echo '0,30 * * * * /root/reload_servers.sh' >> $ROOT_CRON_TXT
# crontab $ROOT_CRON_TXT
# su - joruri -c 'cp -p /var/www/joruri/config/original/*.yml /var/www/joruri/config/'
# sed -i -e 's@http://joruri.example.com/@http://サーバーのIPアドレス/@g' /var/www/joruri/config/core.yml
# su - joruri -c 'export LANG=ja_JP.UTF-8; cd /var/www/joruri && bundle exec rake secret RAILS_ENV=production'
キーが表示
# vi /var/www/joruri/config/secrets.yml
production:
secret_key_base:キーに書き換え
# su - joruri -c 'export LANG=ja_JP.UTF-8; cd /var/www/joruri && bundle exec rake db:setup RAILS_ENV=production'
# su - joruri -c 'export LANG=ja_JP.UTF-8; cd /var/www/joruri && bundle exec rake db:seed:demo RAILS_ENV=production'
# su - joruri -c 'export LANG=ja_JP.UTF-8; cd /var/www/joruri && bundle exec rake joruri:configure RAILS_ENV=production'
# ln -s /var/www/joruri/config/nginx/nginx.conf /etc/nginx/conf.d/joruri.conf
# sed -i -e 's@access_log@#access_log@' /var/www/joruri/config/nginx/servers/site_0001.conf
# sed -i -e 's@error_log@#error_log@' /var/www/joruri/config/nginx/servers/site_0001.conf
# systemctl restart postgresql
# systemctl restart nginx
# cp /var/www/joruri/config/samples/unicorn.service /lib/systemd/system/joruri_unicorn.service
# sed -i -e 's@/usr/local/rbenv/shims/bundle@/usr/local/bin/bundle@' /lib/systemd/system/joruri_unicorn.service
# systemctl start joruri_unicorn && systemctl enable joruri_unicorn
# cp /var/www/joruri/config/samples/delayed_job.service /lib/systemd/system/joruri_delayed_job.service
# sed -i -e 's@/usr/local/rbenv/shims/bundle@/usr/local/bin/bundle@' /lib/systemd/system/joruri_delayed_job.service
# systemctl start joruri_delayed_job && systemctl enable joruri_delayed_job
# su - joruri -c 'export LANG=ja_JP.UTF-8; cd /var/www/joruri && bundle exec whenever --update-crontab'