futabooo blog

色々手をつけすぎてすぐに忘れるので備忘録

CentOSとDockerとWordpress

タイトルの元ネタを全く思い出せません。
今日はsakuraVPS(CentOS6.5)上にDockerでWordpressが構築できたので備忘録です。

## 構成

NginXをプロキシサーバー、DockerにApacheMysqlのせてWordpressインストール
と言った感じです。

とりあえず使う場合は下記でいけるかと。
```
$ git clone https://github.com/futabooo/dockerfiles.git
$ cd dockerfiles
$ sudo docker build -t centos:wordpress .
$ sudo docker run -p 49174:80 -d centos:wordpress
```
dockerコマンドでDockerファイルからイメージをビルドする。
ビルドしたイメージからコンテナ作成。
この時コンテナ側の49174ポートにホスト側の80ポートをつなぐ。


Nginxでのvirtual.confはこんな感じ。
```
server {
listen 80;
server_name example.com;

access_log /var/log/nginx/nilab.jp-access_log main;
error_log /var/log/nginx/nilab.jp-eroor_log warn;

location / {
proxy_pass http://127.0.0.1:49174;
}
}
```
server_nameとかは適宜読み替えていただきたく。

これで超ピュアなWordpressが動くようになります。
ただコンテナをkillするとデータが残らないので、ドカドカ作っては壊すときはご注意を。

参考
dockerでImmutable InfrastructureなWordPressを考える
memorycraft: Dockerってなんじゃ?(docker+nginxで複数コンテナにWEBサーバーをたてる)





MarkDown記法に変えたのに全然なってない??
書き方の問題か。。。

mavenをmacに導入した

超備忘録

mavenが必要になりましたので、ただ導入ではなくやったことの備忘録を。

Brewfileを更新する。
下記2行を追加。

tap homebrew/versions
install maven31

homebrew/versionsは複数のバージョンを別々のformulaeとして提供するリポジトリ
こいつを追加するとmaven31がインストールできるようになる。

確認。

$ mvn -v
Apache Maven 3.1.1 (0728685237757ffbf44136acec0402957f723d9a; 2013-09-18 00:22:22+0900)
Maven home: /usr/local/Cellar/maven31/3.1.1/libexec
Java version: 1.6.0_65, vendor: Apple Inc.
Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Default locale: ja_JP, platform encoding: SJIS
OS name: "mac os x", version: "10.9.3", arch: "x86_64", family: "mac"

これでおっけい。
特にJAVA_HOMEを設定してなくても良かった。なぞ。

PC買い替え時に注意すること

結論

バックアップはしっかり取りましょう。

先日Macを買い替えました。
必要なもんはDropboxに置いたりしたので大丈夫!
と思ってたら大切なものを無くしました。

無くしたもの

さくらVPS渡した公開鍵
Androidのkeystore

公開鍵無くしてVPSたんはOS再インストールしました。

keystore無くしたので過去に公開したAndroidアプリが更新できません。
同じパッケージ名が使えません。

プライベートで本当に良かったと思います。
みなさんも気をつけてください。

AndroidManifestのapplicationタグにクラスを2つ指定したくなった時にやったこと

もともとActiveAndroidを使っていたので下記のようなManifestでした。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.nilab.dribbbleviewer" >

    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    
    <application
        android:name="com.activeandroid.app.Application"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >

        <meta-data android:name="AA_DB_NAME" android:value="sqlite.db" />
        <meta-data android:name="AA_DB_VERSION" android:value="1" />

        <activity
            android:name="com.nilab.dribbbleviewer.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>


ここからVolleyのシングルトンクラスを追加しようと下記クラスを追加(参Android working with Volley Library

package com.nilab.dribbbleviewer;


import android.app.Application;
import android.text.TextUtils;

import com.activeandroid.ActiveAndroid;
import com.activeandroid.Configuration;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.Volley;

public class AppController extends Application {

    public static final String TAG = AppController.class.getSimpleName();

    private RequestQueue mRequestQueue;
    private ImageLoader mImageLoader;

    private static AppController mInstance;

    @Override
    public void onCreate(){
        super.onCreate();
        mInstance = this;
    }

    public static synchronized AppController getInstance(){
        return mInstance;
    }

    public RequestQueue getRequestQueue(){
        if(mRequestQueue == null){
            mRequestQueue = Volley.newRequestQueue(getApplicationContext());
        }
        return mRequestQueue;
    }

    public ImageLoader getImageLoader(){
        getRequestQueue();
        if(mImageLoader == null){
            mImageLoader = new ImageLoader(this.mRequestQueue, new LruBitmapCache());
        }
        return mImageLoader;
    }

    public <T> void addToRequestQueue(Request<T> req, String tag){
        req.setTag(TextUtils.isEmpty(tag) ? TAG : tag);
        getRequestQueue().add(req);
    }

    public <T> void addToRequestQueue(Request<T> req) {
        req.setTag(TAG);
        getRequestQueue().add(req);
    }

    public void cancelPendingRequests(Object tag) {
        if (mRequestQueue != null) {
            mRequestQueue.cancelAll(tag);
        }
    }
}

ここから結局ManifestとApplicationクラスを継承したクラスを下記のように書き換えて動きました。
Manifestはapplicationタグの中を書き換え。

    <application
        android:name="com.nilab.dribbbleviewer.AppController"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name">

        <activity
            android:name="com.nilab.dribbbleviewer.MainActivity"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

AppControllerはonCreateの中と新たにメソッドを一つ追加。

public class AppController extends Application {

    @Override
    public void onCreate(){
        super.onCreate();
        Configuration.Builder builder = new Configuration.Builder(getBaseContext());
        builder.setCacheSize(1024*1024*4);
        builder.setDatabaseName("sqlite.db");
        builder.setDatabaseVersion(1);
        ActiveAndroid.initialize(builder.create(), true);

        mInstance = this;
    }

    @Override
    public void onTerminate(){
        super.onTerminate();
        ActiveAndroid.dispose();
    }

以上。
美しくないですね。。。

homebrewとhomebrew-caskとBrewfileでmacの環境構築を楽にする

追記:2014/10/26
Google日本語入力が入らなかったのは僕がミスをしていたからでしたorz
修正しました。

追記:2014/06/11
この内容だとGoogle日本語入力がインストールされませんでした。
あとkeepassxが最新版っぽく、windowsとdbを共有で使っていた自分には合わなかったです。
バージョン指定とかをできるのかな?


参考
homebrew-caskを使って簡単にMacの環境構築をしよう! | nanapi TechBlog


mac買い替えたとかでアプリケーションをネットから探してhogehogeとか
めんどいなーと思っていたら、homebrew-caskというのがあるのを偶然知った。


homebrewでGoogleCromeとかがインストールできちゃうやつ。
homebrewのコマンドを書いておいて一括インストールとかできるBrewfile。
この2つを使って環境構築をある程度自動化。


今の時点でははこんな感じになりました。
必要なモノが増えたら適宜増やしていこうかと。

# HomeBrewを最新版にアップデート
update
# Fomulaを更新
upgrade
# リポジトリーの追加
tap phinze/homebrew-cask
# パッケージのインストール
install git
install ricty
install brew-cask
# アプリケーションのインストール
cask install android-studio
cask install bettertouchtool
cask install caffeine
cask install clipmenu
cask install dropbox
cask install evernote
cask install filezilla
cask install genymotion
cask install google-chrome
cask installl google-japanese-ime
cask install iterm2
cask install keepassx
cask install keyremap4macbook
cask install pckeyboardhack
cask install skitch
cask install skype
cask install sophos-anti-virus-home-edition
cask install startninja
cask install sublime-text
cask install virtualbox
cask install xtrafinder
cask install yorufukurou
# 不要なファイル削除
cleanup
cask cleanup

まだ一回も使ってないのでちゃんと動くのかはわかりません(´・ω・`)

neobundleをgithubで管理するときにハマったこと

最初に自分が作った環境をgithubにあげて、別の環境で下記コマンド実行

$ git clone https://github.com/futabooo/dotfiles.git --recursive
Initialized empty Git repository in /home/futabooo/dotfiles/.git/
remote: Counting objects: 22, done.
remote: Compressing objects: 100% (15/15), done.
remote: Total 22 (delta 7), reused 19 (delta 4)
Unpacking objects: 100% (22/22), done.
Submodule '.vim/bundle/neobundle.vim' (https://github.com/Shougo/neobundle.vim.git) registered for path '.vim/bundle/neobundle.vim'
Initialized empty Git repository in /home/futabooo/dotfiles/.vim/bundle/neobundle.vim/.git/

ここでずーと先に進まない。
原因は.gitmodule内のURLの書き方でした。

修正前

[submodule ".vim/bundle/neobundle.vim"]
     path = .vim/bundle/neobundle.vim
     url = http://github.com/Shougo/neobundle.vim.git

urlをhttpsに変更するだけで解決

[submodule ".vim/bundle/neobundle.vim"]
     path = .vim/bundle/neobundle.vim
     url = https://github.com/Shougo/neobundle.vim.git


参考
git clone コマンドが何故か進まない。 - よしだのブログ