iku8log

Webエンジニア、SEO、Web解析等々しております。タダのメモ。

スイッチ周り入門してみた

ただの備忘です。

キーワード

スイッチ周りについて

スイッチというのは、複数のPCをつなぐためのものです。 ハブ(リピータハブ)で良くね?と思いますが、それではダメなんですね。

スイッチとリピータハブではコリジョンドメインが違う?

まずリピータハブですが、これにA、B、CというPCがつながっているとします。

リピータハブでつながれたPC同士の通信は1対1のものしか許可されません。

例えば、AがBに話しかけます。Bが「なんだい?」とA、Bはお話(通信)を初めます。 AとBがお話(通信)している時、CがどんなにAと話したくても、「ダメ」と言われちゃうんですね。なるほど。

ここで、AとBが互いに話しかけようとした時、両者がぶつかって、うまく話すことができません。これを検知するのが「CD」

これら上記のことをまとめて「CSMA/CD方式」というらしいです。ざっくりしてますが..。 CS「だれか話ししてないかなと聞き耳を立てる」、MA「誰でも話かけられる」、CD「両者が互いに話しかけた時、衝突を検知する」

↑こんなことをしてうまく、話せるようにしてくれるんですね。 ここまでがリピータハブ。

じゃリピータハブじゃ何故ダメなのか? ABCにDも追加したとしましょう。 AとBは話をしている。 CはDと話がしたいけど、AとBが話をしているので話せない。

なんか変な光景じゃないですか?そこで、AとBのグループ、CとDのグループに分けてやります。よく話す者同士でね。

するとAとBで話が盛り上がっていても、CとDで話ができちゃうんですね。 この分けることの出来るものが、スイッチです。

スイッチにはポートが1〜4あり、1にA、2にB、3にC、4にDと指します。で、スイッチの設定でポート1と2は一つのグループ、3と4はもう一つ別のグループにします。 これでめでたしとなるわけです。

この会話でき、衝突が起こる可能性がある範囲をコリジョンドメインといいます。このコリジョンドメインを超えて話す場合はスイッチにMACアドレステーブルがあるのでそれを使います。このことをフィルタリング処理といいます。

リピータハブではAがBに話始めようとすると、CとDにも届くのですが、スイッチを使うことで届かなくなります。無駄なことはしないってことですね。

コリジョンドメインとブロードキャストドメイン

スイッチを使っていて、衝突が起こりうる範囲のことをコリジョンドメインと言いました。

ブロードキャストドメインはスイッチまたがって、繋がっているもの全てが対象になります。たぶん。 ブロードキャストドメインコリジョンドメインの範囲に抑えるなら、ルータが必要なようですね。

ルータの入門はまた今度。

Vagrantで作成した仮想マシンにVirtualHostの設定を行う

ホストOS: MacOSX ゲストOS: CentOS7 192.168.33.10

ゲストOSのApacheにバーチャルホストの設定を行う。バーチャルホスト名をmytestとする。

httpd.confファイルに以下を追記(ゲストOS)

<VirtualHost *:80>
    DocumentRoot "/home/vagrant"
    ServerName mytest
</VirtualHost>

/home/vagrantの権限を755とかにしておく。 Apache リスタート

ホストOS(Mac)でhostsファイルの設定

/etc/hostsに以下を追記(ホストOS)

192.168.33.10 mytest

CentOS7で「Apache2.4」と「PHP7」をソースからインストールしphp-fpm経由で起動する

現在時点で最新のバージョンを使うことにします。

環境・各種バージョン

  • CentOS7
  • Apache2.4.29
  • APR 1.6.3
  • apr-util-1.6.1
  • PHP7.1.10

インストール・ソース置き場所

インストール場所は→/opt/app/local ソースは→/opt/app/local/src

Apacheのインストール

apr, apr-util,pcre等々インストールしておかなくてはなりません。そのうち追記します。

上記インストール後Apacheのソースをダウンロードして回答してインストールを実行します。

PHPのインストール

事前に必要なものをインストール

sudo yum install libxml2-devel

sudo yum install bzip2-devel

sudo yum install curl-devel

sudo yum install libjpeg-devel

sudo yum install libpng-devel

sudo yum install libXpm-devel

sudo yum install -y freetype-devel

sudo yum install gmp-devel -y

yum install epel-release

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm


sudo yum install libmcrypt

sudo yum install libmcrypt-devel

sudo yum install aspell-devel

sudo yum install aspell-devel.x86_64

sudo yum install recode-devel

ソース取得

sudo wget -O php-7.1.10.bz2 http://jp2.php.net/get/php-7.1.10.tar.bz2/from/this/mirror

インストールの準備

./configure \
    --prefix=/opt/app/local/php-7.1.10 \
    --enable-mbstring \
    --enable-zip \
    --enable-bcmath \
    --enable-pcntl \
    --enable-ftp \
    --enable-exif \
    --enable-calendar \
    --enable-sysvmsg \
    --enable-sysvsem \
    --enable-sysvshm \
    --enable-wddx \
    --with-curl \
    --with-mcrypt \
    --with-iconv \
    --with-gmp \
    --with-pspell \
    --with-gd \
    --with-jpeg-dir=/usr \
    --with-png-dir=/usr \
    --with-zlib-dir=/usr \
    --with-xpm-dir=/usr \
    --with-freetype-dir=/usr \
    --enable-gd-native-ttf \
    --enable-gd-jis-conv \
    --with-openssl \
    --with-gettext=/usr \
    --with-zlib=/usr \
    --with-bz2=/usr \
    --with-recode=/usr \
    --with-mysqli=mysqlnd \
    --enable-mysqlnd \
    --with-pdo-mysql=mysqlnd \
    --with-readline \
    --enable-fpm

php.ini設定

/opt/app/local/src/php-7.1.10/php.ini-productionをコピー↓

/opt/app/local/php-7.1.10/lib/php.ini

php-fpm設定

php-fpm.conf.defaultをコピー↓

/opt/app/local/php-7.1.10/etc/php-fpm.conf

[global]
pid = /opt/app/local/php-7.1.10/var/run/php-fpm.pid



include=/opt/app/local/php-7.1.10/etc/php-fpm.d/*.conf

/opt/app/local/php-7.1.10/etc/php-fpm.d/www.conf


user = nobody
group = nobody

listen = 127.0.0.1:9000

listen.allowed_clients = 127.0.0.1
pm = static

pm.max_children = 5

pm.start_servers = 2

pm.min_spare_servers = 1

pm.max_spare_servers = 3

composerインストール

sudo /opt/app/local/php-7.1.10/bin/php php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
sudo /opt/app/local/php-7.1.10/bin/php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
sudo /opt/app/local/php-7.1.10/bin/php composer-setup.php
sudo /opt/app/local/php-7.1.10/bin/php ./composer.phar --version

phpとパスをとうしておくと、sudo /opt/app/local/php-7.1.10/bin/php 指定しなくて良い(最後の行)

Laravelでもインストールしてみる

sudo /opt/app/local/php-7.1.10/bin/php create-project --prefer-dist laravel/laravel=5.5 myApp

バーチャルホスト設定

以下のように設定してみた。php-fpmを使うと*.phpにマッチするまで見てくれないので、index.phpを指定した。

<VirtualHost *:80>
    DocumentRoot "/home/vagrant/myAp/public"
    ServerName myapp
    DirectoryIndex index.php

    <Directory "/home/vagrant/myAp/public">
        AllowOverride All
    </Directory>
</VirtualHost>