tohokuaikiのチラシの裏

技術的ネタとか。

Confluenceのプラグイン開発を承ります。ご連絡はこちらのホームページからお願いいたします。

Laravel5.4でAuthをつけたときにMySQLのmigrationでエラー

artisan migrateするとエラー。

specified key was too long max key length is 767 bytes

原因はだいたいここら辺で。

qiita.com

で、対策としてあげられている2つ

  • 使用するcharasetをutf8mb4から変更する は、app/Providers/AppServiceProvider.php
<?php
class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        //
        Schema::defaultStringLength(191);
    }

というようにbootでvarcharのデフォルト値を191にするということ。

  • カラムの最大値を変更し、767bytes以上の文字列が入らないようにする

絵文字いらないって言うのであれば、config/database.php

        'mysql' => [
            'driver' => 'mysql',
            ..(略)..
            'charset' => 'utf8mb4',
            'collation' => 'utf8_unicode_ci',

        'mysql' => [
            'driver' => 'mysql',
            ..(略)..
            'charset' => 'utf8',
            'collation' => 'utf8_unicode_ci',

にする。こっちの方が良い感じがする。

pom.xmlで依存性jarをローカルに置く方法

  1. pom.xmlに依存性のあるjarを設置する
  2. ${basedir}はpom.xmlのある位置なので、以下の記述をdependenciesに設置する
        <dependency>
            <groupId>jp.co.example.confluence.plugins</groupId>
            <artifactId>example</artifactId>
            <version>1.00.01</version>
            <scope>system</scope>
            <type>jar</type>
            <systemPath>${basedir}\example-1.00.01.jar</systemPath>
         </dependency>

ホンダS660の販売台数推移

データは一般社団法人 全国軽自動車協会連合会 - 統計から

年月 販売台数
2015年3月 19
2015年4月 1411
2015年5月 807
2015年6月 1095
2015年7月 1155
2015年8月 858
2015年9月 1144
2015年10月 1019
2015年11月 949
2015年12月 839
2016年1月 993
2016年2月 949
2016年3月 1318
2016年4月 930
2016年5月 855
2016年6月 1037
2016年7月 902
2016年8月 556
2016年9月 935
2016年10月 953
2016年11月 531
2016年12月 339
2017年1月 367
2017年2月 348
2017年3月 493

f:id:tohokuaiki:20170427174615p:plain

累計20802台
今年に入ってから完全に一回りしたって感じだな。

CentOS6で起動時にfsckが走って起動できない

ファイルシステムにエラーが出て起動しない。

起動中にfsckが走って、最後に

unexpected inconsistency run fsck manually

って出てダメになってしまう。

シングルユーザーモードで入ってルートマウントを解除して手動でfsckを掛けろということらしい。その手動までいけない。

grubの起動画面で、起動オプションに 「fastboot」「single」を追加する。

これで起さっきのところはすっ飛ばして起動して…と思ったらswapの有効化のところで止まってる。

なんかダメなんか…これ。

って思ったら、さくらVPSのサポートに書いてあった。。。

help.sakura.ad.jp

以下の editモード に変更した状態で 『 console=tty0 console=ttyS0,115200n8r crashkernel=auto 』の文字をバックスペースキーで削除し、 『半角スペース』と『半角数字の1』を入力して、キーボードの「Enter」キーを押して editモード を終了します。

罠といえば、このオプションの行が長くて2画面(しかも横スクロール)あるから最後までちゃんと消すことかな。

あとはfsckを掛ける

www.drk7.jp にあったように、fsckを掛ける。

/etc/fstab見るとext4で、デバイスはdfコマンドで/dev/vda3だったので

# fsck -t ext4 /dev/vda3

でひたすらYキーを押す。修行である。

Magento2.1をComposerを使ってインストールする

普通にZIP持ってきてインストールする方法はこちらなのですが、せっかくなのでComposer使ってやってみましょう。アップデートとかあった際にupdateコマンド一発で何とかしてくれそうですしね。 magento.flatz.jp

環境設定

普通に、Ubuntu16.04を使ってインストール

PHP

$php -v
PHP 7.0.15-0ubuntu0.16.04.4 (cli) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.0.15-0ubuntu0.16.04.4, Copyright (c) 1999-2017, by Zend Technologies

追加モジュール

apt-get install -y php7.0-curl php7.0-dev php7.0-gd  php7.0-intl php7.0-mcrypt php7.0-mbstring php7.0-mysql php7.0-xml php7.0-soap php7.0-xsl php7.0-zip php7.0-json

php.iniに設定値追加

date.timezone = 'Asia/Tokyo'
memory_limit = 2048M
upload_max_filesize = 200M
post_max_size = 200M
allow_url_fopen = Off

これくらいかな。。

allow_url_fopen = Off はダメだった。Extensionをインストールする時にエラー出された。

MySQL

5.7をインストール

mysql> select @@version;
+-------------------------+
| @@version               |
+-------------------------+
| 5.7.17-0ubuntu0.16.04.1 |
+-------------------------+

/etc/mysql/mysql.conf.d/mysqld.cnf を編集

character-set-server=utf8
max_allowed_packet      = 128M
innodb_buffer_pool_size = 512M
innodb_log_file_size=128M

インストール作業

こちらの記事にしたがって、インストール開始。 devdocs.magento.com

Composerのインストール

なんとなくこれはapt-getではなくユーザー権限で。

~/bin$ curl -sS https://getcomposer.org/installer | php
All settings correct for using Composer
Downloading...

Composer (version 1.4.1) successfully installed to: /home/magento/bin/composer.phar
Use it: php composer.phar


~/bin$ ln -s composer.phar composer

.bashrcに

export PATH=$PATH:~/bin

Magentoのインストール

DocumentRootを作成し、https://account.magento.com/customer/account/create/ で作成したアカウントでcreate-projectする。 以下ではwwwディレクトリにMagentoをインストールする場合。

$ composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition www

    Authentication required (repo.magento.com):
      Username: xxxxxxxxxxxxxxxxxxxxxx
      Password:

この時、UsernameとPasswordを求められる。これは https://account.magento.com/customer/account/create/ のUsernameとPasswordではない。

Magento.comのアカウントページ > Marketplace > My Access Keys > Magento2の箇所から作成したPublicKeyとPrivateKeyのキーペアをUsername/Passwordとして入力する。

結構時間かかるけど、あとはComposerがインストールを進めてくれる。

ファイルのパーミション変更

Apacheがファイルを書き込んだりできるように、インストール作業を行ったユーザーをApache実行権限グループに入れ、そのグループに書き込み権限を与える。

Apache実行権限ユーザーの確認

レンタルサーバーなどでsuExecしてればApache実行=ファイルオーナーなので、ファイルのパーミションは問題ないのだけど、そうでないときはこの手の変更を行う。

$ ps auwx|grep apache
root       305  0.0  0.8 411924 36220 ?        Ss   14:35   0:00 /usr/sbin/apache2 -k start
www-data   384  0.0  0.4 412776 18800 ?        S    14:40   0:00 /usr/sbin/apache2 -k start
...


$ groups www-data
www-data : www-data

ということで、Apacheを実行しているwww-dataユーザーのグループであるwww-dataグループにインストールを実行したアカウントを入れる。

# usermod -g www-data magento
# groups magento
magento : www-data adm cdrom sudo dip plugdev lpadmin sambashare
対象ファイルにGroup書き込みができる設定を行う

対象となるのは以下の5つ * vendor * app/etc * pub/static * pub/media * var

$ find var vendor pub/static pub/media app/etc -type f |xargs -I{} chmod g+w {}
$ find var vendor pub/static pub/media app/etc -type d |xargs -I{} chmod g+ws {}

ファイルグループをApache実行グループに変更し、magentoコマンドに実行権限を付与。

chown -R :www-data . 
chmod u+x bin/magento

インストールセットアップ

webからとコマンドラインからセットアップするのと2つあるみたい。

コマンドラインから

Webブラウザから

webからの方が簡単かな。