朝霞市在住のWEB系エンジニアかあさんのPHPメインの雑記帳

ITかあさん

最新記事

Herokuで独自ドメインの設定

Herokuにホスティングしているアプリに独自ドメイン設定したい

NuxtでWebサイトを作ったのですが、Herokuが楽でいいな、と思い、Herokuに設置。独自ドメインの設定はCNAMEで設定すればOKのようです。
(Nuxtのデプロイ手順は今度暇な時に書きます)

コマンド

ワンライナーでアプリとドメインの設定を確認できます

ドメインの設定

$ heroku domains:add www.yourdomain.jp -a yourapp-name

もし、指定したドメインが別のアプリで使われていた場合は ドメインの設定を解除する必要があります。

アプリとDNSの設定をワンライナーで確認する

# herokuのアプリ一覧で表示
$ heroku apps > heroku_apps_list; for i in `cat heroku_apps_list`; do heroku domains --app $i ; done

ドメインとアプリの関連付けを削除

$ heroku domains:remove yourdomain.jp -a yourapp-name

その後、もう一度自分の設定したいドメインとアプリで domains:addを実行してあげます。

DNS設定

CNAMEに設定すべきHeroku Domainを確認する

heroku domains -a yourapp-name

=== yourapp-name Heroku Domain
yourapp-name.herokuapp.com

=== yourapp-name Custom Domains
Domain Name DNS Record Type DNS Target
──────────────────── ─────────────── ──────────────────────────────────
www.yourdomain.jp CNAME www.yourdomain.jp.herokudns.com

yourapp-name Heroku Domain欄のドメインをコピーしてCNAMEのvalueに設定します

DNSの設定(私はお名前.comでしたが)は以下のようになります。VALUEにはherokuドメインが来るように設定します。

ホスト名: www.hirotaka.me
TYPE: CNAME
VALUE: yourapp-name.herokuapp.com
優先: (空欄)
状態: 有効

しばらくして指定したドメインでアクセスできるようになれば完了です。うまくいかないと感じたら、hostコマンドを叩いて設定されているか確認します
成功していれば次のように返ってきます
$ host yourdomain.jp
www.yourdomain.jp is an alias for yourapp-name.herokuapp.com.
us-east-1-a.route.herokuapp.com has address 54.236.166.251
us-east-1-a.route.herokuapp.com has address 52.5.226.222
us-east-1-a.route.herokuapp.com has address 52.72.224.148
us-east-1-a.route.herokuapp.com has address 52.6.103.192
us-east-1-a.route.herokuapp.com has address 52.7.153.92
us-east-1-a.route.herokuapp.com has address 52.6.165.91
us-east-1-a.route.herokuapp.com has address 52.71.195.70
us-east-1-a.route.herokuapp.com has address 52.72.5.0

wwwなしのレコード設定がCNAMEでできない

できませんね。。
なので、先頭にアスタリスクを設定してwwwなしでもアクセスできるようにしました。

ホスト名: *.yourdomain.jp
TYPE: CNAME
VALUE: yourapp-name.herokuapp.jp
優先: (空欄)
状態: 有効

DNS Record Type DNS Targetでうまくいかなかった

CNAMEのvalueには
DNS Record Type DNS Targetに表示される

yourdomain.jp.herokudns.com

こちらを表記するらしいのですが、
うまくいかなかったので(というか、このDNSでアクセスすることがそもそもできない)

古いやり方だと思われるheroku domain nameをCNAMEに設定するとうまく表示された。

SSLの問題かなあ。。SSL化しなくちゃいけないから、後でこの問題はまた考えよう

AWS RDSのMySQLの文字コードをutf-8に変更

AWS RDSのMySQLの文字コードをutf-8に変更

RDSで立てたMySQLってlatin1なんですね

発生エラー

ActiveRecord::StatementInvalid (Mysql2::Error: Incorrect string value: ‘\xE3\x83\x9E\xE3\x83\xBC…’ for column ‘name’ at row 1: …

最近EC2にRailsアプリケーションをデプロイしてみたんですが、文字コードがlatin1なんですね、デフォルトで。(日本語だとエラー発生するんで何事かと思ったら文字コードがutf-8じゃなかった)

そんなわけで文字コードを変更します。

コマンド

EC2のインスタンスからアクセスする前提でいきます。
mysql -h end-point -P 3306 -u database-user -p database-name


> show variables like 'char%';
+--------------------------+-------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /rdsdbbin/mysql-5.7.22.R4/share/charsets/ |
+--------------------------+-------------------------------------------+
8 rows in set (0.01 sec)

デフォルトの文字コードをutf-8にします。

MySQL [database-name]> ALTER DATABASE database-name default character set utf8;
Query OK, 1 row affected (0.01 sec)

すでにテーブルがいくつか登録済であれば、テーブルに対してもutf-8になるように変更してあげる必要があります。
> ALTER TABLE table_name CONVERT TO CHARACTER SET UTF8;

TCPDF requires the Imagick or GD extension to handle PNG images with alpha channel.

TCPDF requires the Imagick or GD extension to handle PNG images with alpha channel.

TCPDFは言わずと知れたPHPでPDFを作るライブラリですね。TCPDFで上記エラーが出たら、phpinfoでGDライブラリが入っているかどうか、pngがenabledになっているか、確認する必要があります。

gdが無かったらインストールする yumの場合

gd以外にも関連するもの含めインストールします。

yum -y install php-gd
yum -y install libpng-devel
yum -y install libjpeg-devel
yum -y install freetype-devel

参考

apt getの場合

aptのケースではライブラリの名称が微妙に異なるのかすぐインストールできませんでした。が、searchで検索しながら入れました

sudo apt search {パッケージ名部分一致}
$ apt-cache search gd | grep php
php-gd – GD module for PHP [default]
php7.2-gd – GD module for PHP
php-horde-image – Horde Image API
php-image-text – Image_Text – Advanced text maipulations in images
php-numbers-words – PEAR module providing methods for spelling numerals in words
$ sudo apt-get install php7.2-gd
$ apt-get install -y libjpeg-dev libpng-dev libfreetype6-dev

docker MySQL 後からバージョンをかえる

docker-compose.yml に記載しておいたMySQLのバージョンを後からやっぱり変えたい時。

Laravel5.4とMySQL5.6では相性が悪いので、MySQLのバージョンを上げることになったので、なんとなくメモ。
Laravel5.4から標準のcharasetがutf8mb4に変わったことに起因します

そこで、あとからやっぱりMySQLのバージョンを変更したい時の手順です。

docker imageなければ追加

docker pull mysql:5.7
docker-compose.ymlのMySQLのバージョンを5.7に変更
docker stop mysql56 docker
docker rm mysql56 docker
docker-compose up -d

一度MySQLコンテナごと破棄しているので、もう一度migrationを実行する必要があります。