ラベル 設定 の投稿を表示しています。 すべての投稿を表示
ラベル 設定 の投稿を表示しています。 すべての投稿を表示
2014/11/19

さくらのVPSにスタードメインで取得した独自ドメインを設定してみた

さくらののVPSにスタードメインで取得した独自ドメインの設定してみました。
個人でVPSを借りて遊ぶのには hosts ファイル書き換えで十分でしたが、
サイトを他の人にも見せることになったので
IP でアクセスしてもらうのもカッコがつかないなぁ、ということでドメインを取得しました。
安くて Twitter などでも評判が良く、Whois情報公開代行も無料で行ってくれるスタードメインにしました。

さくらのVPS

コントロールパネルにログイン

さくらのVPSコントロールパネルにログインし、左メニューにある「ネームサーバ登録」をクリックします。

「さくらインターネットの会員メニュー」ログインページに移動します。

「会員ID」「パスワード」を入力し、「ログイン(認証)」をクリックします。

新しいネームサーバの登録

ページの下の方に「新しいネームサーバの登録」があります。

設定する「ドメイン名」を入力し、「送信する」をクリックします。

ゾーンの追加が実施されるので、ゾーンの初期設定をするために「ドメインメニューへ」をクリックします。

ドメイン名の一覧が表示されるので、設定するドメインの「ゾーン編集」をクリックします。

簡単設定の項目の「サーバのIPアドレス」にVPSのIPアドレスを入力し、「送信する」をクリックします。

さくらインターネットのネームサーバ

設定したドメインの情報が表示されます。

先ほど入力したIPアドレスは、「Aレコード」に追加されています。
ネームサーバーの情報(タイプが NS のもの)は、
スタードメイン側に登録するのでページは閉じないでおきましょう。

スタードメイン

「さくらのネームサーバ」を利用するように設定したので、
スタードメイン側から「さくらのネームサーバ」を参照するように設定します。

スタードメインを運営している NetOwl の管理ページから
「スタードメイン管理」の「管理ドメイン一覧」を開いて「ドメイン管理ツール」をクリックします。

「ネームサーバの確認・変更」をクリックします。

ネームサーバにさくらのVPSのネームサーバーの情報を入力して保存します。

ドメイン設定完了

数時間くらいすれば名前解決されてドメインでアクセスすれば
さくらのVPS側にアクセスできるようになります。

DNS逆引きレコード変更

DNS逆引きは IP アドレスからドメイン名を取得することで、
DNS逆引きレコードが設定してあれば取得できる。
DNS逆引きレコードが設定してあると
どこの馬の骨かもわからないサーバではない(※自称)と宣言できるので
設定しておくといいかもね(※ただし必須ではない)というくらいのノリっぽいです。

以下を参考に設定しました。
DNS逆引きレコードを変更する|さくらのVPS|さくらインターネット公式サポートサイト

設定すると nslookup IP.ADD.RE.SS で設定したドメイン名が取得できます。

参考

さくらのVPSに独自ドメインを設定してみた - VPS比較 - Webkaru
2014/10/29

[SublimeText] Sublime Text 3 の検索で日本語をエンターすると文字が消えるのを防ぐ

Sublime Text で地味に困るのが検索窓に日本語を入力した時。
エンターを押した瞬間、入力した文字が消えるので全然検索ができない。
ずっと困ったまま放置していたんだけど
たまたま Twitter で解決方法が流れてきたのでメモ。

参考

Sublime Textの検索窓に日本語を入力する方法
Sublime Text 3 で日本語を検索したとき文字が消える不具合を直す - MEMOGRAPHIX

キーマップを変更してエンターで動作しないようにする

参考元ではコメントアウトされていましたが使えないのは面倒なので
ctrl + enter に全て置き換えました。
// Find panel key bindings
{ "keys": ["ctrl+enter"], "command": "find_next", "context":
    [{"key": "panel", "operand": "find"}, {"key": "panel_has_focus"}]
},
{ "keys": ["shift+enter"], "command": "find_prev", "context":
    [{"key": "panel", "operand": "find"}, {"key": "panel_has_focus"}]
},
{ "keys": ["alt+enter"], "command": "find_all", "args": {"close_panel": true},
     "context": [{"key": "panel", "operand": "find"}, {"key": "panel_has_focus"}]
},

// Replace panel key bindings
{ "keys": ["ctrl+enter"], "command": "find_next", "context":
    [{"key": "panel", "operand": "replace"}, {"key": "panel_has_focus"}]
},
{ "keys": ["shift+enter"], "command": "find_prev", "context":
    [{"key": "panel", "operand": "replace"}, {"key": "panel_has_focus"}]
},
{ "keys": ["alt+enter"], "command": "find_all", "args": {"close_panel": true},
    "context": [{"key": "panel", "operand": "replace"}, {"key": "panel_has_focus"}]
},
{ "keys": ["ctrl+alt+enter"], "command": "replace_all", "args": {"close_panel": true},
     "context": [{"key": "panel", "operand": "replace"}, {"key": "panel_has_focus"}]
},

// Incremental find panel key bindings
{ "keys": ["ctrl+enter"], "command": "hide_panel", "context":
    [{"key": "panel", "operand": "incremental_find"}, {"key": "panel_has_focus"}]
},
{ "keys": ["shift+enter"], "command": "find_prev", "context":
    [{"key": "panel", "operand": "incremental_find"}, {"key": "panel_has_focus"}]
},
{ "keys": ["alt+enter"], "command": "find_all", "args": {"close_panel": true},
    "context": [{"key": "panel", "operand": "incremental_find"}, {"key": "panel_has_focus"}]
},
2014/10/05

git diff で JSON を整形して比較する

Git でJSON を整形して比較できるらしいのでメモ。
JSON だけでなく Word や ODT、 Jpeg や PNG なども
実ファイルを比較時に変換させることができるみたいです。

参考
Git - Git Attributes
Git - gitattributes Documentation

設定

*.json diff=json
[diff "json"]
 textconv = "jq ."
2014/09/05

Mac で Command + M のウィンドウ最小化を無効化する

基本的にウィンドウの最小化って使わないです。
なのにCommand + mという
Command + nCommand + , のミスを
待ち構える配置になっているので微妙にストレスがたまります。
トグルだったらまだ良かったのですが最小化したっきり戻ってこないので
メニューバーのウィンドウから前面に表示させるしかありません。
そこが一番のストレスポイントですね。

ということでCommand + mを無効化したいと思います。

システム環境設定 > キーボード > キーボードショートカット

アプリケーションの「+」ボタンを押すと以下のような表示が出ます。
ここで全アプリケーションに対して
メニュータイトル「しまう」、「最小化」、「Minimize」のキーボードショートカットを設定しましょう。

とりあえずCommand + Ctrl + mに変更しました。


アプリケーションを開き直すと適用されるとか、開き直さなくても適用されるとか。
これで操作ミスでウィンドウが最小化されることもなくなるかと思います。

参考
How to Create a Keyboard Shortcut for Menu Items Everywhere - Tuts+ Computer Skills Tutorial
2014/09/04

Mac でウィンドウを切り替えるキーボードショートカット

Mac で作業しているとアプリケーションもそのウィンドウもどんどん開いてしまいます。
アプリケーションなら Command + Tab で切り替えできるので良いのですが
ウィンドウの切り替えに困っていました。
これが長らくの課題でしたが、参考サイトのおかげで
キーボードショートカットの「次のウィンドウを操作対象にする」を設定すると
ウィンドウの切り替えできました。

システム環境設定 > キーボード > キーボードショートカット

キーボードと文字入力の「次のウィンドウを操作対象にする」の
キーボードショートカットを好きなものに変えましょう。
僕は Command + Option + Tab に変えました。


FInder とかついつい開きすぎて切り替えが面倒だったのでコレで便利になります!やったぁ!

参考サイト

橋本商会 » Macの「次のウィンドウを操作対象にする」をなぜ設定しないのか
2014/08/10

SublimeText3で行頭・行末に移動するキーボードショートカット

Sublime Text 3 に移行したのですが、Sublime Text 2 でできていた
Command + で行頭に移動、
Command + で行末に移動ができなくなっていました。
調べてみると Sublime Text 2 でも以下のページのように設定が必要だったみたいです。
Bruno "Clef" : Sublime Text 2 - End and Begin of Line in Mac OS
設定して記事を書いていなかったから設定したことすら忘れていました。
ということで覚え書きです。

Sublime Text 3 では上記のページの記述とは少し異なっていて以下のように記述します。
[
    { "keys": ["super+right"], "command": "move_to", "args": { "to": "hardeol" } },
    { "keys": ["super+left"], "command": "move_to", "args": { "to": "hardbol" } }
]
moveto が move_to になったみたいです。
以上です。
2014/07/17

Redmine の通知メールを Gmail で送信する設定

さくらのVPSのお試し期間が終わったので
さくらのVPSのCentOS6でRedmineを動かす | DevAchieve
動かした Redmine の通知メールを設定しました。

環境

OS
CentOS6.5
Redmine
2.5.1

設定

production:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      enable_starttls_auto: true
      address: "smtp.gmail.com"
      port: 587
      domain: "smtp.gmail.com"
      authentication: :plain
      user_name: "mail_for_redmine@gmail.com"
      password: "gmail_password"

  rmagick_font_path: /usr/share/fonts/ipa-pgothic/ipagp.ttf
参考
メールの設定 — Redmine Guide 日本語訳
参考サイトでは設定にtls: trueが記述されていたけど記述するとメールが送信されなくなりました。

動作は管理者アカウントで[管理 > 設定 > 通知メール]の右下の「テストメールを送信」で確認できます。


注意点

通知メールアドレスに普段使っているアカウントを使用すると
変なところからアクセスしようとしたという判定でメールが送信できませんでした。

Redmine の通知専用の Gmail アカウントを作成するのが良いと思います。

2014/07/16

さくらのVPSのCentOS6でRedmineを動かす

規模が大きくて長期のイベントとかあると
やっぱり課題管理システムとして Redmine とか欲しいなって思います。
開発者じゃなくても使えそうで
自分が使ったことがあるというところで
Redmine を使うことにしました。

参考
[Linux]さくらVPSのCentOSにRedmineをインストール - daybreaksnow's diary
Redmine 2.5をCentOS 6.5にインストールする手順 | Redmine.JP Blog

CentOS の設定

SELinux の無効化

さくらのVPSでは SELinux はデフォルトで無効化されています。
無効化されていない場合は以下のように無効化します。
sudo vim /etc/sysconfig/selinux
-SELINUX=enforcing
+SELINUX=disabled
再起動して設定を反映
sudo reboot
無効化されていることの確認
getenforce
# Disabled

必要なパッケージのインストール

Redmine を使用するにあたって必要なパッケージをインストールします。

EPELリポジトリの登録

Ruby のビルドに必要な libyaml を yum でインストールできるようにするために
EPEL(Extra Packages for Enterprise Linux)リポジトリを追加します。
http://dl.fedoraproject.org/pub/epel/6/x86_64/repoview/epel-release.html
上記のページで Packages の最新のURLをコピー、以下のコマンドのように実行します。
rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# パッケージ epel-release-6-8.noarch は既にインストールされています。
さくらのVPSではインストール済みでした。

開発ツール(Cコンパイラ等)のインストール

sudp yum groupinstall "Development Tools"
# No packages in any requested group available to install or update

Ruby と Passenger のビルドに必要なヘッダファイルなどのインストール

sudo yum -y install openssl-devel readline-devel zlib-devel curl-devel libyaml-devel

MySQL とヘッダファイルのインストール

sudo yum -y install mysql-server mysql-devel

Apache とヘッダファイルのインストール

sudo yum -y install httpd httpd-devel

ImageMagick とヘッダファイル・日本語フォントのインストール

sudo yum -y install ImageMagick ImageMagick-devel ipa-pgothic-fonts
ImageMagickと日本語フォントはガントチャートをPNG形式の画像にエクスポートする機能、添付ファイルのサムネイル画像を作成するのに使われます。これらのインストールを行わなくてもRedmineの実行は可能です。

Ruby のインストール

ソースコードのダウンロード

Ruby のオフィシャルサイトのダウンロードページから
Ruby2.0 の最新のソースコードをダウンロードしてください。
http://www.ruby-lang.org/ja/downloads/
curl -O http://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p481.tar.gz
Redmine 2.5 は 2014 年 2 月にリリースされた Ruby 2.1 には対応していません。
必ず Ruby 2.0 をインストールしてください。

Ruby のビルド

ダウンロードした Ruby の tarball を展開し、Ruby のビルドとインストールを行ってください。
tar zxvf ruby-2.0.0-p481.tar.gz
cd ruby-2.0.0-p481
sudo ./configure --disable-install-doc
sudo make
sudo make install
cd ..
--disable-install-doc を指定すると Ruby のドキュメントのインストールを省略でき、作業時間を短縮できます。
ruby -v
ruby 2.0.0p481 (2014-05-08 revision 45883) [x86_64-linux]

Bundler のインストール

Redmine が使用する Gem を一括インストールするための Bundler というツールをインストールします。
sudo su -
gem install bundler --no-rdoc --no-ri
exit
以下のページの事象が発生して悲しくなります。
参考: とっとこ駆け出しエンジニアぶろぐ: Cent OS 6系でsudo時に環境変数PATHが引き継がれない

MySQL の設定

デフォルトキャラクタセットを utf8 に設定

sudo vim /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

character-set-server=utf8

# 任意設定
innodb_file_per_table
query-cache-size=16M

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[mysql]
default-character-set=utf8

MySQL の起動および自動起動の設定

sudo service mysqld start
sudo chkconfig mysqld on

/etc/my.cnf への設定が反映されていることの確認

mysql -u root
mysql> show variables like 'character_set%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
mysql> exit

MySQL のセキュリティ初期設定

  • root ユーザーのパスワード変更
  • 匿名ユーザー削除
  • リモートからの root ログインの禁止
  • test データベースの削除
  • 設定の反映
mysql_secure_installation
...
Enter current password for root (enter for none): [Enter]
...
Set root password? [Y/n] y
New password: [MySQL Password]
Re-enter new password: [MySQL Password]
...
Remove anonymous users? [Y/n]: y
...
Disallow root login remotely? [Y/n]: y
…
Remove test database and access to it? [Y/n]: y
...
Reload privilege tables now? [Y/n]: y

Redmine 用データベースとユーザーの作成

mysql -uroot -p
mysql> create database redmine default character set utf8;
mysql> grant all on redmine.* to redmine@localhost identified by '********';
# ******** は redmine ユーザのパスワード。 Redmine の設定で使います。
mysql> flush privileges;
mysql> exit;

Redmine のインストール

Redmine のダウンロード

下記のページから Redmine 2.5 の tarball(.tar.gz) をダウンロードしてください。
http://www.redmine.org/projects/redmine/wiki/Download
curl -O http://www.redmine.org/releases/redmine-2.5.1.tar.gz

Redmine の展開と配置

tar xvf redmine-2.5.1.tar.gz
sudo mv redmine-2.5.1 /var/lib/redmine

データベースへの接続設定

sudo vim /var/lib/redmine/config/database.yml
production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  password: ******** # MySQL の redmine ユーザのパスワード
  encoding: utf8

設定ファイル config/configuration.yml の作成

sudo vim /var/lib/redmine/config/configuration.yml
production:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      address: "localhost"
      port: 25
      domain: 'example.com'

  rmagick_font_path: /usr/share/fonts/ipa-pgothic/ipagp.ttf
詳しい設定方法については configuration.ymlの設定項目 — Redmine.JP を参照。
通知メールを Gmail から送信する設定について書きました。↓
Redmine の通知メールを Gmail で送信する設定 | DevAchieve

Gem パッケージのインストール

sudo su -
cd /var/lib/redmine
bundle install --without development test

Redmine の初期設定とデータベースのテーブル作成

bundle exec rake generate_secret_token
RAILS_ENV=production bundle exec rake db:migrate

Passenger のインストール

Apache 上で Redmine などの Rails アプリケーションの実行に必要な Passenger をインストールします。
gem install passenger --no-rdoc --no-ri

Passenger の Apache 用モジュールのインストール

passenger-install-apache2-module
インストール後に Apache の設定ファイルに記述すべき内容が表示されます。
また、以下のコマンドで確認することができます。
passenger-install-apache2-module --snippet
LoadModule passenger_module /usr/local/lib/ruby/gems/2.0.0/gems/passenger-4.0.45/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /usr/local/lib/ruby/gems/2.0.0/gems/passenger-4.0.45
  PassengerDefaultRuby /usr/local/bin/ruby
</IfModule>
上記は環境によって異なるので上のコマンドの実行結果を使用して下さい。
exit

Apache の設定

Passenger の設定を追加

sudo vim /etc/httpd/conf.d/passenger.conf
# Passengerの基本設定
    # passenger-install-apache2-module --snippet を実行して表示される設定を使用
    LoadModule passenger_module /usr/local/lib/ruby/gems/2.0.0/gems/passenger-4.0.45/buildout/apache2/mod_passenger.so
    
      PassengerRoot /usr/local/lib/ruby/gems/2.0.0/gems/passenger-4.0.45
      PassengerDefaultRuby /usr/local/bin/ruby
    

    # Passengerが追加するHTTPヘッダを削除するための設定(任意)
    Header always unset "X-Powered-By"
    Header always unset "X-Rack-Cache"
    Header always unset "X-Content-Digest"
    Header always unset "X-Runtime"

    # Passenger のチューニング
    # Phusion Passenger users guide
    # http://www.modrails.com/documentation/Users%20guide%20Apache.html
    PassengerMaxPoolSize 20
    PassengerMaxInstancesPerApp 4
    PassengerPoolIdleTime 3600
    PassengerHighPerformance on
    PassengerStatThrottleRate 10
    PassengerSpawnMethod smart
    RailsAppSpawnerIdleTime 86400
    PassengerMaxPreloaderIdleTime 0

    # シンボリックリンクを有効にする
    PassengerResolveSymlinksInDocumentRoot on
参考: [Redmine Rails] Passenger がシンボリックリンクを解決してくれない | Javable.Jp
Apache の再起動
sudo service httpd restart

Apache 上の Passenger で Redmine を実行するための設定

sudo chown -R apache:apache /var/lib/redmine

Redmine を VirtualHost で動かすための設定

sudo vim /etc/httpd/conf/httpd.conf
-#NameVirtualHost *:80
+NameVirtualHost *:80
sudo mkdir -p /var/www/vhosts/redmine.wada811.at/
sudo ln -s /var/lib/redmine/public/ /var/www/vhosts/redmine.wada811.at
sudo vim /etc/httpd/conf.d/redmine.wada811.at.conf
<VirtualHost *:80>
  ServerName redmine.wada811.at
  DocumentRoot /var/www/vhosts/redmine.wada811.at
  <Directory "/var/www/vhosts/redmine.wada811.at">
    Options -Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>
  ErrorLog /var/log/httpd/redmine.wada811.at-error_log
  CustomLog /var/log/httpd/redmine.wada811.at-access_log combined
</VirtualHost>
sudo /etc/init.d/httpd graceful
sudo service httpd restart
ドメインを取っていないので Hosts ファイルに追加
sudo sh -c "echo 'IP.ADD.RE.SS  redmine.wada811.at' >> /etc/hosts"

参考
Apache のバーチャルホストで Redmine を動作させる 〜 CentOS6 | EasyRamble

Redmine が動きました!

というわけでここまでです。
あとは Redmine のユーザ作成などの初期設定です。
Redmineを使い始めるための初期設定 — Redmine.JP
2014/07/15

CentOS6.5でやっておくと良さそうな設定

前提条件

cat /etc/redhat-release
CentOS release 6.5 (Final)
arch
x86_64
参考: CentOSのバージョン確認コマンドとアーキテクチャ確認コマンド | mawatari.jp

Kernel Panic 時の自動再起動設定

sudo vi /etc/sysctl.conf
# When kernel panic's, reboot after 10 second delay
-kernel.panic = 0
+kernel.panic = 10
設定の反映
sudo sysctl -p
設定の確認
cat /proc/sys/kernel/panic

日本語化

sudo vim /etc/sysconfig/i18n
-LANG="C"
+LANG="ja_JP.UTF-8"
sudo reboot

IPv6の無効化

適当に IPv6 を無効にすると SELinux でエラーになるらしい。
モジュールは読みこむようにして設定で無効化するとエラーにならないとか。
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
参考
How do I disable IPv6? - FAQ/CentOS6 - CentOS Wiki
CentOS6でIPv6を無効化する - shinayoshiの日記
確認
sudo vi /etc/sysctl.conf
# 以下の記述があれば無効化されているはず
net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1
sudo /sbin/sysctl -p
# なんかエラーが出るのでコメントアウトする(要出典)
ifconfig
# inet6 の記述がなければ IPv6 が無効化されている
netstat -an -A inet6
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State 
lsmod | grep ipv6
ipv6                  318183  0 
確認方法もいっぱいある。

不正アクセス監視 denyhosts の導入

logwatch の設定


参考

さくらVPS/Cent OS 6.4 ipv6の停止/日本語化/denyhosts導入[Railsサーバへの道] - 酒と泪とRubyとRailsと
CentOS6でIPv6を無効化する - shinayoshiの日記

さくらのVPS初期設定[SSH接続設定/ユーザ追加/公開鍵認証/iptables]

2014年も半年が過ぎ、今年の目標のイテレーションを回そうと思ったら
思いのほか何もやっていない感があったので
何かやらねば、と思い、タスク管理がしたかったので Redmine を動かすために
去る7月1日にさくらのVPSを借りてみました。

さくらのVPSを借りる

HDD プランのメモリ 1G のやつを借りました。
月額約1000円、年間1万円ちょっとで自由に使えるサーバがあるなんて最高な気分です。
どうせなので2週間無料お試しで借りました。
スペックは 料金・サービス仕様 | VPS(仮想専用サーバ)は「さくらのVPS」
OS は CentOS6 x86_64 の標準 OS です。
アカウント登録とクレカ登録などを済ませてちょっとしたら「お申込受付完了のお知らせ」、
その10分後くらいに「[さくらのVPS] 仮登録完了のお知らせ」のメールが届きました。

たしか仮登録完了のお知らせが来るまで何もできないです。

用語定義

USER
サーバの作業ユーザ名
IP.ADD.RE.SS
サーバの IP アドレス
PORT
変更した SSH のポート番号
%
Mac でのコマンド
$
サーバのコマンド
#
コメント

VPS を起動する

さくらインターネットVPSコントロールパネルで仮想サーバ操作の起動ボタンを押します。
Updating RPMS on system: で結構待たされるのでエラーかと思いますが、ひたすら待ちます。
参考: さくらのVPSの初回起動時に応答が無くなるように見えるけど、気長に待つ | ただのにっき。

ここから先は さくらのVPSで最初にやっておくこと - 飲んだり寝たり を参考にした。

VPS に接続する

Mac の Terminal からいつものように SSH 接続。IP アドレスとパスワードは仮登録のメールにある。
ssh root@IP.ADD.RE.SS

root パスワードの変更

passwd
# パスワード入力
セキュリティ対策。

SSH のポートを変更する

# 設定ファイルのバックアップ
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.org
vi /etc/ssh/sshd_config
-Port 22
+Port PORT
セキュリティ対策:サーバの 22 番ポートを調べて脆弱性がないか確認するポートスキャンという手法対策。
10022 に変える記述が多いけど 10022 に変えるのがデファクトスタンダードになったら
10022 にもポートスキャンしてくるんじゃないかなーと思ったり。
49513 〜 65535 が自由に使えるダイナミックポート/プライベートポートと呼ばれるポートらしいので
僕はその間のポートにしました。
参考: ポート番号は何番を使えばいいのか教えて下さい - ポート開放ナビ
SSH 接続設定の再読み込み
/etc/rc.d/init.d/sshd reload
Command + T で Terminal のタブを増やして動作確認(元のタブは万が一のために閉じない)
ssh -p PORT root@IP.ADD.RE.SS
# 変更したパスワードを入力

作業用ユーザの追加と設定

作業用ユーザの追加

useradd USER
passwd USER
# パスワード入力
USER: ユーザ名
以降、root ユーザでは接続せず、作業用ユーザで接続する。
必要のある場合のみ sudo su - で root になる。

root ユーザでのログイン禁止

sudo vi /etc/ssh/sshd_config
#PermitRootLogin yes 
PermitRootLogin no

sudo の設定

sudo が使える wheel グループに追加する
usermod -G wheel USER
参考
「wheelグループ」とは:ITpro
[Linux] なぜ sudo する権限のあるグループが「 wheel 」という名前なのか « Codaholic
wheel が sudo を使えるようにする
visudo
## Allows people in group wheel to run all commands
-# %wheel  ALL=(ALL)       ALL
+%wheel  ALL=(ALL)       ALL

SSH 接続方式を公開鍵認証方式に変更

Mac でキーペア(秘密鍵, 公開鍵)の生成

ssh-keygen -t rsa
ssh-add ~/.ssh/id_rsa

公開鍵をサーバーに転送

scp -P PORT ~/.ssh/id_rsa.pub USER@IP.ADD.RE.SS:~/

公開鍵を登録する

ssh -p PORT USER@IP.ADD.RE.SS
mkdir ~/.ssh
chmod 700 ~/.ssh
mv id_rsa.pub ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

パスワード認証の無効化

sudo vi /etc/ssh/sshd_config
-PasswordAuthentication yes 
+PasswordAuthentication no
sudo service sshd restart
# 問題がなければ [OK] と表示される

接続の確認

ssh -p PORT USER@IP.ADD.RE.SS
# ログイン出来る(パスワードが聞かれない)
ssh -p PORT root@IP.ADD.RE.SS
ログイン出来ない

SSH 接続の簡略化

vi ~/.ssh/config
HOST ALIAS
    HostName IP.ADD.RE.SS
    Port PORT
    User USER
    identityfile ~/.ssh/id_rsa
ssh ALIAS
エイリアスで SSH 接続できるので便利です。
参考: .ssh/configで設定すると接続が楽になる方法 - Qiita

iptables (Firewall)の設定

参考
俺史上最強のiptablesをさらす - Qiita
さくらVPS/Cent OS 6.4 iptableの設定[Railsサーバへの道][セキュリティ] - 酒と泪とRubyとRailsと
iptablesでパケットフィルタリングするための設定 - 飲んだり寝たり
sudo mkdir /root/bin/
sudo vim /root/bin/iptables.sh
wada811/iptables.sh
sudo sh /root/bin/iptables.sh
sudo iptables -L
sudo chkconfig iptables on
# OS起動時にiptablesを起動するようにする
chkconfig --list iptables
iptables        0:off   1:off   2:on    3:on    4:on    5:on    6:off
# 3:on になっていれば OK

設定完了

とりあえず必須な初期設定はこれで完了だと思います。
必ずコレはやっておけみたいなのとか、間違ってるとか、もっとこうした方が良いとかあればコメント下さい。
2014/05/22

Android Studio のエディタのタブを切り替えるショートカットキー

Android Studio カスタマイズシリーズ第二弾。
Android Studio のエディタのタブを次のタブ、前のタブに切り替える
ショートカットキーを Sublime Text 2 と一致させたいと思います。

[Preference > Keymap] を開いて Tab で検索。

Select Next Tab: command + shift + ]
Select Previous Tab: command + shift + [

上記のように設定されているが、実際の動きはそうなっていません。

なぜなのか

Keymap shows characters for keys only for english keyboard layout correctly : IDEA-63779
Android Studio のベースである IntelliJ IDEA のバグで Keymap が
US キーボードの配置に依存しているようで
JP キーボードでは記号系の紐付きがおかしくなっているからのようです。
エディタでの入力はタイプしたものが見たままそのまま表示されますが、
Keymap のショートカットキー登録の部分だけが入力したものと異なるキーが表示されます。

[ を入力したら ] と、] を入力したら \ と表示されます。

どうすればいいのか

見た目上は異なるキーですが、結局入力したキーで反応するので

Select Next Tab: command + shift + ]
Select Previous Tab: command + shift + [

上記のように入力して以下のように表示されていれば良いです。

Select Next Tab: command + shift + [
Select Previous Tab: command + shift + \

このバグは混乱するので直して欲しいです。かなり放置されているので期待は薄そうですが…。
2014/05/21

Android Studioでカーソルをワード区切り単位で移動する

Android Studio が使いにくいです。
カーソル移動もままなりません。
これが IDE の移行コストか…と思いながら Keymap を眺める日々です。

さて、愚痴はこのへんにして Android Studio を調教していきましょう。

Android Studio のデフォルトの挙動では alt + , alt +
ワード単位で移動してしまいます。

これ↑をこう↓したいわけです。


どうすればいいのか?

[Preference > Keymap] で 検索バーに [ Move Caret Word Different ] を入力すると
以下の項目が見つかるかと思います。(検索バーの右のボタンを押せばショートカットキーからも検索できます)
Move Caret to Next Word in Different "Camel|Humps" Mode
Move Caret to Previous Word in Different "Camel|Humps" Mode
この項目で右クリックして [ Add Keyboard Shortcut ] を選択後、
割り当てたいショートカットキーを入力します。
ショートカットキーが衝突した場合は既存のショートカット設定を削除して上書きすることができます。

こうして僕は alt + , alt + を設定して幸せになれました。

上記の動きで文字列を選択したい

以下の項目に alt + shift + , alt + shift + を割り当てました。

Move Caret to Next Word with Selection in Different "Camel|Humps" Mode
Move Caret to Previous Word with Selection in Different "Camel|Humps" Mode

2014/05/20

Android Studioのカラーテーマを変更/追加する

Android Studio といえばクールなダークテーマですよね?
ただでさえ新しいビルドシステム Gradle が導入され、
Android Studio で開発 イコール カッコイイ なのに
ダークテーマだなんてかっこ良すぎると思います。

羨ましいので Android Studio を導入してみたところ
別に普通のライトグレーな普通にテーマでした。
あれ?と思いつつ、調べたところ
Android Studio のイメージのクールなダークテーマは
[Preference > Appearance] の Theme で Darcula を設定すれば適用されます。

Appearance を Darcula すると自動的に エディタのカラーテーマも Darcula になるようです。
オレンジ系のカラーテーマはそんなに好きじゃなかったので
Themes for InteliJ IDEA, PhpStorm, PyCharm, RubyMine, WebStorm and AppCode. から
Monokai Sublime Text 3 というカラーテーマをダウンロードしてきました。
Android Studio の [File > Import Settings...] から読み込めばカラーテーマを追加できます。
エディタのカラーテーマは [Preference > Editor > Colors & Fonts] から変更できます。

なんでこれくらいのこと Eclipse でもやってなかったんだろうと思ったら
Eclipse はエディタ部分は変更できても Appearance が変更できないからやめたようです。
like Darcula - Kazzzの日記
Eclipse より Android Studio の方がイケてますね。完全に移行できるよう頑張ります。


参考

第3回 はじめましてのAndroidアプリケーション:Android Studio最速入門~効率的にコーディングするための使い方|gihyo.jp … 技術評論社
How to change or add theme to Android Studio? - Stack Overflow
Color Themes & Fonts
2014/05/16

[Git]GitのpullをFast-Forward onlyにする

Git の pull / merge が --no-ff だと
自分の Mac と会社の Mac で wada811/dotfiles を更新/同期していると
以下の画像のようにマージコミットが増えていってコミットグラフも分岐してしまいます。
ただ異なる環境で編集しているだけなのに
このように本質的でないコミットが増えていくのは本意ではありません。

git pull --ff-only で実行すれば良い

上の例では確かにそうです。

しかし、 Brewfile + Homebrew + Homebrew-caskで Mac の環境構築をする | DevAchieve で書いた
HomeBrew / HomeBrew-cask の更新では
brew upgrade で内部的に git pull が実行されるので、
オプションを付けることができません。

個人的な設定により Non Fast-forward なので マージコミットを作成しようとして
コミットメッセージ入力待ちで処理が止まってしまいます。
HomeBrew / HomeBrew-cask の更新処理はそこそこ時間がかかるので
見張っていなければならないという状況は地味にストレスです。
HomeBrew / HomeBrew-cask をこちらで編集する気がないので --ff で merge したいので
デフォルトの pull の挙動を Fast-Forward only にしてしまいます。

Git の pull を Fast-Forward only にする

git config --global pull.ff only
In what cases could `git pull` be harmful? - Stack Overflow
ただし、 Git 2.0 以上から。
ちなみに Git は現在 1.9.3 が最新です。
Git 2.0 は 5月中旬以降にリリース予定らしいです。

つまり、現状では不可能でした。
Git の alias は既存のコマンドを上書きできませんし、
Git の処理自体を書き換えるつもりもないので
おとなしく Git 2.0 がリリースされるのを待ちます。

Git の merge を Fast-Forward にしてしまえば解決しますが、
ブランチのマージの際にブランチが存在したという履歴がなくなってしまうので
こちらのデメリットのほうが大きなってしまうので Fast-Forward にはしません。
参考: 「こわくない Git」というスライドを発表しました - kotas.tech

おまけ

普段 git pull していたけど
カレントブランチとは異なるリモートブランチを pull して事故ることもあったりしたので
git fetch を使うようにしようかな。
参考: Git pullを使うべきでない3つの理由 - DQNEO起業日記
2014/05/11

dotfilesをGitHubで管理する方法

ドットファイルと呼ばれるファイル名の先頭にドットがある設定ファイル(※)を
GitHub で管理する方法について調べたので書いておきます。(※ .zshrc とか)
Mac の移行時に環境構築で dotfiles リポジトリを clone するだけで
zsh とか git とかの設定が新しい環境でもすぐに反映されるので楽チンみたいです。
イケてるエンジニアがやってるって噂なので僕もやりたいと思います。

1. dotfiles フォルダを作成する

cd ~
mkdir dotfiles

2. dotfiles フォルダにドットファイルを移す

mv .gitconfig dotfiles
mv .gitignore dotfiles
mv .vim dotfiles
mv .vimrc dotfiles
mv .zsh dotfiles
mv .zshrc dotfiles

3. ドットファイルのシンボリックリンクを作成するシェルスクリプトを作成する

cd dotfiles
vi dotfilesInstaller.sh
#! /bin/bash
ln -s ~/dotfiles/.gitconfig ~/.gitconfig
ln -s ~/dotfiles/.gitignore ~/.gitignore
ln -s ~/dotfiles/.vim/ ~/.vim
ln -s ~/dotfiles/.vimrc ~/.vimrc
ln -s ~/dotfiles/.zsh/ ~/.zsh
ln -s ~/dotfiles/.zshrc ~/.zshrc
chmod +x dotfilesInstaller.sh
./dotfilesInstaller.sh

4. dotfiles を GitHub で管理する

git init
hub create
git add .
git commit -m "Initial commit"
git push -u origin master

GitHub で管理された dotfiles リポジトリの完成

wada811/dotfiles
これでイケてるエンジニアの仲間入りですかね!

新しい Mac で dotfiles をインストールする

cd ~
git clone git@github.com:wada811/dotfiles.git
clone したら dotfiles フォルダの dotfilesInstaller.sh を以下のように実行したら移行完了です。
chmod +x dotfilesInstaller.sh
./dotfilesInstaller.sh

参考
dotfilesをGitHubで管理,vimプラグインをNeoBundleで管理する方法メモ - Programming Log

dotfiles を追加する際には dotfilesInstaller.sh に追記しなければなりませんが、
以下のように記述すれば追記の必要もないようです。
なんとなく意味はわかりますが、完全に理解しているわけではないので採用していません。そのうち調べます。
#!/bin/sh
cd $(dirname $0)
for dotfile in .?*
do
    if [ $dotfile != '..' ] && [ $dotfile != '.git' ]
    then
        ln -Fis "$PWD/$dotfile" $HOME
    fi
done
DotfilesをGitHubで管理する | fixture.jp
2013/07/15

[SQLite]SQLite Shellの設定を起動時に自動的に読み込む

Rails の開発を始めたら開発時のデータベースが SQLite だったので
SQLite のシェルを使っているのだが、
各種設定が起動時にリセットされる(というか保存されていない)ので設定を保存したい。

調べてみると ~/.sqliterc を用意すれば良いらしい。

参考
sqlite3 コマンドラインツールの設定保存 - wicaの日記
.headers ON
.mode column
.nullvalue "(null)"
.timer ON
.tables
これで起動時に各種設定が実行される。
それを逆手に取って起動時にそのデータベースファイルのテーブル一覧を表示するように最後の行を追加した。
これでテーブル名のコピペも楽ちん。本当は Tab 補完して欲しいのだけど。
2013/07/13

Vim のチュートリアルと基本設定

もっぱら GUI を使っていますが CUI ともお友達にならなきゃいけないので
CUI のエディタである Vim のチュートリアルをやってみました。
また、その中で出た設定ファイルも組み込んでみました。

Vim のチュートリアルは Vim が入っていればたぶん入っていて、
以下のコマンドを実行すれば良いです。
vimtutor ja
全7章からなる Vim の基本的な使い方のチュートリアルです。
30分くらいでできると思うので使う人は是非やってみることをオススメします。

その中で Vim の設定ファイルである .vimrc の例があったのでこちらに少しいじったのを載せておきます。
原文は適当なファイルで以下のコマンドを実行して確認してください。
:read $VIMRUNTIME/vimrc_example.vim
" :read $VIMRUNTIME/vimrc_example.vim

" When started as "evim", evim.vim will already have done these settings.
" "evim" コマンドで開始した場合は設定済みとして読み込まずに終了する。
if v:progname =~? "evim"
  finish
endif

" Use Vim settings, rather than Vi settings (much better!).
" This must be first, because it changes other options as a side effect.
" Vi の設定よりも Vim の設定を使用する。
" これは副作用として他のオプションを変更するため最初に記述する。
set nocompatible

" allow backspacing over everything in insert mode
" 挿入モードの全てにおいてバックスペースを許可する
set backspace=indent,eol,start

if has("vms")
  set nobackup    " do not keep a backup file, use versions instead
else
  set backup      " keep a backup file
endif
set history=50    " keep 50 lines of command line history
                  " コマンドライン履歴を50行保持する
set ruler         " show the cursor position all the time
                  " 常にカーソルのポジションを表示する
set showcmd       " display incomplete commands
                  " 不完全なコマンドを表示する
set incsearch     " do incremental searching
                  " インクリメンタルサーチをする

" Don't use Ex mode, use Q for formatting
" フォーマットに Q を使用する Ex モードを使用しない。
map Q gq

" CTRL-U in insert mode deletes a lot.  Use CTRL-G u to first break undo,
" so that you can undo CTRL-U after inserting a line break.
" 挿入モードでの CTRL-U で たくさん削除する。
" 改行を入れた後の CTRL-U で元に戻せるようにするために、
" まず CTRL-G u を使ってアンドゥを中断してください。
inoremap <C-U> <C-G>u<C-U>

" In many terminal emulators the mouse works just fine, thus enable it.
" 多くのターミナルエミュレータでマウスは良い働きをするので有効化する。
if has('mouse')
  set mouse=a
endif

" Switch syntax highlighting on, when the terminal has colors
" Also switch on highlighting the last used search pattern.
" ターミナルに色がある場合、シンタックスハイライトを ON に変更する。
if &t_Co > 2 || has("gui_running")
  syntax on
  set hlsearch
endif

" Only do this part when compiled with support for autocommands.
" autocommands のサポートが有効な場合のみこの部分を実行する
if has("autocmd")

  " Enable file type detection.
  " ファイルタイプ検出を有効にする。
  " Use the default filetype settings, so that mail gets 'tw' set to 72,
  " 'cindent' is on in C files, etc.
  " Also load indent files, to automatically do language-dependent indenting.
  " デフォルトのファイルタイプ設定を使用する。
  " また、言語ごとのインデントを自動実行するためのインデントファイルを読み込む。
  filetype plugin indent on

  " Put these in an autocmd group, so that we can delete them easily.
  " 削除しやすいように autocmd グループにこれらを記述する。
  augroup vimrcEx
  au!

  " For all text files set 'textwidth' to 78 characters.
  " すべてのテキストファイルについてテキスト幅は 78 文字にセットする。
  autocmd FileType text setlocal textwidth=78

  " When editing a file, always jump to the last known cursor position.
  " ファイルの編集中に常に最後のカーソルポジションにファンプできるようにする。
  " Don't do it when the position is invalid or when inside an event handler
  " (happens when dropping a file on gvim).
  " Also don't do it when the mark is in the first line, that is the default
  " position when opening a file.
  autocmd BufReadPost *
    \ if line("'\"") > 1 && line("'\"") <= line("$") |
    \   exe "normal! g`\"" |
    \ endif

  augroup END

else

  set autoindent    " always set autoindenting on
                    " 常にオートインデントを ON にする。

endif " has("autocmd")

" Convenient command to see the difference between the current buffer and the
" file it was loaded from, thus the changes you made.
" 変更前と変更後の diff を確認する便利コマンド
" Only define it when not defined already.
" すでに定義されていない場合のみ定義する。
if !exists(":DiffOrig")
  command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis
    \ | wincmd p | diffthis
endif
訳文は怪しいところがチラホラ。意味や動きがよくわかってない設定もチラホラ。
とりあえず設定を書いて読み込むと Vim がカラーついて便利になると思います。

僕は直接コレを ~/.vimrc には書きたくなかったので .vimrc.ex を用意して .vimrc から読み込むことにしました。
参考: Vim-users.jp - Hack #108: vimrc で外部ファイルを取り込む
構造は以下のとおりです。
.vimrc
.vim
└── .vimrc.ex
" 基本的な Vim の設定(必ず最初に読み込む)
if filereadable(expand('~/.vim/.vimrc.ex'))
  source ~/.vim/.vimrc.ex
endif

" 以下、その他の自分で追加した設定
使い方も覚えてちょっと便利になったので少しずつ改良していきたいです。
2013/06/01

[Eclipse][設定]Eclipse JunoでCode Templateの$userを変更する

開発中のアプリのコードを公開しようか迷っているけど
どっちにしろライセンスは全てのファイルに記述しようと思い立ったので
Android開発を行う際の eclipse の便利設定 | zaki日記を参考に
Code Template を設定することにした。

ところで1記事の中に複数の項目について記述する場合は
id つけてもらえるとリンクしやすいので id つけて欲しいなーと思ったり。
自分も忘れがちだから気をつけなきゃいけないけど、id あると紹介しやすいんだよねー。

ということで以下のライセンスを指定した。
/*
 * Copyright ${year} ${user}<メールアドレス>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
自動的に${year}が今年の西暦を入れてくれて、${user}がユーザー名を入れてくれる。

本題はココから。

${user}がどこを参照したのか wada にしてくれちゃうので wada811 にしたい僕は困ったという話。
まず、eclipse.ini の起動時引数に以下で指定すれば良いというのは分かった。
-Duser.name=UserName
JavaDocの@authorで補完される名前を変更したい:おぼえがき:So-net blog
で、その肝心の eclipse.ini はどこかというと Mac なら以下にある。
[Eclipse HOME]/Eclipse.app/Contents/MacOS/eclipse.ini
参考: Steppin' out: Mac (Lion) で Eclipse 4.2 Juno を日本語化
ついでに-cleanも指定して保存して Eclipse を再起動すれば $user が指定のユーザー名になる。
ちなみに Code Templates の設定の Automatically add comments for new methods and types に
チェックを入れないとファイル新規作成時にライセンスが自動挿入されないので注意。
2013/05/07

[Eclipse]コンテンツアシストのトリガーを変更して爆速コーディング

Eclipse > Preference > XML > XML Files > Editor > Content Assist から
Auto Activation の Auto Activation delay (ms) (※補完プロンプト表示ディレイ時間)と
Prompt when these characters are inserted (※補完プロンプト表示トリガー) を
変更します。
ディレイ時間を短くすればするほど爆速ですが思考が付いていかない気がします。
ネタ帳 A.B.C: Android Layout XMLのコーディングを快適にする方法を参考に
トリガーを以下のように設定しました。
<=:._@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ


Java でも Eclipse > Preference > Java > Editor > Content Assist から
Auto Activation の項目を同様に変更することで設定できます。
参考: Eclipseの補完設定をカスタマイズして爆速コーディング - ser1zw's blog
しかしプロンプトが出てからスペースを押すと補完を入力してスペースが入ってしまうので微妙かもしれません。
2013/02/25

[SublimeText2]Goto Documentationでドキュメントジャンプ

kemayo/sublime-text-2-goto-documentation · GitHub
フォーカスの当たった単語のドキュメントに飛ぶためのコマンドを提供するプラグイン。
以下のプログラミング言語をサポートしている。
  • PHP
  • JS / CoffeeScript
  • Python
  • Clojure
  • Go
  • Smarty
  • Ruby on Rails
作者はプラグインが自動的にキーバインドを追加するのは嫌いらしいので自分で追加する必要がある。
key Bindings - User に以下のように書けば良い。
{ "keys": ["super+shift+h"], "command": "goto_documentation" }
だんだん使い勝手が良くなってきた。

追記

中身見たら拡張が簡単そうだったのでCSSのドキュメントジャンプ関数を追加した。
def css_doc(self, keyword, scope):
    open_url('http://docs.webplatform.org/wiki/css/properties/%s' % keyword.lower())
例えば opacity の上で実行するとhttp://docs.webplatform.org/wiki/css/properties/opacityに飛ぶ。
まだドキュメントはアルファ版らしいけど今後に期待ということで飛べるようにしておく。

タグ(RSS)