6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Google Compute Engine (GCE)上でTiny Tiny RSSを動かしてみる

Last updated at Posted at 2016-01-21

Google Readerが終了して以来、AWSでTiny Tiny RSSを動かしてRSSを読んでましたが、Google Cloud Platformの勉強がてらCompute Engineに移行してみようと思います。基本的に自分用の備忘録です。

まずはGCE上でTiny Tiny RSSを動かすところまでやってみます。

環境

個人的に使い慣れたものを組み合わせてこんな感じにします。

GCEのVMインスタンスを起動

Machine typeはとりあえずf1-microを選択。OSubuntu-14-04を選択。Firewallの設定のAllow HTTP trafficをチェックして起動します。

各種ソフトウェアのインストールと設定

SSHでログインして作業します。

$ sudo timedatectl set-timezone America/Los_Angeles
$ sudo apt-get update
$ sudo apt-get install mysql-client mysql-server
$ sudo apt-get install lighttpd
$ sudo apt-get install php5-cli php5-curl php5-fpm php5-mysql

php5をインストールするとapache2も付いてくるので、ここではphp5-cliをインストールします。

MySQLの設定ファイルは/etc/mysql/my.cnfにあります。ここでは、キャラクターセットの設定をutf8mb4にセットしてmysqlを再起動します。

$ sudo vi /etc/mysql/my.cnf
/etc/mysql/my.cnf
[client]
...
default-character-set = utf8mb4

[mysqld]
..
character-set-server = utf8mb4
$ sudo service mysql restart
mysql stop/waiting
mysql start/running, process 1234

PHPの設定ファイルは/etc/php5/*にあります。ここでは、PHP-FPMの設定のcgi.fix_pathinfo1にセットして、php5-fpmを再起動します。

$ sudo sed -i -e 's/^;\(cgi.fix_pathinfo\)\s*=.*$/\1 = 1/' /etc/php5/fpm/php.ini
$ sudo service php5-fpm restart
php5-fpm stop/waiting
php5-fpm start/running, process 1234

Lighttpdの設定ファイルは/etc/lighttpd/*にあります。ここでは、fastcgi-phpの設定をPHP-FPM用に以下のように書き換えて、fastcgifastcgi-phpを有効にして、lighttpdをリロードします。

$ sudo vi /etc/lighttpd/conf-available/15-fastcgi-php.conf
/etc/lighttpd/conf-available/15-fastcgi-php.conf
# -*- depends: fastcgi -*-
# /usr/share/doc/lighttpd/fastcgi.txt.gz
# http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ConfigurationOptions#mod_fastcgi-fastcgi

## Start an FastCGI server for php (needs the php5-fpm package)
fastcgi.server += ( ".php" =>
        ((
                "socket" => "/var/run/php5-fpm.sock",
                "broken-scriptfilename" => "enable"
        ))
)
$ sudo lighttpd-enable-mod fastcgi
Enabling fastcgi: ok
Run /etc/init.d/lighttpd force-reload to enable changes
$ sudo lighttpd-enable-mod fastcgi-php
Enabling fastcgi-php: ok
Run /etc/init.d/lighttpd force-reload to enable changes
$ sudo service lighttpd force-reload
 * Reloading web server configuration lighttpd                           [ OK ] 

動作確認

ブラウザで http://(IPアドレス)/ にアクセスして、Lighttpdのデフォルトページが表示されればLighttpdはok。

次のようなPHPスクリプトを用意して、ブラウザで http://(IPアドレス)/phpinfo.php にアクセスして、PHPの情報が表示されればPHPはok。

/var/www/phpinfo.php
<?php phpinfo() ?>

Tiny Tiny RSSのインストールと設定

インストールガイドに従ってインストールします。

$ sudo apt-get install git
$ cd /var/www
$ sudo git clone https://tt-rss.org/git/tt-rss.git tt-rss
Cloning into 'tt-rss'...
...
$ sudo chgrp www-data tt-rss
$ sudo chmod g+w tt-rss
$ cd tt-rss
$ sudo chgrp www-data cache cache/* feed-icons lock
$ sudo chmod g+w cache cache/* feed-icons lock

Lighttpdから各種ファイルを書き込めるようにいくつかのディレクトリのパーミッションも設定しておきます。設定が足りない場合は以下のブラウザでのインストール時にメッセージが出るので、それを見て設定しても問題ありません。

MySQLのユーザとデータベースを作成します。

$ mysql -u root -p
Enter password:
...
mysql> CREATE DATABASE ttrss_db CHARACTER SET utf8mb4;
Query OK, 1 row affected (0.00 sec)

mysql> CREATE USER 'ttrss_user'@'localhost' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL ON ttrss_db.* TO 'ttrss_user'@'localhost';
Query OK, 0 rows affected (0.00 sec)

MySQL用のスキーマではテーブルをDEFAULT CHARSET=UTF8で作るようになっているので、DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ciに書き換えます。こちらも参考にしつつ、titleやcontentといったカラムのある以下のテーブルについて書き換えます。また、ttrss_entriesテーブルのguidカラムについてはvarchar(255)varchar(191)に書き換えます。

  • ttrss_feed_categories
  • ttrss_archived_feeds
  • ttrss_feeds
  • ttrss_entries
  • ttrss_user_entries
  • ttrss_filters2
  • ttrss_enclosures
  • ttrss_settings_profiles
  • ttrss_feedbrowser_cache
  • ttrss_linked_feeds
  • ttrss_error_log
$ cd /var/www/tt-rss/schema
$ sudo cp -p ttrss_schema_mysql.sql ttrss_schema_mysql.sql.orig
$ sudo vi ttrss_schema_mysql.sql

ブラウザで http://(IPアドレス)/tt-rss/install/ にアクセスしてインストールします。成功すれば/var/www/tt-rss/config.phpに設定ファイルが作られるので、ざっと設定ファイルの内容を確認して、次の設定を追加しておきます(後述)。

$ sudo vi /var/www/tt-rss/config.php
/var/www/tt-rss/config.php
	define('DAEMON_SLEEP_INTERVAL', 600);

フィードのアップデート用にUpstartスクリプトを用意して起動します。

$ sudo vi /etc/init/tt-rss.conf
/etc/init/tt-rss.conf
description "Tiny Tiny RSS Update Daemon"
author "z80"

start on runlevel [2345]
stop on runlevel [016]

respawn
exec start-stop-daemon -S -c www-data:www-data -x /usr/bin/php /var/www/tt-rss/update.php -- --daemon --log /var/log/tt-rss.log --quiet

respawnで、デーモンが何らかの理由で終了したら再起動するようにします。

$ init-checkconf /etc/init/tt-rss.conf
File /etc/init/tt-rss.conf: syntax ok
$ sudo touch /var/log/tt-rss.log
$ sudo chgrp www-data /var/log/tt-rss.log
$ sudo chmod 664 /var/log/tt-rss.log
$ sudo service tt-rss start
tt-rss start/running, process 1234

デフォルトでは2分おきにDBをチェックしてフィードのアップデートを行うようになってます(毎回全部ではなく、フィードのアップデートが必要かどうかチェックして、必要な分だけ)。しかし、個人で使ってる分にはそんなに頻繁に走らせる必要はないので、設定ファイルのDAEMON_SLEEP_INTERVALで間隔を適当に調整しておきます。

ブラウザで http://(IPアドレス)/tt-rss/にアクセスして、adminユーザのパスワード(デフォルトはpassword)を変更しておきます。

Fever API pluginのインストールと設定

スマートフォンのアプリからアクセスできるようにFever API pluginをインストールします。releasesページの最新版を取ってきて/var/www/tt-rss/plugins/ディレクトリにコピーします。

$ wget https://github.com/dasmurphy/tinytinyrss-fever-plugin/archive/1.4.7.tar.gz
...
$ tar xvfz 1.4.7.tar.gz
$ sudo mv tinytinyrss-fever-plugin-1.4.7/fever /var/www/tt-rss/plugins/

Reeder (iOS) integration with TT-RSS (via Fever API)を参考に設定などを行います。

まとめ

Compute Engine上でTiny Tiny RSSを動かすことができました。

ToDo

このままだとVMインスタンスが停止したらデータも丸ごと消えてしまいます。GCEにはライブ マイグレーションがあるのでそれなりに動き続けてくれそうですが、それでも停止する可能性は残るので、Persistent DiskCloud SQLを使うなどしてデータが消えないようにする必要があります。
追記:Google Compute Engine (GCE)からCloud SQLを使ってみる

参考

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?