まめしみ

やったことを淡々と書く

jQueryMobile(1.0b2)のスタイルを無効化する


 

jQueryMobileスタイルを適用したくなかったのでドキュメントを参考にやってみた。

 

//////////////////////////////////////////////////////////////////////////////////////////////////
追記
1.0rc2でkeepNative復活しました!
jQueryMobile(1.0rc2)でkeepNativeが復活
//////////////////////////////////////////////////////////////////////////////////////////////////

 

ドキュメントより抜粋。

 

Preventing auto-initialization of form elements

If you’d prefer that a particular form control be left untouched by jQuery Mobile, simply give that element the attribute data-role=”none”. For example:

 

If you’d prefer that a particular form control be left untouched by jQuery Mobile, simply give that element the attribute data-role=”none”. For example:

<label for="foo">
<select name="foo" id="foo"  data-role="none">
	<option value="a" >A</option>
	<option value="b" >B</option>
	<option value="c" >C</option>
</select>

Or, if you’d like to prevent auto-initialization without adding attributes to your markup, you can customize the selector that is used for preventing auto-initialization by setting the page plugin’s keepNative option (which defaults to [data-role="none"]. Be sure to configure this option inside an event handler bound to the mobileinit event, so that it applies to the first page as well as subsequent pages that are loaded.

$(document).bind('mobileinit',function(){
	$.mobile.page.prototype.options.keepNative = "select, input.foo, textarea.bar";
});

 

それぞれにdata-role=”none”を指定するか、keepNativeで除外するセレクタを設定できると書いてある。

が、、、、
data-role=”none”の指定は効いたがkeepNativeでのセレクタ設定ではダメだった。
ソースをみてみるとkeepNativeの扱いが1.0b2から大きく変更されてた。

 

1.0b1 (一部抜粋)

this.keepNative = ":jqmData(role='none'), :jqmData(role='nojs')" + (o.keepNative ? ", " + o.keepNative : "");

var allControls = this.element.find("input, textarea, select, button"),
    nonNativeControls = allControls.not(this.keepNative);

 

keepNativeに設定したセレクタを除外するようになっている。

 

1.0b2 (一部抜粋)

this.keepNative = ":jqmData(role='none'), :jqmData(role='nojs')";

$( $.mobile.slider.prototype.options.initSelector, e.target )
		.not( ":jqmData(role='none'), :jqmData(role='nojs')" )
		.slider();

 

keepNativeは除外セレクタとして使われていない。
その代わりにinitSelectorで初期化するセレクタを設定できそう。
今までのkeepNativeでは一括設定でしたが、それぞれのタイプごとに設定できるようになってるっぽい!
※上の例では「slider」

 

//////////////////////////////////////////////////////////////////////////////////////////////////
追記
1.0rc2でkeepNative復活しました!
jQueryMobile(1.0rc2)でkeepNativeが復活
//////////////////////////////////////////////////////////////////////////////////////////////////

 

今回はdata-role=”none”で対応したので試していませんが、initSelectorについてChange log に書いてありました。

Change logより抜粋

Exposed automatic initialization selectors on most widgets – The new option, initSelector is accessed through each of the widget plugins (select, slider, etc.) that expose options through the widget factory. This is used to define the selectors (element types, data roles, etc.) that should be used as the trigger to automatic initialization of each widget plugin. This allows developers to apply auto-initialization in more flexible ways.

コミットログはこちら

mavenでAndroidプロジェクト作成


mavenでandroidプロジェクトを作成する方法。

archetypeがgithub公開されています。(感謝!)
3種類あるので詳しくは「akquinet/android-archetypes

 

サンプル

プロジェクト作成

mvn archetype:generate \
-DarchetypeArtifactId=android-quickstart \
-DarchetypeGroupId=de.akquinet.android.archetypes \
-DarchetypeVersion=1.0.5 \
-DgroupId=your.company \
-DartifactId=my-android-application

 

シミュレーターにデプロイ


mvn install android:deploy

さくらVPS弄り ~その6~ PHPインストール


続いてPHPをインストールします。

ソースからコンパイルしてインストールします。

 

PHPインストール

1.PHPのダウンロード & 展開

cd ~/parts
wget http://www.php.net/get/php-5.3.6.tar.gz/from/jp.php.net/mirror
tar zxvf php-5.3.6.tar.gz
cd php-5.3.6

wgetコマンドを使用してダウンロードします。

※URLは設定時点で最新のものです。PHP公式サイトで最新のダウンロードURLを確認してください。

ダウンロードしたファイルをtarコマンドで展開し出来たディレクトリに移動します。

 

 

2.PHP & ライブラリ インストール

//2~14行目までで1つのコマンドです。
./configure \
--enable-mbstring \
--enable-soap \
--enable-zend-multibyte \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-mysql=/usr/local/mysql \
--with-pdo-mysql=/usr/local/mysql \
--with-curl \
--with-gd \
--with-jpeg-dir=/usr/lib \
--with-png-dir=/usr/lib \
--with-zlib-dir=/usr/lib \
--with-mcrypt

オプションはご覧の通り。基本的にはmysql、GDを設定。

エラーでました。。。

エラー発生
configure: error: xml2-config not found. Please check your libxml2 installation.
ライブラリ追加
yum install libxml2-devel

エラー発生
configure: error: Please reinstall the libcurl distribution
ライブラリ追加
yum install curl-devel

エラー発生
configure: error: libjpeg.(a|so) not found.
ライブラリ追加
yum install libjpeg-devel

エラー発生
configure: error: libpng.(a|so) not found.
ライブラリ追加
yum install libpng-devel

エラー発生
configure: error: mcrypt.h not found. Please reinstall libmcrypt.
ライブラリ追加
yum install libmcrypt
yum install libmcrypt-devel

ライブラリがいくつか足りていないので追加。

make
sudo make install

インストールします。

 

 

3.設定

sudo cp ~/parts/php-5.3.6/php.ini-development /usr/local/lib/php.ini
sudo vi /usr/local/lib/php.ini

=============================
[Date]
date.timezone ='Asia/Tokyo'

[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = UTF-8
mbstring.encoding_translation = Off
mbstring.detect_order = auto
mbstring.substitute_character = none;
=============================

php.iniでタイムゾーンと言語の設定をします。

sudo vi /usr/local/apache2/conf/httpd.conf

=============================
AddType application/x-httpd-php .php
=============================

拡張子(.php)をコンテントタイプ(application/x-httpd-php)にマップ。
 

 

4.apache再起動

sudo service apache restart

 

インストール完了。

さくらVPS弄り ~その5~ MySQLインストール


ブログ(WordPress)立ち上げに向けてMySQLをインストールします。

ソースからコンパイルしてインストールします。

 

MySQLインストール

1.MySQLのダウンロード & 展開

cd ~/parts
wget http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-5.0.92.tar.gz/from/http://ftp.iij.ad.jp/pub/db/mysql/
tar zxvf mysql-5.5.14.tar.gz
cd mysql-5.5.14

wgetコマンドを使用してダウンロードします。

※URLは設定時点で最新のものです。MySQL公式サイトで最新のダウンロードURLを確認してください。

ダウンロードしたファイルをtarコマンドで展開し出来たディレクトリに移動します。

 

 

2.必要なライブラリをインストール

yum list ncurses-devel
sudo yum install ncurses-devel

yum list コマンドでncurses-develがインストールされているか確認し、なければインストールします。

 

 

3.MySQLインストール

//2~6行目までで1つのコマンドです。
./configure \
--with-extra-charsets=all \
--with-mysqld-user=mysql \
--with-innodb \
--prefix=/usr/local/mysql

make
sudo make install

インストール先は「/usr/local/mysql」として、その他オプションはご覧の通り。

コンパイルしてインストール!!

 

4.DB初期化 & 設定

sudo groupadd mysqlsudo
useradd -g mysql mysql

sudo /usr/local/mysql/bin/mysql_install_db --user=mysql
sudo chown -R mysql:mysql /usr/local/mysql
sudo cp ~/parts/mysql-5.0.92/support-files/my-medium.cnf /etc/my.cnf
sudo vi /etc/my.cnf
=============================
[client]
default-character-set   = utf8

[mysqld]
default-character-set=utf8
character-set-server=utf8
=============================

mysqlのユーザーとグループを作成します。

mysql_install_dbでDBの初期化を行います。

※rootでやるとエラーになるので「–user=mysql」オプションを指定。

所有者をmysqlに変更しておきます。

先ほど展開したファイルに設定ファイルの雛形があるのでコピーし、文字コードの設定をutf8に変更。

 

 

5.自動起動設定

sudo cp ~/parts/mysql-5.0.92/support-files/mysql.server /etc/init.d/mysql
sudo chmod +x /etc/init.d/mysql
sudo chkconfig --add mysql
#確認
chkconfig --list mysql

起動用のプログラムも雛形があるのでコピーしましょう。

実行権限をつけて、chkconfig に登録!

 

 

6.起動

sudo service mysql start

起動!!

 

どうでしょうか?以上でインストール完了です。

さくらVPS弄り ~その4~ apacheインストール


ブログ(WordPress)立ち上げに向けてWebサーバソフトウェアをインストールします。

フリーソフトウェアとして無償で公開されているapacheを使用します。

ソースからコンパイルしてインストールします。


apacheインストール

 

1.作業ディレクトリ作成

mkdir ~/parts
cd ~/parts

ホームディレクトリ直下にpartsディレクトリを作ります。

作成したpartsディレクトリに移動し、ここで以下の作業を行うことにします。

 

 

2.apacheのダウンロード & 展開

wget http://www.meisei-u.ac.jp/mirror/apache/dist//httpd/httpd-2.2.19.tar.gz
tar zxvf httpd-2.2.19.tar.gz
cd httpd-2.2.19

wgetコマンドを使用してapacheをダウンロードします。

※URLは設定時点で最新のものです。apache公式サイトで最新のダウンロードURLを確認してください。

ダウンロードしたファイルをtarコマンドで展開し出来たディレクトリに移動します。

 

 

3.必要なライブラリをインストール

yum list openssl-devel
sudo yum install openssl-devel

configureオプションに「–enable-ssl」をつける予定なので必須となるライブラリを追加します。

yum list コマンドでopenssl-develfがインストールされているか確認しています。

「installed」で表示されたらインストール済みです。なければインストールしましょう。

 

 

4.apacheインストール

//2~7行目までで1つのコマンドです。
./configure \
--prefix=/usr/local/apache2 \
--enable-ssl \
--enable-rewrite \
--enable-proxy \
--enable-proxy-ajp \
--enable-so \
--enable-shared

make
sudo make install

インストール先は「/usr/local/apache2」として、その他オプションはご覧の通り。

コンパイルしてインストール!!

 

 

5.apacheの自動起動設定

sudo vi /etc/init.d/apache
=============================
#!/bin/sh
#
# chkconfig: 35 85 15
# description: apache 2.2.19

apachectl="/usr/local/apache2/bin/apachectl"

case "$1" in
start|stop|restart|fullstatus| \
status|graceful|graceful-stop| \
configtest|startssl)
$apachectl $@
;;
*)
;;
esac
=============================
sudo chmod 775 /etc/init.d/apache
sudo chkconfig --add apache

シェルを作成して実行権限を付与します。

chkconfig に登録します!

以下のサイトを参考にさせていただきました。
kazmax.zpp.jp Linuxで自宅サーバー

 

 

6.apacheユーザー作成

sudo groupadd apache
sudo useradd -d /var/empty/apache -s /sbin/nologin apache

apacheグループを作ります。

ユーザーapacheをapacheグループで作成。

 

 

7.httpd.confの設定

sudo vi /usr/local/apache2/conf/httpd.conf
//以下の箇所を変更
=============================
ServerName yymomomomoyy.com
User apache
Group apache
=============================

httpd.confを編集します。

ServerNameを自分のドメインにします。

User、Groupの設定をapacheに変更します。

これでapacheユーザーでhttpdプロセスが起動されます。

 

 

8.apache起動

sudo service apache start

「5.apacheの自動起動設定」でchkconfigに登録したのでserviceコマンドから起動できます。

ブラウザからアクセスして確認してみましょう!問題なければ「It works!」と表示されます。

※これはデフォルトのドキュメントルートにある「/usr/local/apache2/htdocs/index.html」です。

 

 

 

とりあえず起動までの手順はこれで終わります。

 

さくらVPS弄り ~その3~ Tera Term (マクロ) 設定


sshの設定も一通り終わったので今回はクライアント側の設定の話です。

Tera Termのマクロを組んでショートカット一発で接続できるようにしましょう。

※windowsでの話です。Macの場合iTermでsshコマンドをブックマークすればいい感じ!

 

Tera Term  (マクロ) 設定

 

1.Tera Term インストール

ダウンロードしてインストールします。
インストーラに従えば問題ないと思います。

 

 

2.まずは普通に接続してみる

ホストの箇所はVPSのIPかドメインを指定します。

TCPポートは「さくらVPS弄り ~その2~ sshのポート変更」で設定したポート番号を指定します。

 

さくらVPS弄り ~その1~ ユーザー作成からssh設定」で作成したユーザー名とパスフレーズ、そして秘密鍵の場所を指定します。

※パスフレーズはpasswdで指定したものではなく秘密鍵の生成時に指定したパスフレーズです。

 

以上が通常の接続です。

これを毎回入力するのも面倒なのでTera Termのマクロ機能を使って自動化しましょう。

 

 

3.マクロをつくる

テキストエディタ(メモ帳など)を起動して以下を貼り付けてください。


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;ユーザー名
username = 'myuser'

;;ホスト名
hostname = 'xxx.xxx.xxx.xxx:10022'

;;秘密鍵
private_key_file = 'C:\etc\ssh\id_rsa'

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

filesearch private_key_file
if result = 0 then
sprintf 'Private key not found!'
error_msg = inputstr
messagebox error_msg 'error'
exit
else
msg = 'Enter password for user '
strconcat msg username
passwordbox msg 'Get password'

sprintf '%s /ssh /2  /auth=publickey /user=%s /passwd=%s /keyfile="%s"' hostname username inputstr private_key_file
connect_syntax = inputstr

; コネクト
connect connect_syntax
endif

ユーザー名、ホスト名、秘密鍵は自分のものに書き換えて保存します。

拡張子は「.ttl」としてください。

私は「myuser@xxx.xxx.xxx.xxx.ttl」みたいな感じにしてます。

 

 

4.マクロを関連付ける

先ほど作ったttlファイルをTTPMACROに関連付けます。

※Tera Termのインストール時に関連付けのオプション選択していたら不要かもしれません。

  1. ttlファイルを右クリックして「プロパティ」を選択。
  2. 「全般」タブの「プログラム」にある「変更」を押します。
  3. 「参照」から「ttpmacro.exe」を探して選びます。何も変更してなければ「C:\Program Files\teraterm」にあると思います。

 

 

5.マクロから接続

いよいよマクロを起動して接続します。

ttlファイルをダブルクリックするとこんな感じに秘密鍵のパスフレーズを求められます。

パスフレーズを入力すると….

ログインできるはず!!

 

 

おまけ

パスフレーズ毎回入れるのも面倒という方はこちらのマクロをどうぞ。


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;ユーザー名
username = 'myuser'

;;ホスト名
hostname = 'xxx.xxx.xxx.xxx:10022'

;;秘密鍵
private_key_file = 'C:\etc\ssh\id_rsa'

;;パスフレーズ

password= 'password'

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

filesearch private_key_file
if result = 0 then
sprintf 'Private key not found!'
error_msg = inputstr
messagebox error_msg 'error'
exit
else

sprintf '%s /ssh /2  /auth=publickey /user=%s /passwd=%s /keyfile="%s"' hostname username password private_key_file
connect_syntax = inputstr

; コネクト
connect connect_syntax
endif

さくらVPS弄り ~その2~ sshのポート変更


前回sshの設定をしました。デフォルトでsshのポートは22番です。

このままだと不正攻撃の対象になりやすいのでポートを変更します。

 

sshのポート変更

1.ログイン

Tera Termなどで前回作成したユーザーでログインします。

 

 

2.sshのポート変更


sudo vi  /etc/ssh/sshd_config
//開いてるポートで好きなのを
=============================
Port 10022
=============================

sudo /etc/init.d/sshd restart

コメントになっているので外して好きなポート番号を設定します。

sshdを再起動します。

 

 

3.iptablesの設定

sudo vi /etc/sysconfig/iptables
=============================
*filter
:INPUT   ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT  ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]

-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# SSH
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 10022    -j ACCEPT

# HTTP
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80    -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8080  -j ACCEPT

# FTP1, FTP2
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 20    -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21    -j ACCEPT

# SMTP
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 25    -j ACCEPT

-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited

COMMIT
=============================

sudo service iptables start

詳しい説明はここでは省きますが必要なポートだけ許可して後は閉じてます。
21行目でsshのポート開放しています。

iptables 再起動。

さくらVPS弄り ~その1~ ユーザー作成からssh設定


いろいろ吟味しVPSは「さくらのVPS 512」にしました。お手ごろなお値段です。

OSはデフォルトのCentOSとします。

なんだかんだで登録してVPSを起動したらまずはSSHの設定です。

 

ユーザー作成からssh設定

1.ログイン

さくらさんの会員メニューにあるリモートコンソールかTera Termなどでrootでログインしてください。

rootの初期パスワードはメールで送られてきます。

※VPS登録時に設定したパスワードではありません。メールに気づかず少し嵌る…

 

 

2.ユーザー作成

groupadd devel
useradd -g devel -G wheel myuser
passwd myuser

devel グループを作成。

myuser に指定したいユーザー名を指定。

myuser はdevelとwheelグループに所属させます。wheelには後ほどsudoを許可します。

パスワード設定しておきましょう。

 

 

3.公開鍵を設定

su - myuser
ssh-keygen -b 1024 -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

#秘密鍵を開いてローカルに保存。
view ~/.ssh/id_rsa

exit

myuserの公開鍵を設定します。

suコマンドでmyuserに切り替えます。

ssh-keygenコマンドで秘密鍵と公開鍵のペアを生成。

公開鍵をauthorized_keysに登録。

id_rsaが秘密鍵です。このファイルは絶対に公開しないこと!

viewなどで開いて内容をコピーしてローカルマシンに保存する。

ローカルに保存したらサーバー上の秘密鍵は消しておきましょう。

authorized_keysの権限変えてrootに戻る。

 

 

4.sshd設定

vi /etc/ssh/sshd_config
//no にする
=============================
PasswordAuthentication no
ChallengeResponseAuthentication no
PermitRootLogin no
UsePAM no
=============================
service sshd restart

ファイル名が似たssh_configと間違えないように注意。これはクライアント側の設定ファイル。

パスワード認証を無効に。

チャレンジレスポンス認証を無効に。

ルートでのログインを無効に。

PAMを無効に。

sshdを再起動。

 

 

5.sudo設定

visudo
//コメントになっているので外す
=============================
%wheel  ALL=(ALL)       ALL
=============================

vi /home/myuser/.bash_profile
//追加
=============================
PATH=$PATH:$HOME/bin
PATH=$PATH:/sbin
PATH=$PATH:/usr/sbin
PATH=$PATH:/usr/local/sbin
=============================

visudoでsudoの設定ファイルを開きます。

コメントを外してwheelに権限を付与します。

sudo で使用するコマンドはsbinにあることが多いのでsbinにパスを通します。

 

 

これでmyuserでssh接続できます。

どうやって?ってのはsshクライアントで接続します。

私はwindowsであればTera Term使ってます。

 

続きは次回。

はじまりました


やったことを淡々と書いていきます!!

基本的にweb系の技術的な話です。

 

経緯…

いろいろ試そうと思いVPS契約。

やったことをメモしよう。

どうせならブログにするかってことではじまりました。

wordpressも使ってみたかったしね!

 

しばらくはこのブログの立ち上げまでの手順を淡々と書いてきます。

ここでやったことはなるべく書いていこうと思います。このサイト自体が成果物です。

セキュリティ的にどうなんだろ。

実験サーバだし見られてまずいのなにもないからいいかな?