前回『LAMPだ!』と言いながらまるでLAMPに触れなかったのはなかなかおもしろかったし興味深かったと思う。何よりも楽しんでいただいて恐縮だYO!
ざまぁねぇっす!!
さて、本題。
とにかくいま直ぐにFedora17CUIを起動して、ログインしよう。
ログインは当然rootでおこなう。何しろユーザがrootしかいないからね。
ちなみにPoderosaなどの端末を使ってログインするとコピペができるから楽すぎて鼻血ブー且つオヤジブーだ。
というわけで、ユーもさっさとログインしちゃいなYO!
■初期設定ですぞ!
【ネットワーク】
ネットワークの設定は
/etc/sysconfig/network-scripts/
にある
ifcfg-p2p1
を開けば確認できる。
- # vi /etc/sysconfig/network-scripts/ifcfg-p2p1
- DEVICE="p2p1"
- UUID="6c946d50-b704-4975-b384-d6a5d5ae98a9"
- NM_CONTROLLED="no"
- BOOTPROTO="dhcp"
- HWADDR="08:00:27:7A:98:69"
- ONBOOT="yes"
知ってるとは思うけど、viを閉じるには『:q』と順に打ては良い。一部でも変更してしまってる場合、『変更したのに保存しないと申すか!』と言われて終了できない。そういう場合は強制的に『:q!』で終了すれば、なかったコトにしてくれる。『u』を押すと押し多分だけやり直してくれるのでこれでもOK。
次に確認するのはリゾルバだ。
リゾルバは/etc/resolv.confにある。
- # vi /etc/resolv.conf
で、俺の場合はこうなってる感じ。
- ; generated by /usr/sbin/dhclient-script
- search xxxxxxxx.com
- nameserver xxx.xxx.xxx.xxx
- nameserver xxx.xxx.xxx.xxx
1行目のコメント見ればわかると思うけど、dhcpが勝手にリゾルバを書きなおしてくれるんだよ。だからカフェとかのパブリックな場所でネットつかってコワーキングするときでも大丈夫ってこと。
リゾルバは特に編集とか必要ないので閉じてしまおう。
あと、NetworkManager。
痒いところに手が届きそうで全然違うところを掻いてくれるという、訳の解らんアプリなんだけど、これ、いろいろググると、結構な割合で停止されてたり消したりされているようだ。中には『NetworkManagerふざけんな!』的に怒ってる人もいた。
俺の場合、NetworkManagerなんかは無視してるから別に何もしないでもOK。
ただ、上記で確認したように、ifcfg-p2p1の設定で『NM_CONTROLLED="no"』ってしておけば問題ない。
※『NM』はNetworkManagerの略だと思ってる
それにNetworkManagerを止めると、NetworkManagerが動いているのが前提で設定されている各種アプリなどがおかしな動きをしたりしてしまうことがあったので、面倒だからNetworkManagerのことはいっそ放置しようぜ。
どうしても止めたいのであれば、
- # systemctl stop NetworkManager.service
- # systemctl disable NetworkManager.service
俺はなるべく初期状態から変更しない方向性が好きなので、NetworkManagerは動いてるけど無視してる。
【一般ユーザの追加】
そうそう、現状Fedora17CUIのユーザってrootしかいないので、一般ユーザを追加しようじゃないか。
俺のニックネームはオガーンで、アルファベットで書くとogaaaanだ。
だからogaaaanユーザを作ることとする。
- # useradd ogaaaan
- # passwd ogaaaan
ユーザ名とパスワードが決まったら今度はグループを追加して、ogaaaanだけがrootになれるように設定しよう。
- # usermod -G wheel ogaaaan
上記のコマンドを打った後、実はこの機能自体は初期状態では無効になっているので、有効化するため、/etc/pam.d/にあるsuファイルを編集しよう。
- # vi /etc/pam.d/su
- #auth required pam_wheel.so use_uid
【ファイアウォール停止】
ホストOSからゲストOSにはアクセスできるが、その他の外部のPCからゲストOSへアクセスすることはできないし、どのポートが閉じられてるのかなどいちいち調べるのも面倒だ。
だからいっそのことファイアウォールを止めてしまおう。
- # systemctl stop iptables.service
- # systemctl disable iptables.service
- # systemctl stop ip6tables.service
- # systemctl disable ip6tables.service
【SELinux無効化】
SELinuxははっきりいって使わない。なぜなら、極めてウザいから。
それにそもそもrootで作業することが多いわけだし、学生に配布するLinuxなわけでもないので必要ない。だから無駄なもの。止めてしまおう。
/etc/sysconfig/にあるselinuxを編集だ。
- # vi /etc/sysconfig/selinux
を
SELINUX=disabled
に編集して保存だ。
- # This file controls the state of SELinux on the system.
- # SELINUX= can take one of these three values:
- # enforcing - SELinux security policy is enforced.
- # permissive - SELinux prints warnings instead of enforcing.
- # disabled - No SELinux policy is loaded.
- SELINUX=disabled
- # SELINUXTYPE= can take one of these two values:
- # targeted - Targeted processes are protected,
- # minimum - Modification of targeted policy. Only selected processes are protected.
- # mls - Multi Level Security protection.
- SELINUXTYPE=targeted
【ポートの変更】
間違って本番サーバに接続してしまったりするのを避けるため、開発環境ではポートを変更しておくと便利かもしれない。
というわけで、SSHでホストOSから接続されるときにポートを変更しておこうと思う。
通常何も変更しなければSSHは22ポートを使う。これを例えば1122とか8822、8022なんかに変えておけばOKだ。
ちなみにポートってのは0から65535までの全部で65536個あり、そのうち0~1023までが暗黙のうちにゆるく固定されていると認識されていて、その範囲をWell known Port(よく知られたポート郡)と呼ばれている。
更に1024から49151までが、登録済みポートと呼ばれている。そして49152から65535までが、自由に使用出来るポートだ。別にシステム的に何かで区切られているわけじゃなく、人間が勝手にそう区切って読んでいるだけ。
で、自由に使用出来るポートは桁が多いし、OS側が自動で割り振ることが多いので、登録済みポート郡の中から開いているものを勝手に使ってしまおうというわけよ。
今回は8822にしておくよ。
SSHのポート番号やログイン方法、タイムアウトなどを設定するには、/etc/ssh/にあるsshd_configを編集する。
- # vi /etc/ssh/sshd_config
#Port 22
を
Port 8822
にして保存だ。
- port 8822
【IPv6を無効化】
IPv6はそろそろ陽の目を浴びる頃だとは思うんだけど、BフレッツがIPv6に対応してないとか、いろいろな理由があって全然普及してる気配を感じない。
一部の回線業者では積極的にIPv6導入しているようだけど、ローカルで構築している開発環境にわざわざIPv6を入れる必要はないと思ってるので、IPv6は無効にしてしまおう。
寧ろIPv6が原因で劇的に作業が遅くなるなんてこともあるわけだし。
無効化するには/etc/modprobe.d/にあるblacklist.confを編集だ。
- # vi /etc/modprobe.d/blacklist.conf
- blacklist ipv6
【サーバの再起動】
上記の設定を全部一気に反映させるために、Fedora17CUIを再起動させよう。
- # sync
- # sync
- # sync
- # shutdown -h now
■アップデートですぞ!
さぁ再起動が終わったら早速一般ユーザでログインし、suコマンドでrootになってみようじゃないか。
もしrootになれなかったりしたら落ち着いてゆっくり服を脱ぎ外に出て、そのまま全力疾走で走ってこよう。きっと捕まるはずだ。
閑話休題。
rootになったらまず最初にシステムのアップデートをしよう。
アップデートにはyumというコマンドを使う。そしてyumを使う前に、ネットワーク的に近いリポジトリのミラーサイトを自動的に探してくれるプラグインを先に入れよう。
- # yum -y install yum-fastestmirror
- # yum -y update
yumでupdateすると結構大量のパッケージが導入、更新される。しばらくまっているうちにCoCo壱番屋のスープみたいなカレーでも食べに行くが良いよ。
■便利ツールですぞ!!
さて、アップデートが終わったら次は便利ツールをひと通り入れてしまおう。便利ツールというより寧ろ必須ツールといってもいいかも。
内訳はこんな感じ。
nkf | 文字コードコンバータ |
---|---|
expect | mkpasswdが入ってるツール集 |
lv | ファイルのエンコードに強いエディタ |
kcc | ファイルの文字コード判別 |
convmv | ファイル/フォルダを再帰的に文字コード変換できる |
cmake | マルチプラットフォーム用makeツール |
wget | ファイルなどのリソース取得 |
rpmdevtools | rpmファイルを展開 |
mailx | mailコマンド |
whois | IPアドレスから登録情報取得 |
tcpdump | tcpパケットキャプチャ |
bind-util | digコマンドが入ってる |
p7zip | 高圧縮ツールの7zip形式を可能とする |
tar | テープアーカイブ用コマンド |
というわけで全部一気に入れてしまおう。
- # yum -y install nkf expect lv kcc convmv cmake vim-enhanced\
- wget rpmdevtools mailx whois tcpdump bind-utils\
- p7zip p7zip-plugins tar
■リポジトリの追加ですぞ!!
さて、いろいろ便利ツールかつ必須ツールが入ったところで、今度はyumで使うリポジトリを追加しようじゃないか。
ただこの作業は別に必須ではないので、面倒くさいと思ったらやらなくても良いと思う。
一応説明はしておくけど、面倒くさいよ。
【RPM Forge】
まず、よく知られているリポジトリである、RPMForgeのリポジトリ定義ファイルをインストールしよう。
- # yum -y localinstall --nogpgcheck http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm \
- http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm
【epel】
yumで直接入れてもいいけど、RPM Forgeとバッティングしてしまって入らない時があるので、手動で入れてみる。
まず本体であるrpmファイルをwgetで取得する。そして取得したrpmファイルを展開し、rpm-gpgとrepoファイルをしかるべき場所に移動、という流れになる。
ソースコンパイルとかファイルのダウンロード、展開などは、/usr/local/src/でやることにしているので、他の場所が良いひとは適宜読み替えてもらいたい。
- # cd /usr/local/src/
- # wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm
次にダウンロードしたこのrpmを展開して、中に含まれている2つのファイルを移動する。
- # rpmdev-extract epel-release-6-7.noarch.rpm
- # cd epel-release-6-7.noarch/
- # mv ./etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 /etc/pki/rpm-gpg/
- # mv ./etc/yum.repos.d/epel.repo /etc/yum.repos.d/
- # vi /etc/yum.repos.d/epel.repo
- enabled=0
【remi】
remiというリポジトリはかなり先進的なバージョンのrpmを置いている質の良い公開リポジトリだ。
基本的にはepelと同じ方法でインストールする。
- # cd /usr/local/src/
- # wget http://rpms.famillecollet.com/fedora/17/remi/x86_64/remi-release-17-7.fc17.remi.noarch.rpm
- # rpmdev-extract remi-release-17-7.fc17.remi.noarch.rpm
- # cd remi-release-17-7.fc17.remi.noarch
- # mv ./etc/pki/rpm-gpg/RPM-GPG-KEY-remi /etc/pki/rpm-pgp/
- # mv ./etc/yum.repos.d/remi.repo /etc/yum.repos.d/
【キーのマージ】
全部で3つのリポジトリを入れたら、一旦yumでアップデートし、重複したキーをマージしよう。
- # yum update
■今度こそLAMPですぞ!!
【バージョンの確認】
さぁ、LAMPを構築しようじゃないか。
まずはバージョンをチェックだ。
- # yum info php
- 名前 : php
- アーキテクチャ : x86_64
- バージョン : 5.4.5
- リリース : 1.fc17
- 容量 : 2.6 M
- リポジトリー : updates
- 要約 : PHP scripting language for creating dynamic web sites
- URL : http://www.php.net/
- ライセンス : PHP
- 説明 : PHP is an HTML-embedded scripting language. PHP attempts to make it
- : easy for developers to write dynamically generated web pages. PHP also
- : offers built-in database integration for several commercial and
- : non-commercial database management systems, so writing a
- : database-enabled webpage with PHP is fairly simple. The most common
- : use of PHP coding is probably as a replacement for CGI scripts.
- :
- : The php package contains the module which adds support for the PHP
- : language to Apache HTTP Server.
同じようにして、『httpd』『mysql-server』も見ておこう。
【httpd+phpのインストール】
まずはhttpdとphpのインストールだ。面倒を避けるため、予めいくつかあるphpのライブラリもぶち込んでおこう。
- # yum -y install httpd php php-devel\
- php-bcmath php-gd php-imap php-ldap \
- php-mbstring php-mcrypt php-mysql php-pdo php-pear\
- php-pspell php-snmp php-soap php-tidy php-xml php-xmlrpc\
- mod_ssl mod_perl mod_dav_svn
【MySQLのインストール】
次はデータベースを入れよう。データベースはMySQLだ。
- # yum -y install mysql-server
【xdebugをインストール】
使わなくてもいいけど使う人は以下のようにしてインストールしよう。
- # pecl install xdebug
【phpDocumentorのインストール】
使わなくてもいいけど使う人は以下のようにしてインストールしよう。
- # pear upgrade pear
- # pear install --alldeps phpdocumentor
と打ち込んでヘルプが出れば成功だ。
【phpunitのインストール】
使わなくてもいいけど使う人は以下のようにしてインストールしよう。
まずはpearチャンネルの追加。
- # pear channel-discover pear.phpunit.de
- # pear channel-discover components.ez.no
- # pear channel-discover pear.symfony-project.com
- # pear upgrade pear
- # pear install phpunit/PHPUnit
- # pear install phpunit/PHPUnit_Story
- # pear install phpunit/PHP_Invoker
- # pear install phpunit/PHPUnit_SkeletonGenerator
- # pear install phpunit/PHPUnit_Selenium
■設定ファイルの編集ですぞ!
次に、php、httpd、mysqlの設定を行う。
まずはhttpdだ。
【httpd】
細かいチューニングは後回しにして、最低限の設定を行う。
- # vi /etc/httpd/conf/httpd.conf
ServerName | torhamzedd.com:80 |
---|---|
全Options | Includes ExecCGI FollowSymLinks |
全AllowOverride | All |
ServerSignature | Off |
LanguagePriority | jaを先頭にしておく |
AddDefaultCharset | コメントアウトする |
AddHandler | cgi-script .cgi .pl |
NameVirtualHost | *:80 |
- <virtualhost *:80>
- ServerAdmin root@localhost
- ServerName torhamzedd.com
- DocumentRoot /var/www/html
- </VirtualHost>
【php】
次はphpの設定だ。
- # vi /etc/php.ini
error_reporting | E_ALL & ~E_NOTICE & ~E_STRICT |
---|---|
mbstring.language | Japanese |
mbstring.internal_encoding | UTF-8 |
mbstring.http_input | UTF-8 |
mbstring.http_output | UTF-8 |
mbstring.detect_order | auto |
expose_php | Off |
post_max_size | 1024M |
upload_max_filesize | 1024M |
memory_limit | 1024M |
date.timezone | Asia/Tokyo |
それからもしxdebugをインストールしたなら、以下を最終行に追記しておこう。
- zend_extension = /usr/lib64/php/modules/xdebug.so
【MySQL】
MySQLはなぜか教科書通りにやるとエラーで動かなかったりするので厄介だ。
今回とった方法はかなりアグレッシブでイレギュラーかつエロティックなので、そこんところ予めご理解していただきたい。
- # vi /etc/my.cnf
- default-storage-engine=INNODB
- skip-character-set-client-handshake
- character-set-server=utf8
- innodb_file_per_table
- ft_min_word_len=1
- # mysql_install_db
- # systemctl enable mysqld.service
- # systemctl start mysqld.service
- # chown -R mysql:mysql /var/lib/mysql
- # restorecon -R /var/lib/mysql
- # su - mysql -c "/usr/libexec/mysqld --skip-grant-tables"
- # mysql_upgrade -u root
- # systemctl restart mysqld.service
新たに開いた端末は閉じ、元の端末に戻り、再度起動してみる。
- # systemctl start mysqld.service
【MySQLのセットアップ】
さてと次はセキュリティ的な設定をウィザード形式で行うよ。
- # mysql_secure_installation
次にMySQLへ接続するユーザとか作ってしまおう。
ここでは
ユーザ名 | sqladmin |
---|---|
パスワード | password |
スコープ | localhost |
- # mysql -u root -p
- > grant all privileges on *.* to sqladmin@localhost identified by 'password';
- > exit;
試しに今作ったばかりのsqladminユーザでログインして見ると良いかも。
■ホストOSとのファイル共有
よく/var/www/htmlにwebシステムを構築している人がいるけど、/varにはlogを扱う領域があり、ログは大抵肥大化するわけで、1年くらいするとwebがコケてて、原因がログの肥大化によるディスク容量の圧迫とか、ログローテートが正しくローテートできなかったりとか、いろいろな不具合だったりするわけだ。
なので俺は/varにはwebはおかない。
/homeにproduct/、develop/というディレクトリを作り、一般ユーザの権限を与えて、そこにドメイン名のディレクトリを作って管理しているよ。
例えばwww.chinko.comとwww.manco.jpというプロジェクトがあったら、
/home/develop/www.chinko.com/htdocs/
/home/develop/www.chinko.com/logs/
や
/home/product/www.manco.jp/htdocs/
/home/product/www.manco.jp/logs/
という風に作ってるんだ。
phpMyAdminや、画像専用サーバを開発環境に再現する場合などは、product内に置き、それ以外の開発対象となるものはdevelop/に置く、という感じだ。
そしてこれら、develop/とproduct/を、sambaでホストOSであるWindowsと共有してみようと思う。
sambaで共有すれば、VirtualBoxのファイル共有みたいにわけのわからんパーミッションになったりしないで済む。
というわけで早速やってみよう。
- # yum -y install samba
次に共有するディレクトリの設定を行おう。
- # vi /etc/samba/smb.conf
- [global]内
- それ以外
workgroup | WORKGROUP |
---|---|
hosts allow | 127. 192.168.51. |
security | user |
- [develops]
- comment = Developments
- path = /home/develop
- writable = yes
- guest ok = yes
- guest only = no
- create mode = 0755
- directory mode = 0755
- share modes = yes
- [products]
- comment = Products
- path = /home/product
- writable = yes
- guest ok = yes
- guest only = no
- create mode = 0755
- directory mode = 0755
- share modes = yes
紛らわしいので俺はコメントアウトしているよ。
で、このsambaは実は、専用のユーザが必要になる。Linuxでのユーザとは別に必要ってことだ。
ちなみにsambaユーザとLinuxユーザを同じ内容にしておけば後が楽になる。
というわけで、Linuxユーザであるogaaaanと同じ内容でsambaユーザを作ってしまおうと思う。
- # smbpasswd -a ogaaaan
早速起動しよう。
- # systemctl start smb.service
- # systemctl enable smb.service
俺はWindowsのログインアカウントとLinuxのユーザアカウント、sambaのアカウントなどすべてを同じ内容にしているので、Windowsからログイン作業なしでsambaにアクセス可能だが、Windowsのユーザ名が違う場合、毎回sambaユーザでログインしないといけない。その場合はネットワークドライブの割り当てで『別の資格情婦を使用して接続する』にチェックを入れて、sambaユーザのアカウントを登録しておこう。
ネットワークドライブの設定は、エクスプローラを表示させ、『ALT』キーを押してメニューを表示させた状態で『ツール』>『ネットワークドライブの割当』を開き、任意のドライブ名、フォルダには先程の『\\192.168.56.101\develop\』などと入れて設定しよう。
これをdevelop、productの2個とも行えば、次回から設定しなくてもsambaで接続できるようになる。
ただしWindowsの起動時にはVIrtualBoxは起動してないので、Fedora17CUIのショートカットを作成し、スターとアップに入れておけば問題ない。ショートカットの作成は、VirtualBoxの画面上でFedora17CUIを右クリックすればわかるだろう。
ただ、どうしてもWindows側のネットワークドライブの確認のほうが、VirtualBoxの起動より早くなってしまうため、毎回『ネットワークドライブに接続できませんでした』とバルーンが出てしまうが、Fedora17CUIが起動しきってしまえば問題なく接続できるので、俺は気にしてない。
■hostsですぞ!
さて、これでファイルも共有できたので試しに/var/www/htmlにファイルを置いてみようじゃないか。
直接エクスプローラでsamba越しに開いてもいいけど、/var/www/htmlは共有してないので、Poderosa的な端末で実行しよう。
- # cd /var/www
- # chmod ogaaaan:ogaaaan html
- # exit
- $ cd /var/www/html
- $ vi index.php
- <?php
- phpinfo();
秀丸などのイケてるしヤバいエディタを管理者権限で起動し、c:\windows\system32\drivers\etcにあるhostsを開いて、以下のように追記しよう。
- 192.168.56.101 torhamzedd.com
この状態でブラウザでtorhamzedd.comを見ると、PHPの情報が表示されるはずだ。
もし他のプロジェクトを表示させたいなら、ホストOSであるWindowsで、サブドメインを含んだURLをhostsに追記し、ゲストOSであるLinuxで、/etc/httpd/conf.dにバーチャルホストの設定ファイルを置けば良い。設定ファイルをおいたらhttpdを再起動すればOKだ。
仮にxvideos.torhamzedd.comというプロジェクトがある場合、ホストOSであるWIndowsのhostsには
- 192.168.56.101 xvideos.torhamzedd.com
そしてゲストOS側のLinuxでは、rootで/etc/httpd/conf.dにxvideos.torhamzedd.com.confなどの名前でファイルを作成し、以下のように書き込んでおけばOKということになる。
- <VirtualHost *:80>
- ServerAdmin root@localhost
- ServerName xdiveos.torhamzedd.com:80
- DocumentRoot /home/develop/xvideos.torhamzedd.com/htdocs
- ErrorLog /home/develop/xvideos.torhamzedd.com/log/error.log
- CUstomLog /homd/develop/xvideos.torhamzedd.com/log/access.log combined
- </VirtualHost>:
これでOKだ。
■終わりですぞ!!
というわけで、若干駆け足で説明したけど、これでWindows7上のVirtualBoxでFedoraをCUIで動かすことができたはずだ。
部分的にかなり説明不足なところもあるかとは思うけど、興味があれば己が調べてみると良いだろう。俺は俺で勝手に調べてやってる。
ではバイなら。
facebook
twitter
google+
fb share