スマホ売れ筋ランキングをAWSから毎週Gmailに送りたい

Web系の仕事をしていると、どの端末がどれ位売れているか、常に把握しておかないと、話にならない。ということで、、、

foreach($model_data as $value){
	$k = $i + 1;
	echo $k ."位 ".$value . " ". $name_data[$i] . " (".$date_data[$i].")<br>";
	$i++; 
}

まずは、mb_send_mailの実装からか。

凄く簡単だが、

$i = 0;
foreach($model_data as $value){
	$k = $i + 1;
	$body .= $k ."位 ".$value . " ". $name_data[$i] . " (".$date_data[$i].")\n";
	$i++; 
}

mb_language("Japanese");
mb_internal_encoding("utf-8");

$email = "hogehoge@gmail.com";
$subject = "週間スマホランキング";
$to = "hogehogehoge@hotmail.com";

mb_send_mail($to, $subject, $body, "From:".$email);

vagrantからは送れる。

ec2からmb_send_mailを使いたい。使えるか?というか、使えないと困る。
とりあえずテストか。

Elastic IPでお名前.comのドメインとEC2のインスタンスを紐づける

Elastic IP アドレスは、動的なクラウドコンピューティングのために設計された静的 IPv4 アドレス
Elastic IP アドレスを使用すると、アドレスをアカウント内の別のインスタンスに迅速に再マップして、インスタンスやソフトウェアのエラーを隠すことができる

IPv4:Internet Protocolの一種で、OSI参照モデルにおいてネットワーク層に位置付けられるプロトコル

インスタンスのサイドメニューから選択する

インスタンスに割り当てる

では、お名前.comで適当に、capital-technology.xyz を取得します。

Route53
Hosted zonesでお名前.comで取得したドメインを入力する。

create record setのvalueのところにEC2インスタンスを割り当てたElasticIPをかくらしい

で、create

お名前.com
対象のドメインのDNSレコードの設定

digする。

おおおおおおおおおおおおおおおおおおおおおおおおおおおおおお
what’s goin on?
とりあえず、ec2に紐づいたみたいだ!とりあえず。。よっしゃあああああああああああああああああ!

さて、では、つぎはec2でスクレイピングかな。
待て待て。落ち着け。

ec2でphpファイルが認識されない

/var/www/htmlのphpファイルがphpと認識されない。

php.iniを開きます。

short_open_tagをonにします。

short_open_tag = On  

httpdを再起動

# service httpd restart

来たー!
落ち着け、落ち着け

続いて、お名前.comで取得したドメインのルーティングを設定したい。

ec2にmysql5.7をインストール

rpmを入れて、community-serverを入れる。

sudo yum -y install http://dev.mysql.com/get/mysql57-community-release-el6-7.noarch.rpm
sudo yum -y install mysql-community-server

–versionでバージョンを確認する。

mysql --version

mysql –version
mysql Ver 14.14 Distrib 5.7.22, for Linux (x86_64) using EditLine wrapper

service start

$ sudo service mysqld start
Initializing MySQL database:                               [  OK  ]
Starting mysqld:                                           [  OK  ]

初期パスワードが自動生成されているらしい。mysqld.logをみる。

$ cat /var/log/mysqld.log

するとずらずらとログが表示されるので、中から、
A temporary password is generated for root@localhost:
を探して、mysql -u root -p でログイン。

$ mysql -u root -p

ログイン出来ました。

/etc/my.cnfに文字コードを追加します。

sudo service mysqld restart でrestart

passwordを変える。

ALTER USER root@localhost IDENTIFIED BY ''

mysql> show databases;
+——————–+
| Database |
+——————–+
| information_schema |
| mysql |
| performance_schema |
| sys |
+——————–+
4 rows in set (0.00 sec)

OK!来た!
次は、var/www/html のページ編集です。

>ec2-user が Apache ウェブサーバーのデフォルトルートディレクトリにあるファイルを管理できるようにするには、/var/www ディレクトリの所有権とアクセス許可を変更する必要がある。
なに!?

>EC2 インスタンスに www という名前のグループを追加し、そのグループに /var/www ディレクトリの
>所有権を付与してグループへの書き込み許可を追加します。
>そのグループの任意のメンバーは、ウェブサーバーに対してファイルの追加、削除、および変更ができるようになります。
なるほど!

ec2の環境を整える

開発系のツールを一括で入れられるそうだ!

sudo yum groupinstall 'Development tools' -y

何じゃこりゃ?

とりあえず、AWSでphpファイルまではきた。

php -vが5.3なのでバージョンを上げたい。
2.2系httpdを削除。2.4系を入れる。

sudo yum remove -y httpd
sudo yum remove -y httpd-tools

sudo yum -y install httpd24

php7.0を入れる

sudo yum -y install php70 php70-mbstring php70-pdo

来た aws php 7.0

調子出てきたので、cyberduckからec2にアクセスしてみる

sftp(sshによる暗号化FTP)接続を指定すると、SSH Private Keyでpemファイルを設定できるようになる。

きたー 大分進んだー 色々やりてー

ルートをみると、普通にlinuxじゃん。OKOK!テンション上がってきました!

/var/www/htmlでindex.phpをつくろうとしましたが、cannot create file index.phpと出ました。

どうやらパーミッション変更が必要のようですね。