Vagrant + VirtualBox + PuTTY で 開発環境を作る
PHPの開発環境を作ろうと、ドットインストール ローカル開発環境の構築 [Windows編]をやってみた。
手順
- Vagrant,VirtualBoxインストール
- Vagrant
vagrant up
で起動 - PuTTYインストール、設定
- Vagrant ログイン
- OSアップデート
- gitインストール
- gitクローン
- スクリプト実行(言語のインストール、設定の反映)
- Cyberduckインストール、設定
PHPフォルダーを作成しindex.phpにテストコードを書いて、PuTTYにphpコマンド入力しサーバーを立ち上げて反映されるところまで確認した。
[Vagrant] default: SSH auth method: private keyから進まない
Vagrantの vagrant up
が、default: SSH auth method: private key から一向に進まなかったので調べて参考にさせてもらいました。
原因
VT-xが有効になっていない。
要は、仮想化するために必要な設定が有効になってない。 Windows 10 HOME なので、Shift + 再起動で起動。
変更したところ
- [Advanced] Virtualization Technology: Enabled
- [Security] Virtualization Technology: Enabled
これら2つを有効に。
VT-xの状態を確認するには、VirtualChecker3を使うとわかりやすい。
余談
Vagrantfileは、 end
までコメントアウトを解除してGUIをtrueに。
config.vm.provider "virtualbox" do |vb| # Display the VirtualBox GUI when booting the machine vb.gui = true # # # Customize the amount of memory on the VM: # vb.memory = "1024" end
もっとハマるかなと思ったけど、意外と簡単に出来た。
ページネーションが表示されない・リンクが取得できない・表示件数を変えたいなどの処理で苦戦したまとめ
今回の実装で困った箇所と問題
JS
- 画面の高さを取得してスライダーのイメージを内包してる要素のサイズを変えるとspの時にダサい
- スライダーで
<``>
ボタンを押した後の処理で、自動再生を再開始させるのは手間がかかる - フルードイメージは元画像の画質を考慮してmaxをそれ以上に広げないようにしないと画像荒くてダサい
今回の対処策
1は、JS内で読み込みの条件分岐をする or CSSのメディアクエリと!importantで力業
2は、ボタンを押された時点で自動再生を諦める
3は、<img>
そのものにmaxの指定と外包している要素にメディアクエリで適切な単位を指定
WordPress/PHP
原因と解決策、対処
1の、一ページ当たりの投稿数が反映されない場合はまずWP管理管理画面で設定可能なデフォルトの設定が反映されていないか確認すること。
また、カスタム投稿を使用している場合は、is_archive()
がパラメーターを受け付けないため、適宜別の方法でif文の条件分岐を使う。
posts_per_page
に件数を指定する必要がある。
また、それでも適応しない場合はクエリを書き換えるか、別にクエリを作る必要がある。 今回は、いくつか用意したカスタム投稿タイプのパターンの中で一部のアーカイブページのみクエリを書き換えて、デフォルトのクエリと応用して対応した。
2の、ページネーションはURLの設定をリライトで書き換えた。リンク先の取得で困った。
実装したかったのは、http://domain/slag/pagetitel/page/num/
で別のURLで書き換えたリンク先が404になったり、デフォルトのURLですら404になったり苦戦した。
この場合、万が一うまく行かない場合はサーバー側の問題であるときもあるので、違う環境で試して本番でだけ表示がされないような場合はサーバーも疑う。
あと、サーバー側にもキャッシュがあるので、クリアしてみる必要もあるかも(この場合、プラグインを使用するのがいいが動かなくなる可能性があるためバックアップと状況で見定める必要があるのを念頭に置いておくこと)
リライトと、/page/num/
リダイレクトを禁じて対処した。調べてみて試したけど、リダイレクトの処理は不要かも。
3の、function.phpで条件分岐の為に使ったis_archive()
がパラメータを受け付けなかったため、is_post_type_archive()
を使用して、スラッグを指定して対応した。
逆に、適応できるスラッグとできないスラッグが出たためデフォルト設定をうまく使用し要件を満たしたので原因解明まで至っていない。
この辺は、設計の甘さが関係しているかと推測されていて、コンテンツの呼び出しに使った関数やループの兼ね合いだと考えている。
ページネーションを呼び出すためにposts_per_page
を書き換えて使用したページではうまく適用されたが、適用したかったテンプレートファイルに同じようなコードを使用しても表示されなかったため、そもそもposts_per_page
が書き換えられていない印象を受けた。
次に同じことで困ったら、原因はこの辺かなと思う。
今後の対策
今回の傾向から考えるにWordPressでつまずくときは、大体ループ処理。 クエリの仕様と、関数がパラメーターを受け付けているのかなど、WordPress Codex見ながら疑う方がいいかもしれない。
反省点としては、最初にもう少し設計を考えた方が良かったかも。