Category Archives: Linux

弊社ではインターンを絶賛大募集しています!

 
154529369581
実践力が身に付く、超実践型インターン!! 
健康管理サービス『カラダノート』運営企業! 
★企画営業、★エンジニア、★デザイナー、★サービス運営担当 
株式会社プラスアール|短期バイト求人なら大学生アルバイト.com

 
Android担当エンジニアのインターンとして採用されれば、筆者である私とペアを組んで仕事することになります。 
その際には、就職活動のときや入社してからも即戦力として役立つ超実用的な9つのスキルを教えることを約束します! 
 
 

・JAVAを教えます

Android端末のアプリは、JAVAというプログラム言語で動作しています。 
JAVAはスマートフォンアプリ以外でも広く使われている言語で、アプリ開発を通じてJAVAを使いこなせるようになれば、幅広い業務に対応できます。 
関連記事) 
Activityにまたがってグローバルに変数などのオブジェクトを共有するには 
AndroidでWebViewアプリを作る[初心者向け] 
 
 

・PHPを教えます

・HTMLを教えます

・MYSQLを教えます

・Linuxを教えます

弊社はソーシャルアプリを多数リリース用しており、1つのサービスで1日の最大利用者数が5万に達したこともあります。 
PHP、HTML、MYSQLなどをマスターすれば、WEBサイトが開発できるようになり、アプリ開発だけでなく、WEBエンジニアとしての道も開けてきます。 
関連記事) 
Amimoto AMI 網元『から』別のサーバーにwordpressを移転するとき1 
AndroidアプリでUNIX timeを取得 
 
 

・FLASHを教えます

FLASHはWEBサイトやフィーチャーフォン(ガラケー)のサイトでよく利用されている技術です。 
ターゲットとする分野によっては今でも重要視され、簡単な動画編集などもできる専門性の高い技術です。 
関連記事) 
FlashLite1.1でアドベンチャーゲームをつくる 第1回 『タイプライター風に1文字ずつ文字を表示しよう シーン構成編』 
 
 

・PowerPointを教えます

企画や営業の際に必須になるのがPowerPointです。大学のレポート作りにも即役立つ、便利なツールです。 
PowerPointの使い方やちょっとしたコツを、実際に使われているドキュメントを通して教えます。 
 
 

・Excelを教えます

「正直言うとエクセルの使い方がよく解らない……」という人も多いと思います。 
実務では非常によく使われていますが、基本的な部分から教えていくので安心してください。 
また、関数やマクロといった、一歩進んだ使い方まで指導します。 
関連記事) 
Excelで書かれた「ふりがな付き文字列」をHTMLのタグに対応した文字列に自動で変換する 
 
 

・ギターを教えます!

実務とは全く関係ありませんが、ご希望とあらばギターを教えます! 
……あ、いらない? 
関連記事) 
『Golden Age vol.1』 開催決定!! 
 
 
 
自分の現状のスキルに全く自信がない、という方でも、まずはお気軽にオフィスに遊びに来てください! 温かくお迎えします! 
お待ちしていますm(_ _)m 

こんにちは。イッシーですʕ→ᴥ←ʔ キュンキュン!世の中ドキュメントはHTMLという流れですね。オフィスで残すのも管理が大変なので、ちゃっかりブログに載せちゃえ主義を貫こうと思います。

さて、プラスアールではクラウドを利用してサービスを運営しています。そこで本日はAWSでサーバをたてます。硬派なインストール方法(ソースからビルド)をせず、yumしまくってますがご了承ください。m(__)m

※Amazon Linuxの32bitを使用しております。

■Apache

いわゆるWebサーバです。

[cc lang="bash"]
sudo yum install httpd
sudo chkconfig httpd on
[/cc]

インストール及びマシン起動時の設定が完了しました。特にサーバーとしては問題なく動作するのですがセキュリティ上望ましくない部分もありますので設定を変更します。

設定

以下のコマンドで設定ファイルを編集します。

[cc lang="bash"]
sudo vi /etc/httpd/conf/httpd.conf
[/cc]

HTTPヘッダ内のApacheのバージョン

特定のバージョンに存在する未知の脆弱性というものも存在するかもしれません。以下の部分を

[cc lang="bash"]
ServerTokens OS
[/cc]

以下のように編集しバージョンを隠すようにしましょう。

[cc lang="bash"]
ServerTokens ProductOnly
[/cc]

サーバーネームの変更

[cc lang="bash"]
#ServerName www.example.com:80
[/cc]

以下のように変更する。

[cc lang="bash"]
ServerName hogehoge.com:80
[/cc]

ディレクトリの一覧表示を禁止

ディレクトリの中身が見えてしまうというのはセキュリティ上好ましくありません。以下の部分を

[cc lang="bash"]
Options Indexes FollowSymLinks
[/cc]

以下のように変更して一覧を表示させないようにしましょう。

[cc lang="bash"]
Options -Indexes FollowSymLinks
[/cc]

htaccessの使用を許可

これは用途によりますが大概のWebアプリケーションはhtaccessファイルを使用しているのではないかと思います。<Directory “/”>内の以下の部分を

[cc lang="bash"]
AllowOverride None
[/cc]

以下のように変更します。

[cc lang="bash"]
AllowOverride All
[/cc]

.htaccessファイルは外から見られるとセキュリティリスクになります。以下の記述が見つからない場合は追記しましょう。

[cc lang="xml"]

Order allow,deny
Deny from all

[/cc]

エラーページにおけるサーバ情報の表示禁止

これは一番最初の設定項目と同様の理由です。不要な情報は極力表示させないようにしましょう。以下の部分を

[cc lang="bash"]
#ServerSignature On
[/cc]

以下のように変更します。

[cc lang="bash"]
ServerSignature Off
[/cc]

起動

以下のコマンドで起動します。

[cc lang="bash"]
sudo /etc/init.d/httpd start
[/cc]

ちなみに初期設定の場合は以下のディレクトリのファイルが参照されます。

[cc lang="bash"]
/var/www/html/
[/cc]

従ってそこにindex.htmlを設置すれば参照できますね。Webサーバーσ°▽°)σ ゲッツ!

■MySQL

いわゆるDBです。Amazon RDSを使用しても良いのですが今回は同マシン内でMySQLも動かしてみます。

[cc lang="bash"]
sudo yum install mysql mysql-server mysql-devel
sudo chkconfig mysqld on
[/cc]

設定

以下のコマンドで設定ファイルを編集します。

[cc lang="bash"]
sudo vi /etc/my.cnf
[/cc]

文字コード

MySQLのデフォルトの文字コードはコンパイルオプションで指定しないとlatin1です。試しに以下のコマンドで確認します。

[cc lang="bash"]
mysql> show variables like ‘character_set%’;
+————————–+—————————-+
| Variable_name | Value |
+————————–+—————————-+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+————————–+—————————-+
[/cc]

マルチバイト圏に生まれて凹みますね。でも大丈夫。以下の記述を設定ファイルに加えましょう。

[cc lang="bash"]
[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
[/cc]

以下のように生まれ変わります!

[cc lang="bash"]
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/ |
+————————–+—————————-+
[/cc]

僕はunicode以外の文字コードは嫌いです(●´⌓`●)

パスワード

インストール直後のMySQLはrootのパスワードがありません。セキュリティを考えて必ず設定しておきましょう。

[cc lang="bash"]
myql -u root
[/cc]

以下のSQLを実行します。

[cc lang="sql"]
SET PASSWORD FOR root@localhost=PASSWORD(‘fugafuga’);
exit;
[/cc]

実はもっと沢山の設定項目がありますが本題から外れてしまいそうなのでサクっと終わらせます。

起動

以下のコマンドで起動します。

[cc lang="bash"]
sudo /etc/init.d/mysqld start
[/cc]

MySQLサーバーσ°▽°)σ ゲッツ!

■PHP

みんな大好き”ゆとり言語”PHPです!必要に応じてパッケージは追加してください。

[cc lang="bash"]
sudo yum install php php-devel php-pdo php-pear php-mcrypt php-mysql php-mbstring
[/cc]

Amazon LinuxリポジトリのPHPバージョンは5.3.6。キュンキュンするバージョンですね。ʕ→ᴥ←ʔ キュンキュン!

PHP設定

以下のコマンドを実行し設定ファイルを編集します。

[cc lang="bash"]
sudo vi /etc/php.ini
[/cc]

文字コード

以下の項目を探して下記を例に変更しましょう。

[cc lang="bash"]
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_output = UTF-8
[/cc]

※携帯サイトの場合はSJISかもしれません。

PHPのバージョン表示

PHPには特定のバージョンに存在する脆弱性が存在します。以下の部分を

[cc lang="bash"]
expose_php = On
[/cc]

以下のように変更し

[cc lang="bash"]
expose_php = Off
[/cc]

バージョン情報をクライアントに送信しないようにしましょう。

タイムゾーンの設定

以下の部分を

[cc lang="bash"]
;date.timezone =
[/cc]

以下のように書き換えましょう。

[cc lang="bash"]
date.timezone = Asia/Tokyo
[/cc]

動作確認

[cc lang="bash"]
sudo /var/www/html/index.php
[/cc]

以下のように記述します。

[cc lang="php"]
phpinfo();
[/cc]

キタ━━━━。゚+.ヽ(´∀`*)ノ ゚+.゚━━━━!!ドキュメント化に30分くらいかかってしまいましたが、上述の作業だけだったら10分でできるかと思います。自分で書いたタイトルですが「普通のウェブアプリケーション」って何をもってして普通なんでしょうね・・・

こんにちは!イッシーです。最近はnode.jsにキュンキュンしてますʕ→ᴥ←ʔ キュンキュン!

最近、空メールの処理をする機会がありました。以前、やったことがあったんですがすっかり忘れてしまっていたのでちゃんとメモっておくことにします。特にキュンキュンするようなトピックスでもないので、サクっと片付けて皆でnodeにキュンキュンする時間を作りましょう!

では、本題に入りますが、メールサーバに何を使用しているかによって設定ファイルの場所と方法が若干違います。

■qmail

以下のコマンドを実行し設定ファイルを編集します。

[cc lang="bash"]
vi /var/qmail/mailnames/[domain]/[mailaddress]/.qmail
[/cc]

以下のように記述されていると思います。

[cc lang="bash"]
| true
| /usr/bin/deliverquota ./Maildir
[/cc]

以下のように記述する事でプログラム(スクリプト)に処理を渡すことができます。

[cc lang="bash"]
| /usr/bin/php /var/www/vhosts/[domain]/subdomains/[sub]/register.php
| true
| /usr/bin/deliverquota ./Maildir
[/cc]

register.phpの内容については後述します。

■postfix

以下のコマンドを実行し設定ファイルを編集します。

[cc lang="bash"]
vi /etc/aliases
[/cc]

以下の記述を最後尾に加えます。

[cc lang="bash"]
user: “| /usr/bin/php /var/www/vhosts/[domain]/subdomains/[sub]/register.php”
[/cc]

以下のコマンドを実行し設定を反映させます。

[cc lang="bash"]
postalias /etc/aliases
[/cc]

以上でメールサーバの設定が完了しました。register.phpでメールの処理をする準備が整いました。

■register.php

まず、以下のコマンドでログファイルを準備します。

[cc lang="bash"]
touch /var/www/vhosts/[domain]/subdomains/[sub]/log.txt
chmod 0777 /var/www/vhosts/[domain]/subdomains/[sub]/log.txt
[/cc]

ブラウザでデバッグできないので、まず以下のようにログファイルにエラーを出力するように設定しましょう。

[cc lang="php"]
$file = ‘/var/www/vhosts/[domain]/subdomains/[sub]/log.txt’;
$date = date(‘Y-m-d H:i:s’);
file_put_contents($file, “\nreceived – {$date}”, FILE_APPEND);

ini_set(‘log_errors’, ‘On’);
ini_set(‘error_log’, $file);
[/cc]

次にメールの文言を取得します。面倒なのでPEARを使いましょう。パスは環境に応じて置き換えてください。

[cc lang="php"]
require_once(‘/usr/share/PEAR/Mail/mimeDecode.php’);

$source = file_get_contents(“php://stdin”);//標準入力からメールデータをゲットだぜ!
if(!$source){
echo “fail!\n”;
exit();
}

// メールデータをパースする
$decoder = new Mail_mimeDecode($source);
$structure = $decoder->decode(array(
‘include_bodies’ => true,
‘decode_bodies’ => true,
‘decode_headers’ => true,
));
$from = mb_convert_encoding(
mb_decode_mimeheader(
$structure->headers['from']
),
‘UTF-8′
);
if(preg_match(‘/<([^>]+)>$/’, $from, $regs)){
$from = $regs[1];
}

$from = strtolower($from);
$title = mb_convert_encoding($structure->headers['subject'], ‘UTF-8′, ‘ISO-2022-JP’);
$context = ($structure->body)? $structure->body : $structure->parts[0]->body;
$context = mb_convert_encoding($context, ‘UTF-8′, ‘ISO-2022-JP’);
[/cc]

この後で取得したデータをDBに格納したりします。ログを確認できるようにすることがいかなる場合も大切ですね。(●´ω`●)