タグ: サーバー
開発環境の整備(Vagrant+VirtualBox+CentOS7.6+PHP7.1)【#np2020】
ローカルの開発環境として、Vagrantを使います。Macの方がセットアップ・運用共にが楽なんですが、Windowsでも問題なくできます。
概要
- 使用OS:Windows 7
- ゲストOS:CentOS 7.6
- 仮想環境:Vagrant 2.2.2 + VirtualBox 6.0.0
手順
- VagrantとVirtualBoxをインストール
- CentOS7.6を追加してVagrant起動
- PHP 7.1をインストール
参考サイト
基本的には、こちらの記事を参考にさせていただきました。 Vagrant + VirtualBoxでWindows上に開発環境をサクッと構築する – Qiita Windows上でVirtualBox+Vagrant+CentOSによる仮想環境構築 – Qiita ただ記事と時差があるのか個別にハマったところも何点かあったので、それらについてはまた別の記事を参考にしています。サイトリニューアルの話がなんだか大掛かりになってきてる【#np2020】
※リニューアルあるあるです 少し前に サイトのリニューアルをしようかな という話を書きまして、ローカルでBootstrapでテンプレート作ったり、SSLに対応させたり してたんですが、その過程で重要度の低いサイトから順に、GitHubと連携させつつsvnからgitに移行としようとしていて衝撃が。サーバのOSが古すぎて最新版のOpenSSLが入らず、GitHubと連携できない。マジで。 使っているOSはCentOS5.6で確かに古い。今のサーバ(さくらのVPS)を契約した時点で既に大分枯れていたと思うんだけど、使い慣れてるからって言う理由で選択したんだよね。個人サイトの環境なんだからもっと冒険しておけば良かった。 ここでGitHubを諦めるという選択肢ももちろんあるんですけど、仮にサーバが止まっても収入がなくなるわけでも責任問題になるわけでもなし、じゃあもこの際サーバを引っ越しましょうかということに。なんでそうなる。
【メモ】Vagrant で共有フォルダのマウントに失敗する
試したいことがあって通常使用しているのとは別にテスト用にレポジトリをcloneしてVMを作るということをしたらば、次の様なエラーが。
要するに共有フォルダがマウントできない、そもそもvboxsfが見つからんと言われているみたいです。Guest Addtionsがちゃんと読み込まれてないっぽい? 上記エントリではプラグイン「vbguest」をインストールしておけば解決してくれると書かれているのですが、僕の環境ではどうも解決してくれない。「解消しない場合」という項目にあったこちらを参照したところ、逆に「vbguest」が問題になるケースがあるとのこと。 つまりこう:Vagrantで共有フォルダのマウントに失敗するときの対処方法 – Qiita
Failed to mount folders in Linux guest. This is usually because the “vboxsf” file system is not available. Please verify that the guest additions are properly installed in the guest and can work properly. The command attempted was: (中略) The error output from the last command was: /sbin/mount.vboxsf: mounting failed with the error: No such device
なるほど。 結局どうしたらいいかっていうと、Guest OSのkernelをアップデートすれば幸せになれるらしいので、次のコマンドを実行。vagrant-vbguestプラグインがGuestAdditionsを無効にしてしまう – Qiita
- VirtualBoxのバージョンとGAのバージョンが異なるためvbguestプラグインがGAの再ビルドを始める
- インストール済みGAが削除される
- アクティブなkernelと同じバージョンのkernel-develをインストールしようとするが、より新しいkernelが公開されているのでみつからない
- GAのビルドが失敗し、GAが動作しない状態に
$ vagrant ssh -c 'sudo yum update -y kernel'
$ vagrant reload
その上で vagrant reload してやると、
- 正しい kernel-debel を取得する
- 正常に GuestAddtions が更新される
- 正常にマウント出来る
ブログをSSL化しました。
自動的にリダイレクトするようにはなってますが、今後は以下のURLでアクセスしてください。 よろしくお願いします。 https://nplll.com 長いこと「やらなきゃなー」と思いつつ面倒で放置していたんですけど、ちょっと時間が取れそうなタイミングが合ったのでえいやっとやってみました。結果から書くと、SSLに対応するだけだったらくっそ簡単なので、コマンドライン打つのに抵抗が無い程度の人はみんな今すぐやったら良いと思う。もっと早くやれば良かった。うちの環境は、ムームードメイン+さくらVPSなんだけど、さくらのSSLを使えば超簡単にできるのでオススメ。価格も年972円と超安い。 具体的な作業手順はこちらを参考にしてください。 SSL証明書を取得しよう – Qiita さくらVPSにSSL証明書を導入しHTTPS通信の構築 – Qiita サイト認証とか確認とかクローラー巡回のタイミング次第で10-30分程度の時間が掛かる場合もあるけれど、順を追ってやっていけば大丈夫。
gettextのmo/poファイルを更新したらApacheを再起動する
サイトを国際化するにあたってgettextを使って、mo/poファイルを作って翻訳を行うということはよくあり、今触っているシステムでもFuelの下で(Fuelのi18nは使わずに)gettextを使って日本語版と英語版の切り替えを実現しています。当然、このファイルは頻繁に更新されるわけですが、ローカルで確認していると更新後にロケールが正しく取得されずに日本語版で英語が表示されてしまうことがよくあります。何度かページ更新したり、時間をおいたりすると直るんですが、ローカルならまだしも本番環境で同じことが起こったら軽く事故ですね。ファイルサイズとかサーバスペックとかでキャッシュ更新タイミングが決まってるのか、運良く本番環境では発生していなかったようですが。
サーバ引っ越し含めていろいろと変更を検討中
この件への対応で、上手く行かなかった話の続き。 サイトをSSLに対応させないとGoogle Chromeに怒られるようになるらしい | mutter
サイトをSSLに対応させようと思って上手く行かなかった
先日の日曜日、久々の何も予定がないお休みということで、朝からこの対応をしていたのだけど。 サイトをSSLに対応させないとGoogle Chromeに怒られるようになるらしい | mutter 上手く行かなかった。
上手く行かなかった原因
環境さえ整っていれば、SSLへの対応はとてもシンプル。- 秘密鍵・CSRの作成、設定
- Let’s EncryptのCertbotをインストール
- 証明書を取得して設定
- OpenSSL0.9.8なので、wgetやcurlを使ってhttps経由でファイルを取得しようとすると失敗する
- OpenSSL 1.0系は入らない
- Certbotが要求するPythonは2.7以上だけど、サーバでは2.4
- SLCに対応していないのでPython入れるのに一苦労。ソースコードダウンロードして手動でインストール
- ここでもOpenSSLしんどい
- 既存のPython置き換えるのどうすんだっけ
- 関連モジュールとかいろいろ入らない
- 何とか入れたはずだけどCertbotが上手く動かない