写真
完全無料の写真素材サイト。素材のクオリティが高く、人物写真が多いのが特徴。
アプリケーション開発の際に利用させていただいている、便利なWebツールを順次ご紹介したいと思います。
GIF、JPEG、PNG形式の素材ファイルから、ico形式のFavicon用画像を作成することができます。iOSおよびAndroid用のアイコンも作成することができます。
原色大辞典やweb216等のカラーパレットごとに、各色と16進数カラーコードを確認することができます。
さくらVPSのCentOS6サーバーに、WordPressをインストールしたので、その手順を残します。
まず、WordPressの使用言語であるPHPと必要なモジュールをインストールします。yumコマンドを使えば一発です。
$ sudo yum install php php-gd php-mbstring php-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の公式ページから最新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
最後に、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が立ち上がっている状態になっています。今回の例であればhttp://blog.codebase.co.jpにアクセスすることで、セットアップウィザードが開始しますので、データベースへの接続情報等を入力して初期設定を完了させます。
さくら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としてこのサーバーにアクセスすることができるようになりました。
次に、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コマンドを利用できるようになりました。
以上で、管理者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 ]
Atlassian Confluenceにおいて、Team Calendarsというプラグインを導入時に、以下のようなエラーが発生しプラグインを有効化できなかったことがありました。
ログを確認すると、
$ 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において、OSの環境変数は「%ENV」という連想配列に格納されています。よって、例えば「PATH」という環境変数は、
my $path = $ENV{"PATH"};
という形で取得することができます。設定するのも簡単で、%ENVに要素を追加するだけです。
$ENV{"PATH"} = $path;
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
グループ内でのお金の立替えを精算するためのツールを作成しました。新しい精算シートを作成すると、固有のURLが作られるため、そのURLをグループのメンバーに渡すことで情報の共有ができます。
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"