タグ「Apache」での検索

Vagrant / VirtualBox を使って5分でPHP7が使えるWEBサーバを立ち上げる

とにかく急ぎで検証用環境が欲しい方に。
今回作業するマシンはMac。インストールする仮想マシンのOSは ubuntu とします。

● Vagrant / VirtualBox を使って5分でPHP7が使えるWEBサーバを立ち上げる

Vagrant , VirtualBox の ソフトはそれぞれインストールしておいてください(インストーラーを実行するだけなので簡単です)

● 1. Vagrant を使って仮想マシンをダウンロードし起動する

今回はこのボックスを使用します

https://atlas.hashicorp.com/michaelward82/boxes/trusty64-php7

まず仮想マシンを格納したいフォルダ( Ubuntu_PHP7 とします )を作成しそこに移動します。
ターミナルから

mkdir Ubuntu_PHP7
cd Ubuntu_PHP7

次に vagrant コマンドを使ってインストールと起動を行います

vagrant init michaelward82/trusty64-php7;

インストールが完了すると `Vagrantfile` というファイルが作成されているのでそれを好きなエディタアプリで起動し編集します。
下記の行の先頭のコメントを取って実行できるようにします

  config.vm.network "private_network", ip: "192.168.33.10"

再びターミナルから次のコマンドを実行して ssh の接続情報を表示します

vagrant ssh-config

表示例

Host default
  HostName 127.0.0.1
  User vagrant
  Port 2200
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile /Users/hogehoge/.vagrant.d/boxes/michaelward82-VAGRANTSLASH-trusty64-php7/1.1.13/virtualbox/vagrant_private_key
  IdentitiesOnly yes
  LogLevel FATAL

この情報から ssh での接続コマンドが分かるので 実行して ssh 接続します。

ssh vagrant@127.0.0.1 -p 2200 -i /Users/hogehoge/.vagrant.d/boxes/michaelward82-VAGRANTSLASH-trusty64-php7/1.1.13/virtualbox/vagrant_private_key 

【ここから先は vagrant 内の仮想マシンでの作業となります】

・ PHP の足りないモジュールをインストールする。

su - (パスワードは vagrant)
apt-get update
apt-get install php7.0-mbstring

・Apache の設定内の実行ユーザを書き換える

 vi /etc/apache2/apache2.conf

ユーザーとグループを下記のように書き換えておきます

User  vagrant
Group vagrant

・apache をリスタートする

/etc/init.d/apache2 restart

・curl でアクセスして確認する

curl localhost

● ホストマシン mac からも接続を確認する

ウェブブラウザに以下のように入力してアクセスする

http://192.168.33.10/

以上です。

● MacからSFTPで仮想マシンに接続する

さきほど表示したSSH設定にでてきた鍵を使用します。

これをFTPソフトの鍵選択画面から選択してください。  
Mac だとTransmit がお勧めです。  



No.1108
03/22 16:45

edit

Apache
PHP

Mac OSX 10.10(Yosemite)でWEBサーバ環境(apache + MySQL + PHP)を構築する

Mac OSX 10.10(Yosemite)に

WEBサーバ : apache 2.2

データベース:MySQL 5.6

プログラミング言語:PHP 5.5

をインストールする方法。

■ Xcodeをインストールする

「App Store」から「Xcode」を検索してインストールする

■ HomeBrewをインストールする

(ターミナルから以下を実行)

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

インストール後に .bash_profile (なければ作成)に以下を追加

「ターミナルから以下を実行」

cd
touch .bash_profile
vi .bash_profile

viでファイルが開けたら【i】を押して、編集モードにして、以下の2行を貼り付けて保存( 【esc】【:】【w】【q】【!】【Enter】と入力)する。

export PATH=/usr/local/bin:$PATH
export PATH=/usr/local/sbin:$PATH
brew doctor

と入力して警告やエラーが出ないことを確認する。警告などが表示される場合はその下にヒントを元に解決する。(直接このコマンドを打ったらいいよと例文が書いてあることがあります。)

■ MySQLのインストール

(ターミナルから以下を実行)

brew install mysql

インストールの確認とMySQLの起動

(ターミナルから以下を実行)

mysql --version
mysql.server start
mysql -uroot

■ WEBサーバ apache(version 2.2)のインストール

(ターミナルから以下を実行)

brew tap homebrew/dupes
brew tap homebrew/apache
brew install httpd22

apacheインストールの確認

apachectl -v

apacheの設定ファイルの編集

vi /usr/local/etc/apache2/2.2/httpd.conf

以下のように書き換えます

# ポートの設定(8080→80)
Listen 80

# ServerNameの変更
ServerName localhost:80

# DocumentRootの変更
DocumentRoot "/Users/ユーザ名/htdocs"

# .htaccessでの上書きを許可
AllowOverride All

# バーチャルホストを利用できるようにする
Include /usr/local/etc/apache2/2.2/extra/httpd-vhosts.conf

apacheのバーチャルホストファイルの編集

vi /usr/local/etc/apache2/2.2/extra/httpd-vhosts.conf

例:

ディレクトリ( /Users/ユーザー名/vhosts/ )

サーバ名( test.lcoal )

でバーチャルホストの設定を行います。

# ポートを8080→80に変更
NameVirtualHost *:80
<VirtualHost *:80>
    ServerAdmin webmaster@test.local
    DocumentRoot "/Users/ユーザー名/vhosts/test.local"
    ServerName test.local
    ServerAlias www.test.local
    ErrorLog  "/Users/ユーザー名/vhosts/test.local/log/test.local-error.log"
    CustomLog "/Users/ユーザー名/vhosts/test.local/log/test.local-access.log" common
    <directory "/Users/ユーザー名/vhosts/test.local">
      Order allow,deny
      Allow from all
    </directory>
</VirtualHost>

apacheの起動コマンド

# 起動
sudo apachectl start
# 停止
sudo apachectl stop
# 再起動
sudo apachectl graceful

■ PHPのインストール

コマンドラインから以下を実行

brew tap homebrew/dupes
brew tap homebrew/versions
brew tap homebrew/homebrew-php
brew install php55 --homebrew-apxs

インストール後にPHPのバージョンを確認する

php -v

/etc/php.ini の設定

(ルートユーザーになって以下を実行)

cd /etc
cp php.ini.default php.ini

php.ini 設定例

[Date]
date.timezone = "Asia/Tokyo"

[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.encoding_translation = Off
mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII
mbstring.substitute_character = none
mbstring.func_overload = 0
mbstring.strict_detection = Off

これで終了です。

No.939
05/07 11:20

edit

Apache

WEBサーバApacheのTRACEを無効にする

telnetでサーバ(hoge.com)に接続してTRACEコマンドが使えるかどうか調べる

■ ApacheでTRACEを使える状態になっているかどうか調べる方法1

# telnet で接続
telnet hoge.com 80

# telnet接続後に次のコマンドを入力
TRACE / HTTP/1.0
TEST: HOGE
(エンターを2回押す)

これで TEST:HOGE がサーバーから帰ってきた場合TRACEが有効です。

■ ApacheでTRACEを使える状態になっているかどうか調べる方法2

# telnet で接続
telnet hoge.com 80

# telnet接続後に次のコマンドを入力
OPTIONS * HTTP/1.1
HOST: localhost

TRACEが表示されれば使用出来る状態になっています。

■ ApacheのTRACE無効にする方法。

httpd.confにて以下を記述し、再起動する。

TraceEnable off
No.887
04/21 17:00

edit

Apache

apacheのログファイル(access_log)を別のマシンで解析,表示する

旧なアクセス増加によってWEBサーバが重い。そんな時は別のマシンでapacheのログを解析するとよいです。

そこで

■ Visitors

http://www.hping.org/visitors/index_jp.php

ダウンロードして、解凍して make すると「visitors」という実行可能なファイルが出来ます。

それを /usr/bin 等へコピー

使い方

visitors オプション ログファイル > out.html

とすると 解析結果が out.html ファイルに出力されます。

オプションは

visitors -h

とすると表示されますが、とりあえずは

visitors -A ログファイル > out.html

と「 -A 」オプションをつけて解析してみるのがいいかと思われます。


No.632
04/21 17:01

edit

Apache

mod_rewrite でURIに「%2f」を含むとエラーとなるのを修正する

◆ mod_rewriteで変換前URIに「%2F」があると、サーバーエラーになります。

これの対処方法は

◆ 1. apacheのバージョンを調べる

httpd -v
Server version: Apache/2.2.0
Server built:   Feb 11 2006 18:10:38

◆ 2. Apache 2.0.46 以降の場合は「AllowEncodedSlashes ディレクティブ」をONにするとスラッシュ"/"の受け渡しを許可することが出来る。

httpd.conf (.htaccessには記述できません) に以下の内容を記述

AllowEncodedSlashes On

◆ 3. apache を再起動

apachectl graceful
No.504
04/21 17:11

edit

Apache

apache mod_rewrite の便利な書式

◆ mod_rewrite の便利な書式

実在するファイル名には mod_rewrite を適用しない

RewriteCond %{REQUEST_FILENAME} !-f

実在するディレクトリ名には mod_rewrite を適用しない

RewriteCond %{REQUEST_FILENAME} !-d

◆ mod_rewrite のチートシート(早見表)

http://www.cheatography.com/davechild/cheat-sheets/mod-rewrite/

◆ mod_rewrite のチートシート(早見表)PDF

http://logic.moo.jp/data/filedir/503.1.pdf


添付ファイル1
No.503
06/24 11:07

edit

添付ファイル

Apache

apacheのログをローテーションする【logrotate】の設定

apacheのログ「access_log」「error_log」はほっておくとどんどん容量が増えて無駄にディスクを消費する上にapacheのパフォーマンスが落ちます。
ログをローテーションするには「logrotate」を使用します。

・まず共通の設定を行います。

vi /etc/logrotate.conf
weekly
rotate 4
errors root
create
include /etc/logrotate.d

● logrotateのオプション

weekly:週単位でローテーション(daily:日単位 monthly:月単位)
rotate 4:最大4つ前までのファイルを残す
errors root:エラーがあれば rootまでメールする
create [パーミッション] [グループ名] [ユーザ名]:ローテーション後すぐに同名のログファイルを作成する。
compress:.gz ファイルに圧縮する
notifempty : ログがカラならローテーションしない
missingok : ファイルが存在しない場合でもエラーとしない
include /etc/logrotate.d:/etc/logrotate.d ディレクトリ以下の設定ファイルを読み込む
dateext : ローテーションしたファイルに日付をつける
dateformat _%Y-%m : ローテーションしたファイルに指定したフォーマットの日付をつける

● logrotateの個別のapache設定( /etc/logrotate.d/httpd )を設定する

vi /etc/logrotate.d/httpd

でファイルを開くと

/var/log/httpd/*log {
    missingok
    notifempty
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/httpd.pid 2>/dev/null` 2> /dev/null || true
    endscript
}

となっている。

notifempty があると ログファイルがから場合ローテーションを実行しないので、
テストの段階ではこれを削除しておくほうが挙動がわかりやすくなります。

使用しているログファイルが「access_log」「error_log」ならこのままでOK。
ログファイルが「access_log.sitename.com」「error_log.sitename.com」等に変更してある場合は

/var/log/httpd/*log {
↓
/var/log/httpd/*log.sitename.com {

に変更する。

また複数のファイルはスペースで区切って指定する

/var/log/httpd/*log.siteA.com  /var/log/httpd/*log.siteB.com {

● ローテーション設定の確認( -d )( dryrun )

ローテーション設定の確認をするには -d オプションをつけて実行します

logrotate -d /etc/logrotate.d/httpd

● ローテーションの強制実行( -f )( force )

ローテーション設定の確認をするには -f オプションをつけて実行します
動作を確認するには -v オプションもつけて実行するとより良いです。

logrotate -f -v /etc/logrotate.d/httpd

● ローテーションがうまく動かない時の調査方法

crontabの設定にで logrotate が組み込まれているかどうかを調べる

ls /etc/cron*

表示されるリストに

/etc/cron.daily:
logrotate  man-db.cron

logrotate があればanacronで起動する設定になっています。

実際に起動されたかどうかを見るには

cat  /var/log/cron | grep 'cron.daily'

で確認します。

● logrotate の定期実行時間を変更する

logrotate は設定ファイル /etc/cron.daily/logrotate に記述がされてあり、
このファイルは anacron から実行されます。

anacronはcronと違って以下のような特徴があります

  • サーバー負荷を下げるためある範囲内のランダムな時刻に実行する機能
  • 実行時にマシンがシャットダウンしていた場合、その後マシン立ち上げた時に実行されなかった処理を実行しに行こうとする

なので決まった時刻に正確に事故した場合はクーロンから起動するとよいでしょう。 例

・ 1. anacronの設定を削除(移動)

mv  /etc/cron.daily/logrotate   /root/

・ 2. crontabで実行

crontab -e

(毎日4時半に実行するには以下のように記述する)

30 4 * * *  /root/logrotate
No.312
04/05 14:55

edit

Apache

apache のバーチャルホスト設定

Apache 2.2 バーチャルホスト説明書
http://httpd.apache.org/docs/2.2/ja/vhosts/

Apache 1.3 バーチャルホスト説明書
http://httpd.apache.org/docs/1.3/vhosts/


No.259
04/21 17:12

edit

Apache