C-limber's highへようこそ。
C-limber's highは山登りのサイトではなく、福岡システム開発WEB制作会社 C-limber(クライマー)株式会社の技術メモブログです。
福岡システム開発ホームページ制作をお探しの方はお気軽にご相談下さい。

2017年1月11日水曜日

[sendmail][ubuntu]メール送信でX-Authentication-Warningがでたら・・

23:46 Posted by 井口達也 , , , No comments

新年あけましておめでとうございます

今年もどうぞよろしくお願いいたします。

エンジニアの井口です。

またご無沙汰してしまいました。

今日は、みなさんが大好きであろう、
sendmailの事について書こうと思います。 笑


SPFレコードを設定しても消えないエラーがある

AWSからメールを送信する場合、迷惑メールフィルタに引っかからないように
awsの管理画面からSPFレコードを設定したりしますが・・
それでもまだ残るエラーがあります。
参考:SPF レコードについて - G Suite 管理者 ヘルプ

webサービスなどからメールを送信すると、
ubuntuの場合、www-data というユーザでphpのプログラムをうごかし、
その www-data というユーザが sendmailを動かし メールを送信することになります。
www-data というユーザは信用できるの? という部分で、エラーが出るようです。

rootじゃないやつが送ってきたから、スパムかもよ

ってことみたいです。
www-data でなくても、サーバ側でも正式にsendmailに認められてないユーザから
メールを送信するとこのエラーがでます
X-Authentication-Warning: ip-xxxxxxxxx.ap-northeast-1.compute.internal: www-data set sender to info@xxxxxx.com using -f

このエラーが出ていると、
SPFレコードを設定していても受け取ってくれないメールサーバがあります。

あいかわらずメール送信って・・
めんどくさいですね(> <)


www-data を 許可ユーザリストに追加する

www-dataにメール送信許可を与えます。
参考:configuration - sendmail: how to configure sendmail on ubuntu? - Stack Overflow



まずsendmailがmtaとして動いている確認
$ ps aux|grep sendmail
root     31485  0.0  0.2 100700  2744 ?        Ss   23:05   0:00 sendmail: MTA: accepting connections
ubuntu   31601  0.0  0.0  10460   948 pts/0    S+   23:33   0:00 grep --color=auto sendmail

その次は/etc/mail/submit.cfを編集

【重要】sendmail.cfをいじっても何も意味がないです! submit.cfを編集しましょう

submit.cf:phpなどでメール送信する場合はこちらを使うようです
sendmail.cf:こっちはデーモンモードでの起動となるようです (rootでの起動)

/etc/mail/trusted-usersファイルでの許可ユーザ制御がコメントアウトされているので
コメントを外します
$ sudo vi /etc/mail/submit.cf
- #Ft/etc/mail/trusted-users %[^\#]
+ Ft/etc/mail/trusted-users %[^\#]

/etc/mail/trusted-users に www-dataを追加
$ sudo vi /etc/mail/trusted-users
+ www-data

sendmailを再起動
$ sudo service sendmail restart
 * Restarting Mail Transport Agent (MTA) sendmail       [ OK ]

メール送信テストして、メールソースから
X-Authentication-Warning: ip-xxxxxxxxx.ap-northeast-1.compute.internal: www-data set sender to info@xxxxxx.com using -f
↑これが消えてればOK。

メールってめんどくさい

メールの送信って・・・
いろいろめんどくさいですね(> <)


↓↓引き続き募集中です(^^)

弊社ではシステム開発、Web制作, Iot案件など幅広く対応しております。
ビジネスプランをお持ちの方、WEBアプリを使って何か新しいビジネスを始めたい方、
僕達が力になれるかもしれません
是非お問い合わせ下さい
-----------------------------------------------
同時に、デザイナー、システムエンジニア、HTMLコーダーの方を求人しております。
サーバ周りからデザイン、システムまでワンストップでの開発を経験できますので、
WEB開発の事を学びたい方にぴったりな職場だと思っております。
またそういった向上心あふれる方と一緒に成長してきたいと思っておりますので、
興味を持たれた方はとりあえずご連絡下さい(^^)
-----------------------------------------------
福岡のシステム開発・Web制作 C-limber(クライマー)株式会社


2016年12月8日木曜日

[Ansible] Ansible2でのwith_itemsの使い方

16:18 Posted by 井口達也 No comments
お久しぶりです。エンジニアの井口です。

Ansible2からwith_itemsの使い方が
ちょっと変わったみたいです。

公式サイトでちょこっと説明されてます
Loops — Ansible Documentation

- name: Install System Packages
  sudo: yes
  apt: pkg={{ item }} state=latest
  with_items:
    - curl
    - wget
    - python-software-properties
これは使えますが、

- name: Install System Packages
  sudo: yes
  apt: pkg={{ item }} state=latest
  with_items: server.packages
これは使えません。
1系は使えてました。

2からは
- name: Install System Packages
  sudo: yes
  apt: pkg={{ item }} state=latest
  with_items: "{{ server.packages }}"
こんな風に

"{{ _______ }}"
でくくりましょう。


以上です(^^)


↓↓引き続き募集中です(^^)

弊社ではシステム開発、Web制作, Iot案件など幅広く対応しております。
ビジネスプランをお持ちの方、WEBアプリを使って何か新しいビジネスを始めたい方、
僕達が力になれるかもしれません
是非お問い合わせ下さい
-----------------------------------------------
同時に、デザイナ、エンジニア、コーダの方募集中です。
サーバ周りからデザイン、システムまでワンストップでの開発を経験できますので、
WEB開発の事を学びたい方にぴったりな職場だと思っております。
またそういった向上心あふれる方と一緒に成長してきたいと思っておりますので、
興味を持たれた方はとりあえずご連絡下さい(^^)
-----------------------------------------------
福岡のシステム開発・Web制作 C-limber(クライマー)株式会社


2016年4月25日月曜日

[Lambda][Elactic Transcoder]動画サービスの構築

17:59 Posted by 井口達也 , No comments
こんにちは!

エンジニアの井口です。

動画のニーズが高まってきている昨今です。
動画を動画ホスティングサービスではなく、自身のサービスとして保持したいというご要望も増えてきています。

動画のホスティングにyoutubeを利用するにしても、
ユーザに動画をアップしてもらうタイプのwebサービスにはその方法も使えません。

動画サービスを自社で管理する多大なコスト

動画を自社サービスとして保持する場合、必要になることが
・デスクトップ、モバイルデバイス、タブレット、およびテレビでの再生に最適化された、出力フォーマットにエンコード
・そのためにそれぞれのエンコード用のインフラ群構築
などになるのですが、
サービスを徐々に軌道に乗せながら、それらを維持、構築していくには、大きな予算が必要となります。

Elastic Transcoderの活用で開発・運用コストを削減

そんなときにコストを押さえつつ、非常に有効な手段となるのが、
AWSのElastic Transcoderです。


Amazon Elastic Transcoderのサービス概要
Elastic Transcoderは他のAWSサービスのように必要なときに必要なときだけ、
各動画エンコードへの変換などを
使った分だけ利用可能なサービスです。

このサービスは他のAwsのサービスである、Lambda(ラムダ)と非常に相性がよく、
今までの方法とはまったく別次元のハンドリングの良い開発が可能となりました。


AWSのストレージ機能である、S3にアップされた動画を自動的にLambdaが検知。
Lambdaが勝手にTranscoderを起動し、Transcoderのパイプラインに乗って
指定したデバイス用に変換された動画を、自動で指定されたS3に自動保存という芸当を
やってのけてくれます。

いままでは動画のアップロード、複数のエンコード、保存と、
複雑なシステム・インフラを構築せざるをえなかったものが、
クラウド側で自動でイベントが立ち、そのイベントが他のサービスに伝播し、それトリガーとして
やってくれるという画期的なサービスです。

プログラマーは各サービスを繋ぎ、
トリガー毎に発行されるにイベントに仕掛けを仕込むだけでよくなりました。


エンジニアにとって、プログラミングのスキルも当然大事ですが、
このようなクラウドのサービスの特性を理解し、
サービス同士の連携や、設定をこなせることもより重要になってきていると感じています。


動画サービスをご検討の方、ご相談下さい

動画を自社で管理されたい方や、
動画サービスを構築・運用されたい方など、
ご相談ありましたら、お気軽にお問い合わせ下さい。



↓↓引き続き募集中です(^^)

弊社ではシステム開発、Web制作, Iot案件など幅広く対応しております。
ビジネスプランをお持ちの方、WEBアプリを使って何か新しいビジネスを始めたい方、
僕達が力になれるかもしれません
是非お問い合わせ下さい
-----------------------------------------------
同時に、デザイナ、エンジニア、コーダの方募集中です。
サーバ周りからデザイン、システムまでワンストップでの開発を経験できますので、
WEB開発の事を学びたい方にぴったりな職場だと思っております。
またそういった向上心あふれる方と一緒に成長してきたいと思っておりますので、
興味を持たれた方はとりあえずご連絡下さい(^^)
-----------------------------------------------
福岡のシステム開発・Web制作 C-limber(クライマー)株式会社


2016年4月15日金曜日

[shibboleth]シボレスのSPを設定する

15:04 Posted by 井口達也 , No comments
こんにちは!

エンジニアの井口です。

学校でwebシステムを作る時など、
既存のID,パスワードでログインできないか??

そのようなご要望を多く頂きます。
その時よく聞くソフトウェアの名前はshibboleth(シボレス)。
一つのアカウントで複数のサービスへのログインを可能にする、
SSO(シングルサインオン)を実現するオープンソースのソフトウェアです。
Shibboleth


シボレスにはIdPとSPの認証する側、される側とあるのですが、
大体、shibbolethを導入しようとする大きな組織はIdPを自身で持っているか、
大きなIdPサービスに登録して利用しています。

ですので、案件で求められるのは、SPの設定というふうになります。


SPの設定方法

英語だけど公式サイトを見る

日本語のサイトもありますが、情報が古かったり、特殊な例だったりしますので・・・
NativeSPLinuxInstall - Shibboleth 2 - Confluence

SELinuxがOnだとインストールに失敗します。(インストール時のみ)
$ getenforce
Enforcing
$ sudo setenforce 0
$ getenforce
Permissive
PermissiveになっていればOK


インストール前の設定

NTPをインストール(インストールされていればOK)


CentOSが32bitか64bitか調べる。

$ uname -a
Linux hogehoge_host ____________.x86_64 #1 ____________ x86_64 x86_64 x86_64 GNU/Linux
今回は64bitです。
(yumでインストールする場合、分岐するので必ず調べる)


yumする前にリポジトリ追加

http://download.opensuse.org/repositories/security://shibboleth/
↑上記サイトで、該当OSを選択し、security:shibboleth.repoをwgetする
$ wget http://download.opensuse.org/repositories/security://shibboleth/CentOS_7/security:shibboleth.repo
$ ls
security:shibboleth.repo
$ sudo cp security\:shibboleth.repo /etc/yum.repos.d/shibboleth.repo

mod_sslをインストール

$ sudo yum install mod_ssl

Install via RPM(yum)

注意点

32bitか64bitか調べた上でyumすること
これについては日本語サイトには書いていない
$ sudo yum install shibboleth.x86_64
いろいろインストール・設定してくれている(以下本家サイトから抜粋)
- Shibboleth configuration files will be placed at /etc/shibboleth/ and the necessary Apache configuration in /etc/httpd/conf.d/shib.conf
- shibd will be installed to /usr/sbin and may be managed using /sbin/service and /sbin/chkconfig
- An appropriate version of mod_shib and other pluggable modules will be installed to /usr/lib/shibboleth/
- Logs will be located in /var/log/httpd/native.log and /var/log/shibboleth


公式サイトに沿って設定

◯In httpd.conf:
UseCanonicalName On
Ensure that the ServerName directive is properly set, and that Apache is being started with SSL enabled.
◯Restart Apache.
◯/usr/sbin/shibd must be independently started and run in order to handle requests. The daemon should be loaded and monitored along with all other major services.
◯Restart shibboleth
/sbin/service shibd start
◯By default, the Shibboleth module is configured to log information on behalf of Apache to /var/log/httpd/native.log
◯shibd creates its own separate logs at /var/log/shibboleth
$ cd /etc/httpd/conf
$ sudo vi httpd.conf
+# 追記
+UseCanonicalName On

$ cd /etc/httpd/conf.d
$ sudo vi ssl.conf
-ServerName www.example.com:443
+ServerName ____your.domain____:443

$ sudo service httpd restart
Redirecting to /bin/systemctl restart  httpd.service

$ sudo /sbin/service shibd start
Redirecting to /bin/systemctl start  shibd.service


shibbolethのログを確認するには

ここが詳しいです。
SPセッティング - GakuNinShibInstall - meatwiki
/var/log/shibboleth/{shibd.log, shibd_warn.log}
  SPに関する、SAML関連、Metadata関連、セキュリティ関連のログです。通常は、こちらのログを参照ください。

/var/log/shibboleth-www/{native.log, native_warn.log}
  Apacheモジュールmod_shibのログです。shidb.logでは情報が足りない場合は、こちらのログを参照ください。
  (SP 2.5.3およびそれ以前からアップデートして使っている場合は/var/log/httpd/以下に出力されている場合、もしくは出力に失敗している場合があります。最新版にアップデート後 /etc/shibboleth/native.logger.dist を参考にして出力先を上記に変更してください。)

/var/log/shibboleth/transaction.log
  SPのトランザクションに関するログです。セッションの開始や終了、属性等が含まれます。
なお、これらログファイルに関する設定は、/etc/shibboleth/{shibd.logger , native.logger} にあります。



Shibboleth SPの設定(xmlの設定)

xmlの設定については接続するIdPにより癖が随分違う(と思う)

ポイントと思うのは

---------------
☆example-shibboleth2.xmlというファイルがイントール後に/etc/shibbolethの中にある。
これをコピーして作成すること。
そうしないと、
「SAML 2.0 ACS endpointのエラーどーちゃらこーちゃら」がでて全く進めなくなる。
上記エラーは、
系の設定の記述が無いということらしいので、
example-shibboleth2.xmlから作成という流れ
---------------
shibboleth2.xmlを変更したら、shibdとapacheの両方をリスタート!
---------------



ログイン後にエラーがでたら・・・

2016-03-30 15:05:23 WARN Shibboleth.SSO.SAML2 [25]: found encrypted assertions, but no CredentialResolver was available
2016-03-30 15:05:23 ERROR Shibboleth.SSO.SAML2 [25]: failed to decrypt assertion: No CredentialResolver supplied to provide decryption keys.
SSLのキーは暗号化してあると読み込めない!
形式を変更すればOK。
$ sudo openssl rsa -text -in キーファイル名
これをshibboleth2.xmlに記載してapache, shibboleth再起動




↓↓引き続き募集中です(^^)

弊社ではシステム開発、Web制作, Iot案件など幅広く対応しております。
ビジネスプランをお持ちの方、WEBアプリを使って何か新しいビジネスを始めたい方、
僕達が力になれるかもしれません
是非お問い合わせ下さい
-----------------------------------------------
同時に、デザイナ、エンジニア、コーダの方募集中です。
サーバ周りからデザイン、システムまでワンストップでの開発を経験できますので、
WEB開発の事を学びたい方にぴったりな職場だと思っております。
またそういった向上心あふれる方と一緒に成長してきたいと思っておりますので、
興味を持たれた方はとりあえずご連絡下さい(^^)
-----------------------------------------------
福岡のシステム開発・Web制作 C-limber(クライマー)株式会社


2016年4月8日金曜日

[Yii2]GridViewのfilter機能であれこれやりたい

12:55 Posted by 井口達也 , No comments
こんにちは エンジニアの井口です
Yii2のGridViewのお話。

一覧ページを作成するのに非常に強力なGridViewですが、
これまた強力なfilter機能を備えています。

各カラムで設定したmodelのattributeなどで勝手にfilterリングしてくれます。
↓GridViewのUI


GridViewのドキュメント
GridView, yii\grid\GridView - Yii Framework 2.0 API Documentation

今日はそのfilterで色々なことをやりたい時のメモです。

■セレクトボックスで検索させたい!


このようにセレクトボックスでフィルタリングさせたいことは多々あると思います。

コードは
[
    'attribute' => 'machine_id',
    'filter' => \yii\helpers\ArrayHelper::map(Machine::find()->asArray()->all(), 'id', 'name'),
    'value' => function($data) {
        return Html::a($data->machine_name, ['/machine/view', 'id' => $data->machine_id]);
    },
    'format' => 'html',
],
こういうふうにします。

ポイントは、
  1. filterパラメータで配列を指定する!
  2. どの検索項目に当たるか?はattributeパラメータで指定
  3. \yii\helpers\ArrayHelperを使ってその場で設定用配列をカジュアルに作成
  4. formatをhtmlまたはrawにしてリンクを表示できるようにする
以上となります。

これでFilter部分にセレクトボックスが出現します。
選択の配列が入り組む場合は、filterで渡す配列をmodelの方にstaticなmethodとして書いちゃってもいいですね。

ArrayHelperのドキュメント
ArrayHelper, yii\helpers\ArrayHelper - Yii Framework 2.0 API Documentation

■datePickerで検索させたい!!


このようにフィルター部分にでDatePickerを表示させたいこともあるかと思います。

コードは
[
    'label' => '利用日',
    'attribute' => 'use_day',
    'value' => 'ymd_date',
    'format' => 'raw',
    'filter' => \yii\jui\DatePicker::widget([
        'model' => $searchModel,
        'attribute' => 'use_day',
        'language' => 'ja',
        'dateFormat' => 'yyyy-MM-dd',
        'options' => [
            'class' => 'form-control'
        ]
    ]),
],
こうなります。

ポイントは、
  1. filterパラメータで\yii\jui\DatePickerを指定する!
  2. どの検索項目に当たるか?はattributeパラメータで指定
  3. filterパラメータの中のmodelとattributeも忘れず指定! ←重要
  4. filterパラメータの中の、modelで、$searchModelを指定!(今ループさせてるmodelを指定する)
  5. labelはおこのみで指定(attributeの自動取得に任せても良い)
以上となります。


これで簡単にフィルター部分にDatePickerが出現します。

filterにdatepickerを表示させたりということを扱っているサイトが少なかったので、
メモしておきます。

DatePickerについてはGithubにも他にいろいろあるようですが、
公式のjuiでもうまくできたので、
いまのところ他のDatePickerを使う必要ないかなって思ってます。

DatePickerのドキュメント
DatePicker, yii\jui\DatePicker - Yii Framework 2.0 API Documentation


この記事がだれかの助けになれば幸いです。




↓↓引き続き募集中です(^^)

弊社ではシステム開発、Web制作, Iot案件など幅広く対応しております。
ビジネスプランをお持ちの方、WEBアプリを使って何か新しいビジネスを始めたい方、
僕達が力になれるかもしれません
是非お問い合わせ下さい
-----------------------------------------------
同時に、デザイナ、エンジニア、コーダの方募集中です。
サーバ周りからデザイン、システムまでワンストップでの開発を経験できますので、
WEB開発の事を学びたい方にぴったりな職場だと思っております。
またそういった向上心あふれる方と一緒に成長してきたいと思っておりますので、
興味を持たれた方はとりあえずご連絡下さい(^^)
-----------------------------------------------
福岡のシステム開発・Web制作 C-limber(クライマー)株式会社


2016年4月4日月曜日

[Yii2]backendをサブドメイン使わずに簡単に設置する方法

17:31 Posted by 井口達也 , No comments
こんにちは エンジニアの井口です
今日もYii2のお話です。

backendとfrontendにわかれたapp構造で、
・サブドメインを使わずに
・構造を保ったままで
簡単に設定・設置する方法です。

まぁ、やり方はすべてここに書いてあります。
yii2-app-advanced on single domain (Apache, Nginx) | Wiki | Yii PHP Framework

ln で シンボリック・リンク を作る。以上です!


$ cd /path/to/project/frontend/web
$ ln -s ../../backend/web backend

以上で完了です。

上記の例では、
ドメイン/backendで backendにアクセスできるようになります。

こういう構造に柔軟に対応できうように、
URLの指定は、
URLクラスを通して設定しましょうね。

Urlクラスの作り方は公式ドキュメントを参考に・・
Url, yii\helpers\Url - Yii Framework 2.0 API Documentation
Routing and URL Creation - Handling Requests - The Definitive Guide to Yii 2.0


以上です。




↓↓引き続き募集中です(^^)

弊社ではシステム開発、Web制作, Iot案件など幅広く対応しております。
ビジネスプランをお持ちの方、WEBアプリを使って何か新しいビジネスを始めたい方、
僕達が力になれるかもしれません
是非お問い合わせ下さい
-----------------------------------------------
同時に、デザイナ、エンジニア、コーダの方募集中です。
サーバ周りからデザイン、システムまでワンストップでの開発を経験できますので、
WEB開発の事を学びたい方にぴったりな職場だと思っております。
またそういった向上心あふれる方と一緒に成長してきたいと思っておりますので、
興味を持たれた方はとりあえずご連絡下さい(^^)
-----------------------------------------------
福岡のシステム開発・Web制作 C-limber(クライマー)株式会社


2016年3月26日土曜日

[Composer]なんかまたエラーがでて進めない

13:31 Posted by 井口達也 , No comments
こんにちは、エンジニアの井口です。

composerのfxp/composer-asset-pluginはめんどくさい

便利なcomposerですが、
ちょっと前にcomposerでエラーがでて、
composer global require "fxp/composer-asset-plugin:~1.0.3"
なんかしたりして対処してめんどくせってなってましたが、
最近やるとまたなんかエラーが出ると・・

fxp/composer-asset-pluginに関しては、ちょこちょこと推奨バージョンが変更になっているようです。
めんどくさいので、対処法メモしておきます。

参考:solr - yii2 composer update fatal error - Stack Overflow

-------------

1) Composer Asset Pluginを削除

composer global remove "fxp/composer-asset-plugin"

2) fxp/composer-asset-pluginの推奨バージョンをインストール

推奨バージョンはココで確認
composer global require "fxp/composer-asset-plugin:*"

3) composer installして、エラーでるならvendorフォルダ内とcomposer.logを消去して再度試す



以上メモでした。



↓↓引き続き募集中です(^^)

弊社ではシステム開発、Web制作, Iot案件など幅広く対応しております。
ビジネスプランをお持ちの方、WEBアプリを使って何か新しいビジネスを始めたい方、
僕達が力になれるかもしれません
是非お問い合わせ下さい
-----------------------------------------------
同時に、デザイナ、エンジニア、コーダの方募集中です。
サーバ周りからデザイン、システムまでワンストップでの開発を経験できますので、
WEB開発の事を学びたい方にぴったりな職場だと思っております。
またそういった向上心あふれる方と一緒に成長してきたいと思っておりますので、
興味を持たれた方はとりあえずご連絡下さい(^^)
-----------------------------------------------
福岡のシステム開発・Web制作 C-limber(クライマー)株式会社