はじめに
こんにちわ。
4年間いわてに住んだことあります。つくば在住のやぎぬまです。
学生3人でルームシェアしてます。
今回は最近、サーバ借りたのでちょっと環境構築がてらrubyでbot作ってみた時のメモです。
サーバの環境構築
まず、サーバ借りたら各ユーザごとにpublic_htmlを作り、そのなかで作業できるようにしたかったのでしました。
apacheでは
- /etc/apache2/mods-availableに各モジュールのロード用スクリプト本体
- /etc/apache2/mods-enabledにロードスクリプトへのリンク
が置かれています。なので、userdirモジュールを有効にするために以下のようにリンクを貼ります。
cd /etc/apache2/mods-enabled
sudo ln -s ../mods-available/userdir.conf userdir.conf
sudo ln -s ../mods-available/userdir.load userdir.load
これで、/home/各ユーザ/public_html配下で作業できるようになります。
sudo a2enmod userdir
このコマンドでもできるらしいです。確認はしていません。
一応今回は使わないですが、cgiの設定もします。
ubuntuなので、以下の要領でまたリンクを張ります。
sudo ln -s /etc/apache2/mods-available/cgi.load /etc/apache2/mods-enabled/cgi.load
次に/etc/apache2/sites-available/000-default.confを編集します。
sudo vi /etc/apache2/sites-available/000-default.conf
Include conf-available/serve-cgi-bin.conf #コメントを外す
次に拡張子を設定します。
sudo vi /etc/apache2/mods-available/mime.conf
AddHandler cgi-script .cgi .rb #.rb追加
次にcgiを動かすディレクトリの設定をします。
<IfDefine ENABLE_USR_LIB_CGI_BIN>
#ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
#<Directory "/usr/lib/cgi-bin">
ScriptAlias /cgi-bin/ /home/*/
<Directory "/home/*">
AllowOverride None
Options +ExecCGI -MultiViews+SymLinksIfOwnerMatch #追加
Require all granted
</Directory>
</IfDefine>
#!/usr/bin/ruby
# coding:utf-8
puts "Content-type:text/plain"
puts ""
puts "Hello World."
botをつくる
今回は環境構築メインなので、定期的につぶやく簡単なbotにしようと思います。
まず、bot用のアカウントつくります。
次にアプリマネジメントページで新しくアプリケーションを作ります。
これは調べればたくさんあるので割愛します。
Keys and AccessTokensタブの
- Consumer Key (API Key)
- Consumer Secret (API Secret)
- Access Token
- Access Token Secret
控えます。
次にgemをインストールします。
gem install twitter
次にこんな感じのファイルを用意します。
各キーはyamlに書いときます。
consumer_key: "YOUR_CONSUMER_KEY"
consumer_secret: "YOUR_CONSUMER_SECRET"
access_token: "YOUR_ACCESS_TOKEN"
access_token_secret: "YOUR_ACCESS_SECRET"
# coding:utf-8
require 'yaml'
require 'twitter'
keys = YAML.load_file(File.expand_path('../config.yml', __FILE__))
client = Twitter::REST::Client.new do |config|
config.consumer_key = keys["consumer_key"]
config.consumer_secret = keys["consumer_secret"]
config.access_token = keys["access_token"]
config.access_token_secret = keys["access_token_secret"]
end
str = %w(おなかすいた 旅行いきたひ 貧乏生活 スノボしたい かに食べ行こう ルームシェア楽しい ruby大好き youtuberになろうかな)
client.update(str.sample)
次に定期的にツイートさせるためにcronを動かします。
いろいろやり方がありますが、今回は以下要領でやります。
crontab -e
*/30 * * * * /home/yaginuuu/.rbenv/shims/ruby(実行コマンド) /home/yaginuuu/public_html/bot.rb(実行ファイル)
cronの書き方に関しては参考文献を参考下さい。
こんなかんじで確認できました。
さいごに
サーバの環境構築からbotを動かすとこまでまとめてみました。