アプリケーション開発に役立つWebツールのまとめ

アプリケーション開発の際に利用させていただいている、便利なWebツールを順次ご紹介したいと思います。

デザイン

Faviconの作成

Favicon & App Icon Generator

GIF、JPEG、PNG形式の素材ファイルから、ico形式のFavicon用画像を作成することができます。iOSおよびAndroid用のアイコンも作成することができます。

色の見本

原色大辞典

原色大辞典やweb216等のカラーパレットごとに、各色と16進数カラーコードを確認することができます。

さくらVPSにWordPressをインストール

さくらVPSのCentOS6サーバーに、WordPressをインストールしたので、その手順を残します。

PHPのインストール

まず、WordPressの使用言語であるPHPと必要なモジュールをインストールします。yumコマンドを使えば一発です。

$ sudo yum install php php-gd php-mbstring php-mysql

MySQLのインストール

次に、データベースであるMySQLをインストールします。こちらもyumを使えます。

$ sudo yum install mysql-server

インストールが完了したら起動させます。

$ sudo service mysqld start

wordpressのためのデータベースとユーザーを作成します。今回は、いずれも「wordpress」としました。(省略しますが、rootユーザーのパスワードをまず設定した方がよいです。)

$ mysql -u root

mysql> CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8;
Query OK, 1 row affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON wordpress.* TO wordpress@localhost IDENTIFIED BY 'password';
Query OK, 0 row affected (0.00 sec)

mysql> exit
Bye

WordPressの設置

次に、WordPressの設置に進みます。まず、WordPressの公式ページから最新zipパッケージをダウンロードし、展開します。

$ cd /tmp
$ wget https://ja.wordpress.org/latest-ja.zip
$ unzip latest-ja.zip

wordpressという名前のディレクトリが作成されていることを確認できると思います。これを、実際WordPressを運用する場所に配置します。今回は、後述するApacheのバーチャルホストを利用することを考え、以下の場所にいたしました。ちなみに、今回インストールするWordPressにアクセスするためのドメインをblog.codebase.co.jpとしています。

$ sudo mkdir -p /var/www/vhosts/blog.codebase.co.jp
$ sudo mv wordpress /var/www/vhosts/blog.codebase.co.jp

 

Apacheのインストール

最後に、WebサーバーであるApacheをインストールします。こちらもyumで一発です。

$ sudo yum install httpd

インストールが完了したら、Apacheのバーチャルホスト設定にWordPressを追加します。

$ cd /etc/httpd/conf.d
$ sudo vim vhosts.conf

NameVirtualHost *:80

# WordPress
<VirtualHost *:80>
    DocumentRoot /var/www/vhosts/blog.codebase.co.jp/wordpress
    ServerName blog.codebase.co.jp
    ErrorLog /var/www/vhosts/blog.codebase.co.jp/log/error_log
    CustomLog /var/www/vhosts/blog.codebase.co.jp/log/access_log combined env=!nolog
    <Directory "/var/www/vhosts/blog.codebase.co.jp/wordpress">
        AllowOverride All
    </Directory>
</VirtualHost>

ログファイルが出力されるフォルダを作成します。

$ sudo mkdir /var/www/vhosts/blog.codebase.co.jp/log

ユーザーapacheがWordPressのログや設定ファイル等を読み書きできるように、blog.codebase.co.jpディレクトリ以下の所有権をapacheに変更します。

$ sudo chown apache:apache /var/www/vhosts/blog.codebase.co.jp -R

Apacheを起動します。

$ sudo service httpd start

WordPressの初期設定

以上で、WordPressが立ち上がっている状態になっています。今回の例であればhttp://blog.codebase.co.jpにアクセスすることで、セットアップウィザードが開始しますので、データベースへの接続情報等を入力して初期設定を完了させます。

さくらVPSで公開鍵認証のログインユーザーの作成

さくらVPSでサーバーをレンタルし、rootユーザーしか存在しない状態から、管理者ユーザーを作成する手順のメモです。

まず、「仮登録完了のお知らせ」メールに含まれるパスワードを利用して、rootユーザーとしてサーバーに接続します。

ログイン後、まず目的のユーザー(ここではnewuserとします)を作成します。

$ useradd newuser

公開鍵の登録

newuserのホームディレクトリに.sshディレクトリを作成し、パーミッションを700に設定します。

$ mkdir /home/newuser/.ssh
$ chmod 700 /home/newuser/.ssh

.sshディレクトリ以下にauthorized_keysというファイルを作成し、パーミッションを600に設定します。

$ cd /home/newuser/.ssh
$ touch authorized_keys
$ chmod 600 authorized_keys

authorized_keysファイルの中に、接続元ユーザーの公開鍵を登録します。

$ vim authorized_keys
ssh-rsa ...

.sshディレクトリとauthorized_keysファイルの所有者をnewuserに変更します。

$ chown newuser:newuser -R .

これで、接続元ユーザーはnewuserとしてこのサーバーにアクセスすることができるようになりました。

sudoコマンドを利用できるようにする

次に、newuserは管理者ユーザーなのでroot権限でコマンドを実行できるようにしたいと思います。visudoコマンドを利用することでこの設定ができます。

$ visudo

コマンドを実行すると、エディタが開き、sudoに関する設定ファイルを編集することができます。下にスクロールしていくと

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL

という箇所があると思うので、ここにnewuserを追記すればよいです。ただ、新しい管理者が入った場合に、毎回このファイルを修正するのは大変なので、個人ではなくwheelというグループにsudoコマンドの権限を与えて、newuserをwheelグループに登録する方向でいきます。既に以下のような記述があると思うので、先頭の#を削除してwheelグループのsudo権限を有効にさせます。「:wq」で変更内容を保存し、エディタを終了させます。

## Allows people in group wheel to run all commands
# %wheel        ALL=(ALL)       ALL

newuserをwheelグループに登録するには、gpasswdコマンドを使います。

$ gpasswd -a newuser wheel
Adding user newuser to group wheel

これでnewuserは再ログイン後にsudoコマンドを利用できるようになりました。

rootによるログインの禁止

以上で、管理者newuserによるログインおよびsudoコマンドの実行が可能になりましたが、rootによるログインも有効のままです。これは、セキュリティ的によろしくないので、rootによるログインを禁止し、また接続の際に公開鍵認証を義務付けたいと思います。この設定を行うには/etc/ssh/sshd_configを編集します。

$ vim /etc/ssh/sshd_config

「PermitRootLogin」、「PermitRootLogin」および「PasswordAuthentication」の設定を「no」にします。

PermitRootLogin no
PermitEmptyPasswords no
PasswordAuthentication no

設定を有効にするために、sshサービスを再起動します。

$ service sshd restart
Stopping sshd: [ OK ]
Starting sshd: [ OK ]

Confluenceのプラグイン有効時のタイムアウト設定の変更

Atlassian Confluenceにおいて、Team Calendarsというプラグインを導入時に、以下のようなエラーが発生しプラグインを有効化できなかったことがありました。

confluence_error

 

ログを確認すると、

$ sudo vim /var/atlassian/application-data/confluence/atlassian-confluence.log

以下のようなエラーが見つかりました。

2015-05-30 09:15:26,935 INFO [ajp-bio-8008-exec-17] [atlassian.plugin.manager.DefaultPluginManager] notifyPluginDisabled Disabling com.atlassian.confluence.extra.team-calendars
2015-05-30 09:15:26,938 ERROR [ajp-bio-8008-exec-17] [plugin.osgi.factory.OsgiPlugin] logAndClearOustandingDependencies Never resolved service '&applicationLinkService' for plugin 'com.atlassian.confluence.extra.team-calendars' with filter (objectClass=com.atlassian.applinks.api.ApplicationLinkService)
 -- url: /rest/plugins/1.0/com.atlassian.confluence.extra.team-calendars-key | userName: xxxxxxxx | referer: http://xxxxxxxx.com/plugins/servlet/upm/manage/paid-via-atlassian
2015-05-30 09:15:26,945 ERROR [ajp-bio-8008-exec-17] [atlassian.plugin.manager.PluginEnabler] actualEnable Unable to start the following plugins due to timeout while waiting for plugin to enable: com.atlassian.confluence.extra.team-calendars
 -- url: /rest/plugins/1.0/com.atlassian.confluence.extra.team-calendars-key | userName: xxxxxxxx | referer: http://xxxxxxxx.com/plugins/servlet/upm/manage/paid-via-atlassian

タイムアウトとあるので、プラグイン有効時のタイムアウトの設定値を増やします。

$ sudo vim /opt/atlassian/confluence/bin/setenv.sh

JAVA_OPTSに「-Datlassian.plugins.enable.wait=300」を追加をします。

JAVA_OPTS="-Xms256m -Xmx512m -XX:MaxPermSize=256m $JAVA_OPTS -Djava.awt.headless=true -Datlassian.plugins.enable.wait=300 "

最後に、Confluenceをリスタートします。

$ sudo service confluence restart

無事、Team Calendarsが有効化されていることを確認できました。同じAtlassian製品であるJIRAに関しても、同様な方法でタイムアウトを変更できるようです。

検証環境

OS CentOS 6.3 (64bit)
Confluence 5.5.4
Team Calendars 5.2.11

 

Perlで環境変数の取得と設定

Perlにおいて、OSの環境変数は「%ENV」という連想配列に格納されています。よって、例えば「PATH」という環境変数は、

my $path = $ENV{"PATH"};

という形で取得することができます。設定するのも簡単で、%ENVに要素を追加するだけです。

$ENV{"PATH"} = $path;

die()によるメッセージから行番号を除く

Perlにおいて、例外処理としてdie()をevalでキャッチして、その処理の中でdie()の引数として渡した文字列を利用する場合があると思います。例えば、次のようなコードになります。

$ vim die_test
#!/usr/bin/perl

eval {
    die "Exception occurred";
};
if ($@) {
    print $@;
}

このスクリプトを実行すると、

$ ./die_test
Exception occurred at die_test line 4.

というアウトプットがコンソールに表示されると思います。エラー表示だけならば特に問題はありませんが、メッセージを他の処理で利用したい場合、「at die_test line 4」の部分が邪魔くさくなります。これを防ぐ方法は実はシンプルで、die()の引数のメッセージの最後に改行コード(\n)を加えるだけです。

#!/usr/bin/perl

eval {
    die "Exception occurred\n";
};
if ($@) {
    print $@;
}
$ ./die_test
Exception occurred

Waritiger

waritiger

グループ内でのお金の立替えを精算するためのツールを作成しました。新しい精算シートを作成すると、固有のURLが作られるため、そのURLをグループのメンバーに渡すことで情報の共有ができます。

http://waritiger.com

waritiger

 

複数のファイル内の文字列の置換

UNIXにおいて、ファイル内の文字列の置換にはsedコマンドを利用することができます。例えば、fruits.txtファイル内の文字列AppleをOrangeに置換するには、以下のように行います。

$ sed -i".bkp" -e "s/Apple/Orange/g" fruits.txt

ここで、パラメータ「-i」は対象のファイルを直接書き換えることを指定していますが、直後に文字列を指定することで、その文字列がファイル名の後ろに付いたバックアップファイル(fruits.txt.bkp)を作成させています。

複数のファイルに対して同時に処理を行いたい場合は、findとxargsコマンドをsedと組み合わせます。findはファイルを検索するためのコマンドで、xargsは標準入力から渡された値を引数として任意のコマンドを実行するためのコマンドです。例えば、カレントディレクトリに存在する全てのファイル中のAppleをOrangeに置換するには、以下のように行います。

$ find . -maxdepth 1 -type f | xargs sed -i".bkp" -e "s/Apple/Orange/g"

 

Top