ひよこメモ

備忘ブログ Ruby, Rails, AWS, html5, css3, javascript, vim,

httpd.confの編集

環境:CentOS


httpd.confは、Apacheの設定ファイル

$ sudo vi /etc/httpd/conf/httpd.conf

でhttpd.confを開く


Vagrant+VirtualBoxでPHP開発環境構築 - Qiita
内で、DocumentRoot, ServerName, は設定すると書かれていたので、そこらへんを調べる


ServerRoot

Apacheをインストールした場所

Listen

特定のIPアドレスやポート番号だけを受け付ける指定。VirtualHostではここの設定のポート範囲内のみ使用できる

デフォルトは80(一般的なHTTP)

DocumentRoot

サーバーのトップ階層

DocumentRoot "/var/www/html"

<Directory 設定項目>~</Directory>

ディレクトリ別の設定ができる

ServerName

サーバ自身が使用するサーバ名とポート番号の指定。BINDで自動取得出来る場合があるが起動時の問題を避けるため指定しておくことが推奨されている。

BIND: 内向きのドメインネームサーバー


とりあえずデフォルト設定のコメントを外す

ServerName www.example.com:80

User/Group

自分で追加して、httpd.confにそれぞれ指定する

$ sudo groupadd httpd
$ sudo useradd -g httpd -d /var/empty/httpd -s /sbin/nologin httpd
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User httpd
Group httpd





参考:httpd.confについて調べたのでまとめたよ - ✘╹◡╹✘

Vagrantの使い方③ 仮想サーバでhttpdを構築する ssh/PHP,httpdのインストール

httpとは、WebサーバーであるApacheを操作する時に使われるコマンド

ssh(Secure Shell)で接続

どこからどこに接続するかというと、Macから仮想サーバーに接続する(たぶん)

$ vagrant ssh
Last login: Thu Jul 16 08:48:31 2015 from 10.0.2.2
Welcome to your Vagrant-built virtual machine.
[vagrant@localhost ~]$ 


Linuxコマンド
pwd: 現在のディレクトリの場所を絶対パスで表示する

[vagrant@localhost ~]$ pwd
/home/vagrant

httpdをインストール

たぶんWebサーバのApacheを仮想サーバーにインストールしているんだと思う

sudo yum -y install httpd

sudo: 管理者権限
yum: パッケージのインストールに使う

  • y: 全てyesで進める

PHPのインストール

$ sudo yum -y install php

無事完了

不明メモ httpd, yumコマンド, rcスクリプト

httpd(HyperText Transfer Protocol Daemon)

WebサーバソフトウェアであるApacheのプロセスや実行ファイルなどに付与された名称(実行ファイル名、コマンド名)。
Daemon(デーモン)はメモリに常駐したプログラムのこと。

外部からのHTTP接続を受け付けて要求されたファイルを送信したり、送られたデータを受け取って保存したり、指定されたプログラムを起動したりする。


Linux系のOSでApacheをインストールする場合、

$ yum install httpd

と記述する

yumコマンド

Linuxのコマンド。パッケージを取得してインストール/アップデートをする。

【 yum 】 パッケージを取得してインストール/アップデートをする | 日経 xTECH(クロステック)

rcスクリプト

起動スクリプト

サービスは、システム起動時やランレベル実行時にinitプロセスがRCスクリプトを実行することで
 そのランレベルで起動すべきサービスが開始されて、停止されるべきサービスが停止する仕組みと
 なっています。

Linux - 起動スクリプトの起動と停止


場所
/etc/rc.d/init.d/

Vagrantの使い方② 起動してから何をする? プラグインも

1. Vagrantの起動

Vagrantを起動するには

$ vagrant up box名

と入力すればいい

2. Vagrantの状態確認

$ vagrant status
default                   running (virtualbox)


virtualboxはインストールするだけで勝手に使えているってことかな?

3. Vagrantのシャットダウン

$ vagrant halt
==> default: Attempting graceful shutdown of VM...

haltは「停止する」という意味

4. その他

vagrant suspend : スリープ
vagrant resume : スリープ解除
vagrant reload : 再起動
vagrant destroy : 仮想マシンを削除


試しにdestroyしてみたけど、作成したbox自体は残るみたい
importしたパッケージはどうなるか分からないけど

5. プラグイン

プラグインのインストール、確認、アンインストールも簡単でした

インストール
$ vagrant plugin install sahara

確認
$ vagrant plugin list

アンインストール
$ vagrant plugin install sahara

Vagrantの使い方① インストール/初期化

web帳 | VirtualBoxとVagrantで開発環境を構築こちらを参考に進めてみる

1. インストール

まずはOSをインストールしてみる

$ vagrant box add [名前] [URL]

※boxはVagrant内の仮想マシンのテンプレート


A list of base boxes for Vagrant - Vagrantbox.es

でインストールしたいOSを選択するらしい


CentOS 7.0 x64 (Minimal, VirtualBox Guest Additions 4.3.28, Puppet 3.8.1 - see here for more infos)
をインストールしてみる

$ vagrant box add centos70 https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.1.0/centos-7.0-x86_64.box
==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'centos70' (v0) for provider: 
    box: Downloading: https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.1.0/centos-7.0-x86_64.box
    box: Progress: 86% (Rate: 3328k/s, Estimated time remaining: 0:00:21)
==> box: Successfully added box 'centos70' (v0) for 'virtualbox'!

ダウンロード完了!


ダウンロードされたかを確認

$ vagrant box list
centos70 (virtualbox, 0)


ちなみにboxの削除

$ vagrant box remove <name>

2.Vagrantの初期化

任意の場所にvagrantフォルダを作成ということなので、ホームディレクトリに作成

cd vagrantして、先ほどダウンロードしたOSで初期化

$ vagrant init centos70


するとvagrantフォルダにVagrantfileができた。これで初期化は完了らしい。


もう1回initすれば上書きで初期化されないかな?と思ったけどエラーになる

$ vagrant init centos70
`Vagrantfile` already exists in this directory. Remove it before
running `vagrant init`.


Vagrantfileを消せってことかな
消したら作り直しできたけど、Pluginなんかは残ってたから環境の情報は残ってるっぽい

フォルダを作り直して、vagrant init centos70して、vagrant upし直したら・・・それでもまだPluginが残っている

Pluginなどの情報はboxに保存されているっぽい

結局初期化するために、

$ vagrant box remove <box名>

して、boxを作りなおした。
それでもPluginは消えない。どこか別の場所に保存されてるのかな

PHP環境構築 Virtual Box Vagrant インストール

Virtual Boxは仮想化ソフトウェアで、VMWareみたいなもの。
無料。


Downloads – Oracle VM VirtualBox

VirtualBox platform packages. The binaries are released under the terms of the GPL version 2.の
VirtualBox 5.0.2 for OS X hostsをダウンロードしてみる。


インストールもすんなり完了。



Vagrantは仮想化した環境をプログラミングするソフトウェア。
OS,サーバー,PHPなどの言語をインストール手間をはぶく。


Download - Vagrant by HashiCorp
一番上のMac版をダウンロード。


インストールもすんなり完了。


ターミナルにてバージョン確認
$ vagrant --version
Vagrant 1.7.4


インストール完了

HomeBrewでPHPのComposerインストールがうまくいかない

$ brew install homebrew/php/composer
Cloning into '/usr/local/Library/Taps/homebrew/homebrew-php'...
remote: Counting objects: 10817, done.
remote: Compressing objects: 100% (25/25), done.
remote: Total 10817 (delta 11), reused 0 (delta 0), pack-reused 10792
Receiving objects: 100% (10817/10817), 2.21 MiB | 518.00 KiB/s, done.
Resolving deltas: 100% (7369/7369), done.
Checking connectivity... done.
Tapped 502 formulae
==> Installing composer from homebrew/homebrew-php
Error: undefined method `desc' for Formulary::Formulae::Php70:Class
Please report this bug:
    https://git.io/brew-troubleshooting
以下略

Error: undefined method `desc' for Formulary - When installing mcrypt for php55 · Issue #41762 · Homebrew/legacy-homebrew · GitHub

HomeBrewをupdateすればいけそう


update後にここと全く同じ現象

MacにHomebrewでComposerをインストールしました - Qiita

$ brew install php56
を実行してPHPをインストール
(カナーリ長い)


一旦ターミナルを閉じる

再度開き、Composerインストール

$ brew install homebrew/php/composer
==> Installing composer from homebrew/homebrew-php
==> Downloading http://getcomposer.org/download/1.0.0-alpha10/composer.phar
######################################################################## 100.0%
==> Caveats
Verify your installation by running:
  "composer --version".

You can read more about composer and packagist by running:
  "brew home composer".
==> Summary
🍺  /usr/local/Cellar/composer/1.0.0-alpha10: 3 files, 1.0M, built in 10 seconds

Composerのインストール完了!

HomeBrewでインストールしたソフトの確認

Macのパッケージ管理ソフトHomeBrew
自家醸造のビール的な意味

パッケージのインストール先は
usr > local > Cellar
ワインセラー的な?


パッケージのインストール方法
brew install パッケージ名

アンインストール方法
brew uninstall パッケージ名

HomeBrewを最新verにする
brew update

インストール済みのパッケージを最新verにする
brew upgrade

パッケージの古いバージョンを削除
brew cleanup


パッケージの探し方
brew search パッケージ名


インストールしたパッケージの確認
brew list


パッケージの確認がしたかったので、目的達成!


OSにインストールされたパッケージとHomeBrewでインストールしたパッケージがかぶったりしないの?

個人的に大きかった理由としては、ディスク容量を食うこととである。MacPortsでは基本的に現在インストールしているOS Xのシステムに依存せず、自身で必要なパッケージをインストールする傾向にあり、OS X本体にあるソフトとMacPortsにインストールされるパッケージが重複することが往々にしてあった。

これはOS Xの環境への依存が少なく、OS X環境とMacPorts環境をある程度切り分けられるという利点はあるが、インストール時間の増大やディスク容量の圧迫の原因になるほか、パッケージ依存が複雑になる傾向にある。また、パッケージが増えれば増えるほどアップグレードの際に時間がかかるようになってしまう。

そういった不利な部分が出てきたため、そういった弊害が少ないとされるHomebrewへの移行を決断したのである。

Homebrewでは極力OS Xのシステムを使うため、どうしてもOS Xに依存してしまうが、インストール時間はある程度節約できるといわれている。最近ではMacPorts以上に人気のパッケージ管理ツールになっており、情報面でも有利になりつつあると言われている。

https://project-flora.net/2015/07/09/post-728/


Mac Portsよりはかぶらない?
今OS XにPHPが入っている状態でHomeBrewでPHPをインストールしてみたところ、brew listにPHPの姿は無いからたぶん大丈夫?

※追記
brew updateしたあとにPHPをインストールしたらインストールできた

javascript onInput テキスト入力

テキストの入力はjavascriptのonInputでできる

文字入力

<input type="text" onInput="alertValue(this)" />


足し算

	<form oninput="op1.value = Number(a.value) + Number(b.value);">
	<input type="number" name="a" value="0" size="10"><input type="number" name="b" value="0" size="10"><output name="op1">0</output>
</form>

sinatraテンプレートを使ってerubyの記述

公式サイトのREADMEにある

Sinatra: README (Japanese)


f:id:hiyotama:20150821104853j:plain


eruby(erb)を使ってみる


main.rb

require 'sinatra'
require 'sinatra/reloader'

get '/' do |i|
	#erbテンプレートを使ってviews>index.erbを呼び出し
	erb :index
end

こんな感じに使えばいい

erbはviewsフォルダを作って、その中に作成する


views>index.erb

<!DOCTYPE html>
<html lang="ja">
	<head>
		<meta charset="utf-8">
		<title>Sinatra練習</title>
	</head>
	<body>
		<h1>Hello world</h1>
	</body>
</html>


http://dotinstall.com/lessons/basic_sinatra/23606dotinstall.com

分かってないうちは軽量フレームワーク(sinatra)→必要性を感じたらRails

Railsをひと通り触ってみて便利だったけど、裏で何をやっているのか分からない

sinatraを使ってみたところ、中身が分かりやすい

まずはWebアプリケーションの構造を理解したいので、sinatraで勉強

今すぐ辞めて欲しい、「Ruby on Rails勉強してます」「CakePHP勉強してます」 – sumyapp
Webのフレームワークの価値ってなんだろなって改めて思う。
俺が軽量フレームワークを使う理由を考えてみる - 蟲!虫!蟲! - #!/usr/bin/bugrammer