ansible触ってみようとしたらvagrantのエラーにハマった(`nfs_export': wrong number of arguments (given 4, expected 5) )

ansible勉強しようとvagrant立ち上げようとしたら以下のエラーでハマった

/opt/vagrant/embedded/gems/2.1.2/gems/vagrant-2.1.2/plugins/hosts/bsd/cap/nfs.rb:11:in `nfs_export': wrong number of arguments (given 4, expected 5) (ArgumentError)`

その他にもいろいろ出たが、これだけが原因わからない。 調べてもそれっぽいのがこれしか出ない https://github.com/hashicorp/vagrant/issues/7655

vagrantとvitual boxを入れ直したらなおったらしいが自分の環境では直らず。。

試したこと

  • ansibleの設定ファイルの確認
  • vagrantfileのPrivate ipなどを変えてみる
  • vagrant global-statusで他に立ち上がっていないかチェック
  • Dockerを落とす
  • vagrant 入れ直し
  • vitualbox 入れ直し

結果~/.ssh/configをすべてコメントアウトしたら動いた (多分古い設定が邪魔していた)。

vagrant 立ち上げてansibleのプレイブックを適用してnginxを動かそうと試みるがつながらず、

あたり確認したが問題なさげ。 ipかぶっているのかと思い、一旦vagrant haltしてからprivate ip変えて立ち上げようとしたら また最初と同じエラーが(ip戻しても変わらず) ただ、気づかなかったがvagrant ssh で接続自体はできる。 かつnginxもつながった。

ただvagrant ssh ではいると以下のようなエラーがでるので、 仮想マシンは立ち上がったけど、何かがこけているっぽい? ただ一応ansible動かす環境はできているように見えるので一旦よかった (合間を見つけてエラーは解消したい)

sh: netsh: command not found
sh: cscript: command not found
It seems that you don't have the privileges to change the firewall rules. NFS will not work without that firewall
changes. Execute the following commands via cmd as administrator:
...

プレイブック適用した影響か、原因はよくわかっていないが切り分けのためにも saharaでvagrant 環境をロールバックできるようにしたほうがよさげ (今エラー出るやつも一旦box消していい気がするけどまた動かなくなったらと思うと怖いな。。)

https://qiita.com/muyuu/items/99df9135676f0f95f7e9

もともとはネットに転がってるプレイブックを探してさくっとlamp環境作ろうとしたのだけど全然うまく行かず 問題の切り分けに時間がかかってしまった(コツコツやったほうが近道だったぽい)。

f:id:addictionwhite:20180805191002p:plain

Vagrantd(CentOS7)でnginx 2

先日は静的ファイル(index.html)を表示させたので、phpを動かそうと思ったが思いの外はまった。
今回は勉強用に試しているだけだったので適当なバージョンのPHPをインストール

sudo yum -y install epel-release
wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
sudo rpm -ivh ./remi-release-7.rpm
sudo yum install --enablerepo=epel,remi-php70 php php-mcrypt php-mbstring php-fpm php-mysqlnd php-opcache php-apcu

nginxの設定修正
sudo vim /etc/nginx/conf.d/default.conf

location ~ \.php$ {
    #root html;
    root /var/www;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    #fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
    fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
    include fastcgi_params;
}

phpfpmの設定修正
sudo vim /etc/php-fpm.d/www.conf

;user = apache
user = nginx
;group = apache
group = nginx
# nginx と php-fpmを再起動し、設定を反映
sudo systemctl restart nginx
sudo systemctl restart php-fpm

/var/www/配下にindex.phpを作成

 <?php 
phpinfo(); 

http://192.168.33.10/index.php を叩くとphpinfoの画面でなく、index.phpファイルがダウンロードされる。
ここで原因がわからずはまる
実施したこと
* nginxのログファイルの権限を変える
* index.phpの権限を変える
* selinuxのチェック
* /etc/nginx/conf.d/default.conf , /etc/php-fpm.d/www.confの設定ファイルのチェック
(設定の誤り以外にもシンタックスエラーに一度気づかなかったのでチェックしておくこと
sudo systemctl status php-fpm.service (sudoをつけると詳細にエラーをだしくてれるっぽい)
nginx -t (こちらはsudo つけると正しく動くのにつけないとエラー出るケースが有ったのでつけないほうがいいかもしれない*権限系のエラー?よくわかっていない)
シンタックスエラーの状態で起動しようとすると結構分かりづらいエラーが表示されるので気をつけていたほうがよさそう

  • choromeで見ていた場合キャッシュで反映されない場合があるようなので別のブラウザなどで試す
  • nginxのerror.logを見る

    原因としては先日書いた
    /etc/nginx/nginx.confの設定のserverディレクティブが悪さをしていた(こいつをコメントアウトすればindex.phpが表示された)。
#       server {
#           listen        80;
#           server_name   test.example.com;
#           root          /var/www/;
#
#           location / {
#           }
#
#       }

無意識にあとから書いたディレクティブが上書きするものと思っていた。
nginx.confが最初に読み込まれる設定ファイル。これが他の設定ファイルを読み込む

include /etc/nginx/conf.d/*.conf;

新しい設定追記するときは
conf.d/default.confに追記するのが正しい。

以下のコマンドを叩くとincludeされたファイルを展開して設定ファイルの内容を1本の設定ファイルとして表示できる

 sudo nginx -T

参考

PHP - nginxサーバへphpファイルにアクセスするとダウンロードされてしまう(17285)|teratail

Vagrant + CentOS7 + nginx + PHP7 + php-fpm でFuelPHP1.8の仮想開発環境を構築する

[Sy] 【解決した】HomebrewでNginx + php-fpmの環境を作ろうとしたらPHPファイルがダウンロードされる | Syntax Error.

Vagrantd(CentOS7)でnginx

前々からやりたいと思いながらできていなかったので触り始めメモ。
いくらでも記事出るだろうけど、自分の忘備録用。

vagrantは簡単に動き見てみたいときに即興でできるのがいい。
ただ久々に触るとどこに何のVagrantfileがあったか忘れるので以下のコマンドで確認

vagrant global-status 

まずは静的ファイルを見れるようにしてみる。

nginx の導入(CentOSのデフォルトのリポジトリには入っていないとのこと)
CentOS7 に nginx導入

設定ファイル修正

 sudo vi /etc/nginx/nginx.conf

httpのディレクティブ内に以下を追記

        server {
            listen        80;
            server_name   static.example.com;
            root          /var/www/;

            location / {
            }

        }
     # 文法チェック
     sudo nginx -t
    # 起動
     sudo systemctl start nginx

/var/www配下に適当にidnex.htmlを作りアクセスするが繋がらない http://192.168.33.10/

nginxの方にもログが出ていなかったようなので selinuxの確認

$getenforce
Disabled

firawallを無効にすると表示された

    sudo firewall-cmd --add-service=http --permanent
    sudo firewall-cmd --reload

こう繋がらないとき当てずっぽうなのなんとかならないかな。

参考

runble1.com

Vagrant + CentOS7 + nginx + PHP7 + php-fpm でFuelPHP1.8の仮想開発環境を構築する

初プルリクとdockerメモ

他人のリポジトリにプッシュする場合はforkしてからでないといけない (もしくは権限をもらう) blog.qnyp.com

基本権限もらう形でやってたので、ちょっと混乱した。

また、今回docker-compose upでビルドした際にエラーが出力されたのだけど、 エラーの解決より再現に手こずった。

症状と対応は以下と同じなので割愛

E: Package 'libpng12-dev' has no installation candidate · Issue #1 · deskpro/deskpro-docker · GitHub

一度docker-compose.ymlを修正して、ビルドを通した後に もう一度エラーを再現しようとしても再現できず。 キャッシュまわりを疑ったりコンテナを削除したりしたけれども再現できず イメージを削除すると再現できた

docker images -aq | xargs docker rmi

イメージをベースにコンテナが生成されるらしいが、 ここらへんもう少し自分の中で整理したい

qiita.com

またもgithubにpushできない

たびたびpush しようとするとエラーが出る  

$ git push -u origin master
remote: Permission to addictionwhite/chef1.git denied to sublime0807.
fatal: unable to access 'https://github.com/addictionwhite/chef1.git/': The requested URL returned error: 403

sshの設定など色々変えてもぱっと解消できず。
何か作業しようとしたときこういうところに引っかかると厳しい(やる気と時間がなくなる) 対処

[remote "origin"]
 url = https://github.com/username/demo.git
↓
[remote "origin"]
 url = https://username:password@github.com/username/demo.git

のように URL に username:passwordを含めるようにする。 これが一番てっとり早いと感じた

引用元 teratail.com

 

docker触り始め1

dockerが動かなかったのでメモ

事象

$ docker build -t <tagname> .
$ docker run  -d -p 5000:5000 tagname
$ curl localhost:5000
docker curl: (7) Failed to connect to localhost port 5000: Connection refused

ここで詰まる。 何が原因かわからない(各コマンド時に特にエラーらしいエラーがなかったので) 最初はポートが正しく開けていないとあたりをつけて、色々調べる (dockerでcurl(7)がってくる記事がいくらかヒットして、これが原因と若干決めつけてしまうが解決せず)

Dockerfileとスクリプトを見直す (どちらも小さなスクリプトだったが、これを目視のみでデバッグするのは限界があると感じた)

-dオプションを外してdocker run実行したらスクリプトシンタックスエラーが出力された (-dオプションはバックグラウンドで実行) また忘れそうなるが、スクリプト修正した後再度docker buildしないと修正が反映されない。

何気なしに見たままオプションの意味を理解せず追加してはまってしまった。

あとdocker に限らずだけが、問題の正しい切り分けが必要だと感じた。 dockerでのデバッグの手順をもっと知らないといけない