作成者別アーカイブ: 管理人

homesteadのVMをもう一つ作る

Laravel5がきたので、検証用に新しくVMを作ろうとしたら、いろいろぶつかって、うまくいかなかった。
対処方法のメモ。

$ git clone https://github.com/laravel/homestead.git Homestead-l5
$ cd Homestead-l5
$ vi Homestead.yaml

---
ip: "192.168.11.10"
memory: 2048
cpus: 1
name: "homestead-l5"
hostname: "homestead-l5"

authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa

folders:
    - map: (作業フォルダ)
      to: /home/vagrant/Code/Laravel

sites:
    - map: homestead.app
      to: /home/vagrant/Code/Laravel/public

databases:
    - homestead

variables:
    - key: APP_ENV
      value: local

$ vi scripts/homestead.rb

class Homestead
  def Homestead.configure(config, settings)
    # Configure The Box
    config.vm.box = "laravel/homestead"
#    config.vm.hostname = "homestead"
    config.vm.hostname = settings["hostname"] ||="homestead"

    # Configure A Private Network IP
    config.vm.network :private_network, ip: settings["ip"] ||= "192.168.10.10"

    # Configure A Few VirtualBox Settings
    config.vm.provider "virtualbox" do |vb|
#      vb.name = 'homestead'
      vb.name = settings["name"] ||='homestead'

apache2のキャッシュ無効の設定

djangoで開発していて、ファイルをアップしても反映されない問題にぶつかる。
apache2 restartで反省されるから、apacheのキャッシュと想定。

headerモジュールをロードして、おまじないをconfに書けばいいのはわかったのだけど、ネット上のいくつかの情報を試しても駄目。
最後の頼みで知り合いに聞いて解決!!

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.10
DISTRIB_CODENAME=utopic
DISTRIB_DESCRIPTION=”Ubuntu 14.10″

$ apache2 -v
Server version: Apache/2.4.10 (Ubuntu)
Server built: Jul 25 2014 10:24:21

$ sudo cp /etc/apache2/mods-available/headers.load /etc/apache2/mods-enabled/headers.load
$ sudo vi /etc/apache2/site-available/tweet_test.conf

Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"

$ sudo service apache2 restart

駄目な例

Header set Pragma no-cache
Header set Cache-Control no-cache
FileEtag None
RequestHeader unset If-Modified-Since
Header set Cache-Control no-store

MACOSX へのLaravel Homesteadのインストール

環境確認

$ php -v
PHP 5.4.30 (cli) (built: Jul 29 2014 23:43:29)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies

$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.9.5
BuildVersion: 13F34

VirtualBoxとVagrantのインストール

http://www.vagrantup.com/

https://www.virtualbox.org/

Vagrantの設定

Homesteadフォルダを作る場所へ移動
$ vagrant box add laravel/homestead
$ git clone https://github.com/laravel/homestead.git Homestead

$ vi Vagrantfile

homesteadYamlPath = File.expand_path(“./Homestead.yaml”)
# homesteadYamlPath = File.expand_path(“~/.homestead/Homestead.yaml”)
afterScriptPath = File.expand_path(“./after.sh”)
# afterScriptPath = File.expand_path(“~/.homestead/after.sh”)
aliasesPath = File.expand_path(“./aliases”)
# aliasesPath = File.expand_path(“~/.homestead/aliases”)

作業用フォルダの作成

Homesteadとは別にした方がよいと思われる

Homesteadの設定

$ vi Homestead.yaml

authorize: ~/.ssh/id_rsa.pub

keys:
– ~/.ssh/id_rsa

folders:
– map: (作業用フォルダ)
to: /home/vagrant/Code

sites:
– map: homestead.app
to: /home/vagrant/Code/
hostsの追加

$ sudo vi /etc/hosts

127.0.0.1 localhost homestead.app
Composerのインストール

$ curl -sS https://getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer

Laravelインストールに必要なモジュールのインストール

$ brew tap josegonzalez/homebrew-php # いらないかも
$ brew tap homebrew/php
$ brew tap homebrew/dupes

$ brew update

$ brew install php54-mcrypt

/etc/php.iniが無いとき $ sudo cp /etc/php.ini.default /etc/php.ini
$ sudo vi /etc/php.ini

extension=mcrypt.so
フルパスで指定しないとエラーになることがある

エラーが気になるなら以下も設定

date.timezone = Asia/Tokyo
Laravelのインストール

(作業用フォルダ)へ移動
$ composer create-project laravel/laravel Laravel –prefer-dist

一度失敗して再度実行するとnot emptyのエラーになるので、一旦削除して再実行する

起動

$ vagrant up

動作確認

http://homestead.app:8000

[Ubuntu]monitでmysqlプロセス監視

Windows AzureのUbuntuでmysqlが度々落ちるので、monitで監視してみます。

$ sudo apt-get install monit
$ sudo vi /etc/monit/monitrc

以下を追加

set mailserver localhost
set alert abc@gmail.com

メール送信がちゃんと設定されている必要があります。

$ sudo service monit restart
$ sudo vi /etc/monit/monitrc

管理画面のhttpdの設定

set httpd port 2812 and
    allow username:password
    allow @monit
    allow @users readonly

username:passwordがBASIC認証のログイン情報。
本当はアクセス元の制限をかけたいところだけど、固定IPじゃないので、、、

Windows Azureのポータルで、エンドポイントに2818を追加して、

$ sudo service monit restart

http://xxxxx.yyyyy.com:2818

で管理画面へアクセスできます。

監視対象の追加は、面倒なのでサンプルをそのまま使います。

$ sudo ln /etc/monit/monitrc.d/mysql /etc/monit/conf.d/
$ sudo service monit restart
$ sudo monit -vI

でテストができます。

再起動の設定をしたいところだったけど、時間切れでここまで!

[Ubuntu]apt-get updateで404 Not Found

Windows Azure上のmysqlが時々落ちるので、monitを入れてプロセス監視しようと思ったら、以下のエラーがでてはまる。

$ sudo apt-get install monit
Reading package lists... Done
Building dependency tree      
Reading state information... Done
The following NEW packages will be installed:
  monit
0 upgraded, 1 newly installed, 0 to remove and 90 not upgraded.
Need to get 281 kB of archives.
After this operation, 758 kB of additional disk space will be used.
WARNING: The following packages cannot be authenticated!
  monit
Install these packages without verification [y/N]? y
Err http://azure.archive.ubuntu.com/ubuntu/ raring/universe monit amd64 1:5.5-6
  404  Not Found
Failed to fetch http://azure.archive.ubuntu.com/ubuntu/pool/universe/m/monit/monit_5.5-6_amd64.deb  404  Not Found
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?

Ubuntu 13.04のサポート切れで、パッケージのファイルの置き場所が old-releases.ubuntu.com に変わったからでした。

バックアップを取って、

$ sudo cp /etc/apt/sources.list /etc/apt/sources.list_bak

サーバーを書き換え

$ sudo sed -i -e 's|//.*ubuntu.com/|//old-releases.ubuntu.com/|' /etc/apt/sources.list
$ sudo apt-get upgrade

成功!!