CentOSとDockerとWordpress
タイトルの元ネタを全く思い出せません。
今日はsakuraVPS(CentOS6.5)上にDockerでWordpressが構築できたので備忘録です。
## 構成
NginXをプロキシサーバー、DockerにApacheとMysqlのせて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を設定してなくても良かった。なぞ。
開発中のアプリのSQLiteDBを取得する
よく忘れるし、書くのがめんどいのでスクリプトにして見ました。
gist6154e60df4009a142a19
効率化できたのかは謎。
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