rare-cheesecakeの日記

主に技術情報を不定期更新していきます。今注目しているのはPythonとDevOpsです。

ansibleを使ってみた2

今回はVagrantでAnsibleを実行してみました。

 

必要な手順は以下の通りです。

Vagrantでbox作成

Vagrantファイルと同じディレクトリにhostsファイルを作成

 内容は以下のような感じにする(グループ名とホストは任意)

[vagrant]
192.168.xxx.xxx

・taskを定義したyamlファイルを作成

Vagrantファイルにansibleのtaskを実行する設定を追加

 内容は以下のような感じにする(ansible.limit='all'がないと動かないようです)

Vagrantfile
  config.vm.box = "box名"
  config.vm.network "forwarded_port", guest: 22, host: ホストの任意のポート
  config.vm.network "private_network", ip: "hostsに定義したホスト"
  config.vm.provision :ansible do |ansible|
    ansible.playbook = "yamlファイル名"
    ansible.inventory_path = "hosts"
    ansible.limit = 'all'
  end
end

あとはvagrant upでVirtualBoxイメージが生成されてAnsibleが実行されます。

google apps scriptでライブラリ化したときの問題

google apps scriptで作成したスクリプトをライブラリ化すると、

htmlからライブラリのスクリプトを実行できない問題が発生しました。

 

色々調べてみると、以下の2つのissueにたどり着きました。

Issue 3778 - google-apps-script-issues - Bug between a script embedded in a [new] spreadsheet as a library with the modal dialog - Google Apps Script issues and feature requests - Google Project Hosting

 

Issue 3982 - google-apps-script-issues - Server error occurs when using a UiApp and a server handler in new sheets AND there is a library - Google Apps Script issues and feature requests - Google Project Hosting

 

上のライブラリ呼び出し部分のラッパー作成だけでは解決できず、

ライブラリを単体で作成することで解決ができました。

 

恐らくデフォルトではGoogle Driveの「作成」ボタンからスクリプトを選べないので、

以下の手順で追加してライブラリを作成しました。

・「作成」ボタン→「アプリを追加」→「Google Apps Script」を追加("script"で検索すると出てきます)

 

また、ダイアログからスクリプトを呼び出す際に気をつけないといけないのは、

ライブラリ側にgoogle.script.runで関数を呼び出すHTMLを含めた場合、

呼び出される関数はライブラリ呼び出し側のスクリプトに存在する必要があるということです。

 

 

 

nginxでハマったw

今nginx+bottle+mysqlでWebアプリケーションを作っていますが、

検索系の画面で、なぜか途中までしか表示されない現象が発生しました。

 

色々調べてみたところ、nginxのログに「open() "/var/lib/nginx/tmp/proxy/ほにゃらら" failed (13: Permission denied) while reading upstream」と吐かれていました。

 

なんじゃこりゃと思っていたら、

どうやら設定ファイルでnginxの実行ユーザーを変えたのに、/var/lib/nginxのアクセス権限が変わっておらず、キャッシュへアクセスできなかったことが原因だったみたいです。

 

結果としては/var/lib/nginxのアクセス権限を実行ユーザーのものに変えたら解決しましたとさ。

めでたしめでたし。

 

PythonからSolrへアクセス

最近よくApache Solrを使うので、簡単なアクセス方法をメモメモ

solrpyを使ってもいいのですが、今回は基本的なやり方だけで繋げています。

 

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import json, urllib2

def search(keyword):
    query = 'http://solrサーバーのホスト名/solr/select?q=' + urllib2.quote(keyword)+ '&wt=json' # solrへのアクセス用クエリ(検索キーワードはurlエンコードしてから使用)
    r = urllib2.urlopen(query) # クエリ発行
    json_data = json.loads(r.read()) # 結果の読み取り
    return json_data
    
result = search('hoge')
print(result['response']['docs']) # 検索結果の内容
print(result['response']['numFound']) # 検索結果の件数

apache solrを使えば、簡単に検索機能の仕組みが作れるのでいいですね。

mysqlでよく使うコマンド

いつも忘れるので、よく使う基本コマンドを書いておきます。

 

mysql -u ユーザー名 -pパスワード --host=ホスト名

 

  • データベース一覧

show databases;

 

  • テーブル一覧

show tables from データベース名

 

  • データベース選択

use データベース名;

 

  • テーブル定義

show create table テーブル名;

 

Atomエディタを使ってみた②

現在参加している勉強会で、Atomエディタのパッケージ開発の基礎について発表しました。

 

せっかくなので以下に発表資料を公開します。

ミニプログラミングコンテスト(第1回) - Google スライド