.htaccessを使えるようにする。
.htaccessを有効にする。
ubuntu公開サーバで.htaccessを有効にするには、モジュールを読み込む必要がある。
「.htaccess」ファイルを有効にする方法 – No:570 – Linuxで自宅サーバ構築(新森からの雑記)
より
現在使っているモジュールを確認する。
$ sudo apache2ctl -M Loaded Modules: core_module (static) log_config_module (static) logio_module (static) mpm_prefork_module (static) http_module (static) so_module (static) alias_module (shared) auth_basic_module (shared) authn_file_module (shared) authz_default_module (shared) authz_groupfile_module (shared) authz_host_module (shared) authz_user_module (shared) autoindex_module (shared) cgi_module (shared) deflate_module (shared) dir_module (shared) env_module (shared) mime_module (shared) negotiation_module (shared) php5_module (shared) reqtimeout_module (shared) setenvif_module (shared) status_module (shared) userdir_module (shared) Syntax OK
rewriteのモジュールがないので、a2enmodで読み込む。
$ sudo a2enmod rewrite Enabling module rewrite. To activate the new configuration, you need to run: service apache2 restart
有効にするにはapacheを再起動する必要がある。
$ sudo service apache2 restart * Restarting web server apache2 ... waiting [ OK ]
確認する。
$ sudo apache2ctl -M | grep rewrite Syntax OK rewrite_module (shared)
javascriptが動かない。
htmlへ埋め込むときに、<script type="javascript">と書くと、読み込まない。
<script type="text/javascript">と書くか、<script>だけなら動く。
mimeタイプを書く場合は正しく記述する必要がある。
HTML5/HTML5の基本/MIMEタイプ - TAG index Webサイト
この人の失敗(の気づき)のおかげで私も気づくことができた。ありがとう。
javascriptが動かない理由が・・・ | Your Way, My Way, Any Way
apacheを設定する。
先日インストールしたLAMP環境を設定していく。
Ubuntu で apache の設定。まとめ。 - freefielder.jp
を参考に進めていく。
webブラウザで「http://IPアドレス/」にアクセスしてapacheが動作しているのを確認する。
ユーザディレクトリにディレクトリを作って公開用に設定する。
$mkdir public_html //公開用のpublic_htmlディレクトリを作成する。 $sudo chmod 755 -R public_html/ //作成したディレクトリのパーミッションを設定する。 $sudo a2enmod userdir //ユーザディレクトリを公開可能にする。
で誰でもアクセスできるようにする。
さらに、このディレクトリでphpファイルを実行させるために、以下の設定ファイルを修正する。
$sudo vi /etc/apache2/mods-available/php5.conf
<IfModule mod_userdir.c> <Directory /home/*/public_html> # php_admin_value engine Off ←この行をコメントアウト </Directory> </IfModule>
設定を有効にするには、apacheを再起動する。
$ sudo service apache2 restart
public_html以下に入れたファイルは
http://サーバのIPやドメイン/~ユーザ名/以下のディレクトリ
でアクセスできる。
VPSサーバを契約して、設定する。
DTI serversMan@VPS
まずDTIのserversman@VPSに安さに引かれて申し込みをする。一月は無料というのにも引かれて。
共用サーバではなくVPSにしたのは、おもしろそうだったから。後で自爆することになるかもしれない。でも、ドットインストールの動画は確認したし、自宅でもファイルサーバでdebian使っているから大丈夫。(きっと、多分…)
選んだOSはubuntu 10.10。少し古いのが気になる。
terminalから
ssh -p 3843 root@(メールでもらったIPアドレス)
でログインする。(パスワードもメールで届く)
まず、パッケージのアップデート。
apt-get update apt-get upgrade
で、upgrade-managerをインストールして、ubuntuのバージョンを上げる。
ちなみに現在は
root@dti-vps-srv88:~# cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=10.10 DISTRIB_CODENAME=maverick DISTRIB_DESCRIPTION="Ubuntu 10.10"
である。(一応確認)
apt-get install update-manager
でupdate-managerをインストールして、
export LANG=C do-release-upgrade
で一つ上にバージョンアップする。export LANG=Cで英語表示にしているが、そのままだとインストール中のメッセージが日本語文字化けで表示されるための対策。
時間はかかるが、時々出ているダイアログに対応しつつ(大抵は設定ファイルを上書きするかどうかの問い)、インストールは完了する。
でapt-get upgradeすると、kernelが古くて対応するいくつかのパッケージが古いままになっているとメッセージが出る。
DTIのserversMan@VPSは仮想マシンの運用にOpenVZを使っていて、kernelはメインマシンと共有するためVPSユーザはバージョンアップできない。
一部バージョンアップできないままでも問題なく運用しているのは分かるけれどもdebianの現在の安定版(7.0 wheezy)やubuntuの長期サポート版(12.04LTS)をちゃんと入れられないというのは少し不安が残る。
ということで、さくらのVPSを申し込む。
さくらのVPS
申し込みとインストール
申し込んでからサポートの情報を見つつインストールを行う。
インストール用のVNCターミナルはjavaで動いているのだけど、メインで使っているubuntuではうまく動かせなかった。windows 7 を立ち上げて、その中でインストール作業を進める。(ここ(pdf)の情報によれば、icedtea6-plugin パッケージを入れてあれば動作するとのこと。)
サポート情報の通りに進めていくとOSのインストールは終了する。
インストール終了後、パッケージのアップデートをしておく。
sudo apt-get update sudo apt-get upgrade
OSのインストールが終了すれば、あとはターミナルからアクセスできる。
以下はドットインストールの講座を基に、作業を進める。
日本語化は不要。
ユーザ追加はインストール時にやったので不要。sudoも。ubuntuはrootではログインせずsudoを使う。
公開鍵を設定する。
ユーザのホームディレクトリに.sshディレクトリを作成する。パーミッションを変更しておく。
chmod 700 ~/.ssh
ローカルマシン上で鍵を作成する。
鍵の作成コマンドは
ssh-keygen -t rsa -v
鍵の名前、パスフレーズなどはデフォルトのままでOK
公開鍵のパーミッションを変更しておく
chmod 600 .ssh/id_rsa.pub
転送するにはscpを使う
scp ~/.ssh/id_rsa.pub ユーザ名@ipアドレス:~/.ssh/authorized_keys
名前はauthorized_keysに変える。
複数のPCから鍵認証でログインするには、ログインしたいPCで作成した公開鍵のファイルの中身をauthorized_keysファイルに追記していく。
鍵認証でのログインは
ssh -i ~/.ssh/id_rsa ユーザ名@ipアドレス
デフォルトで作成している場合は
ssh -i ユーザ名@ipアドレス
でつながる。
sshの設定の変更
ポート番号の変更
まず、サーバのユーザ権限から
sudo -sでスーパーユーザになる。
/etc/ssh/sshd_configを修正する。(あらかじめバックアップをとっておくとよい)
Port 22
を別の数字に設定する。(コメントアウトされているときは解除する)1024-65535
パスワードログインの禁止
PasswordAuthで検索して、yesをnoに変更する。
rootログインの禁止
PermitRootで検索して、yesをnoに変更する。(コメントアウトされているときは解除する)
修正が終了したら
service ssh restart
ポートを指定してsshをつなぐ場合は、
ssh -p ポート番号 ユーザ名@ipアドレス
firewall の設定をする。
ubuntuの場合はufwを使う。ubuntu公式wikiの記事はこちら
Linux Salad: ufwでファイアーウォールを設定より。
sudo ufw enable
で、起動する。
sudo ufw allow ssh
としておけば、sshは開放できる。
状況は
sudo ufw status
で確認できる。
LAMP環境のインストール
インストールされているパッケージを調べるには(ここ)より
dpkg --get-selections
を行う。特定のパッケージについて調べたいときはパイプでつないでgrepで検索する。
dpkg --get-selections | grep php
apacheもmysqlもphpもインストールされていない。
LAMP環境の構築は
sudo apt-get install lamp-server^
の一行で終了する。
インストールの途中でMySQLのrootパスワードを聞いてくるので設定しておく。
サービスの起動・停止、あるいは自動起動について
Debian(Ubuntu)で サービスの起動、停止を管理するツールを調べてみた(chkconfigのかわりになるもの) | レンタルサーバー・自宅サーバー設定・構築のヒントより
ubuntuではupstartを使うのが標準らしい。
Upstart - なんなんなん行く?より
パッケージをインストールした時点で、自動起動は設定されるらしい。
mysql -u root -p
でMySQLの動作確認。ちゃんと動いていた。
apacheを公開しておく。
sudo ufw allow apache
ブラウザにVPSのIPアドレスを入れると、"It works!"とちゃんと出てくる。
ビデオでやっていたRuby on RailsやPython、MongoDBは省略。
レスポンシブデザイン
素材をもらって、レスポンシブデザインの練習をする。
Media Queries
Media QueriesはMedia Typeの拡張で、同じソースからウィンドウサイズの違いに合わせて見やすく最適化できるようにする仕組み。割り当てるCSS自体を切り替える方法と、CSSの中に場合分けしてサイズごとの設定を記述する方法とがある。
/* 共通設定およびスマートフォン向けのスタイル */ .... /* タブレット向けのスタイル:481px 〜 768px */ @media only screen and (min-width: 481px) { ... } /* PC向けのスタイル:769px〜960px */ @media only screen and (min-width: 769px) { ... }
こちらはCSSファイルに記述する。まず共通する設定とスマートフォン用の設定を記述した後、それぞれのスクリーンサイズへの記述を加えてサイズごとにCSS設定が上書きされるようにする。
<link rel="stylesheet" href="style-s.css"> <link rel="stylesheet" href="style-m.css" media="only screen and (min-width:600px) and (max-width:979px)"> <link rel="stylesheet" href="style-l.css" media="only screen and (min-width:980px)">
こちらはhtmlのheadに記述する。まずstyle-s.cssを読み込んでから、mediaのスクリーンサイズによってstyle-m.cssかstyle-l.cssかを追加で読み込む。
viewport
スマートフォン用のmetaタグを記述する。
<meta name="viewport" content="width=device-width">
PC向けサイトをスマートフォン対応にするときにとりあえずやりたい3つのこと | 【スマホ×HTML5】Web&ハイブリッドアプリ開発者ブログに細かく書いてあった。width=device-widthだけ設定しておけば充分みたい。
clearfix
clearfixを使うとfloatを多用する場面で楽になる。
使い方はfloatを使うブロック要素にあらかじめclass=cfを設定しておく。
以下の記述をCSSに入れておけば、floatの解除に悩まされずに済む。(簡単なレイアウトなら使わずに済むこともある)
/* clearfix */ .cf { zoom: 1; } .cf:before, .cf:after { content: ""; display: table; } .cf:after { clear: both; }
Web Font
ここではGoogle APIからMaven Proフォントを読み出している。
<link href='http://fonts.googleapis.com/css?family=Maven+Pro:400,900' rel='stylesheet' type='text/css'>
ここでの数字指定はfont weight(フォントの太さ)を表している。かつてあったマルチプルマスターフォントに由来する数字とのこと。
マルチプルマスターフォントについては非常に興味深い話がありそう(こことかこことか)だけれども、現在ではほとんど使われていない模様。
上記のソースはGoogle Fontから自動生成されたlinkタグ。Maven Proフォントの400(normal)と900(Ultra Bold)を使うために読み込みをしている。
岡村企画製版サイトのSEO対策(続き)
岡村企画製版
http://okamura.ninja-web.net/
検索の1ページ目に出るようになったが、もう少し上に表示させたい。
まず、titleを「岡村企画製版です。」から「岡村企画製版」と体言止めにする。
あと、文書構造でulの中のpタグをいくつかh4に変えてみる。
見栄えは全く変えていない。
これでさらに様子見する。
自宅サーバのNAS、Raid5のHDDがダウン。(続き)
HDD交換して無事RAIDが再構成された翌日、ディスクの状況を再確認したら前日にトラブっていた/dev/sdbが止まっていた。/dev/sdcを追加して再構成が終わっていたのが幸いだった。業務用なら何も言わずに交換だけれども、3TBで容量もあるのでフォーマットし直して再利用する。ただ動作には注意が必要だろう。
まず状態を確認する。
# cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md2 : active raid5 sdc2[4] sda2[2] sdd2[1] 2930254440 blocks super 1.2 level 5, 8k chunk, algorithm 2 [4/3] [UUU_] md1 : active raid5 sda1[4] sdd1[3] sdc1[6] 2930279016 blocks super 1.2 level 5, 8k chunk, algorithm 2 [4/3] [U_UU] unused devices: <none>
念のため、/dev/sdbのパーティションを確認する。
# parted /dev/sdb GNU Parted 2.3 Using /dev/sdb Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) print Model: ATA ST3000DM001-1CH1 (scsi) Disk /dev/sdb: 3001GB Sector size (logical/physical): 512B/4096B Partition Table: gpt Number Start End Size File system Name Flags (parted) quit
/dev/sdcのパーティションをMB単位で調べる。
# parted /dev/sdc GNU Parted 2.3 Using /dev/sdc Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) unit MB (parted) print Model: ATA TOSHIBA DT01ACA3 (scsi) Disk /dev/sdc: 3000593MB Sector size (logical/physical): 512B/4096B Partition Table: gpt Number Start End Size File system Name Flags 1 1.05MB 1000204MB 1000203MB md1 2 1000204MB 2000399MB 1000195MB md2 (parted) quit
# parted -s /dev/sdb mklabel gpt # parted -s /dev/sdb mkpart md1 2048s 1000204MB # parted -s /dev/sdb mkpart md2 1000GB 2000399MB # mdadm --add /dev/md1 /dev/sdb1 mdadm: added /dev/sdb1 # mdadm --add /dev/md2 /dev/sdb2 mdadm: added /dev/sdb2
RAIDの状態を確認する。(表示は再構築中のもの)
# cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md2 : active raid5 sdb2[5] sdc2[4] sda2[2] sdd2[1] 2930254440 blocks super 1.2 level 5, 8k chunk, algorithm 2 [4/3] [UUU_] resync=DELAYED md1 : active raid5 sdb1[5] sda1[4] sdd1[3] sdc1[6] 2930279016 blocks super 1.2 level 5, 8k chunk, algorithm 2 [4/3] [U_UU] [>....................] recovery = 0.1% (1040008/976759672) finish=250.1min speed=65000K/sec unused devices: <none>
/dev/sdcと/dev/sdbは1TBづつ余っているので、その領域を使ってRAID1を構築する。
まず、空き領域を確認する。
# parted -s /dev/sdc print free Model: ATA TOSHIBA DT01ACA3 (scsi) Disk /dev/sdc: 3001GB Sector size (logical/physical): 512B/4096B Partition Table: gpt Number Start End Size File system Name Flags 17.4kB 1049kB 1031kB Free Space 1 1049kB 1000GB 1000GB md1 2 1000GB 2000GB 1000GB md2 2000GB 3001GB 1000GB Free Space # parted -s /dev/sdb print free Model: ATA ST3000DM001-1CH1 (scsi) Disk /dev/sdb: 3001GB Sector size (logical/physical): 512B/4096B Partition Table: gpt Number Start End Size File system Name Flags 17.4kB 1049kB 1031kB Free Space 1 1049kB 1000GB 1000GB md1 2 1000GB 2000GB 1000GB md2 2000GB 3001GB 1000GB Free Space
それぞれの空き領域にパーティションを設定して、RAID1を構築する。
# parted -s /dev/sdb mkpart md3 2000GB 3000GB # parted -s /dev/sdc mkpart md3 2000GB 3000GB # mdadm --create --assume-clean /dev/md3 --level=1 --metadata=1 --raid-device=2 /dev/sdb3 /dev/sdc3 mdadm: array /dev/md3 started.
それぞれのRAIDはLVMを使って1つのディスクとして扱えるようにしている。その論理ディスクに作成したRAIDを追加する。
# pvcreate -Z y -M2 /dev/md3 Writing physical volume data to disk "/dev/md3" Physical volume "/dev/md3" successfully created # vgextend Storage /dev/md3 Volume group "Storage" successfully extended # vgdisplay Storage | grep Free Free PE / Size 238432 / 931.38 GiB # lvextend -l +238432 /dev/Storage/lvol0 Extending logical volume lvol0 to 6.37 TiB Logical volume lvol0 successfully resized # resize2fs /dev/Storage/lvol0 resize2fs 1.42.5 (29-Jul-2012) Filesystem at /dev/Storage/lvol0 is mounted on /Storage; on-line resizing required old_desc_blocks = 350, new_desc_blocks = 408
再起動してからLVMデバイスをアンマウントして、まずディスクチェックをする。
# umount /Storage # e2fsck -f /dev/mapper/Storage-lvol0 e2fsck 1.42.5 (29-Jul-2012) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/mapper/Storage-lvol0: 574820/5723264 files (3.3% non-contiguous), 1147927269/1465133056 blocks
問題ないのを確認したら、LVMデバイスのリサイズをする。
# resize2fs /dev/mapper/Storage-lvol0 resize2fs 1.42.5 (29-Jul-2012) Resizing the filesystem on /dev/mapper/Storage-lvol0 to 1709287424 (4k) blocks. The filesystem on /dev/mapper/Storage-lvol0 is now 1709287424 blocks long.
終わったらマウントする。
# mount /Storage
最後に状態確認をする。
# df -h ファイルシス サイズ 使用 残り 使用% マウント位置 rootfs 4.1G 439M 3.5G 12% / udev 10M 0 10M 0% /dev tmpfs 801M 476K 801M 1% /run /dev/disk/by-uuid/4f838fa1-f5d4-46d0-95f4-bb7d15000ece 4.1G 439M 3.5G 12% / tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 1.7G 0 1.7G 0% /run/shm /dev/sde3 3.7G 1.6G 2.0G 45% /usr /dev/sde4 6.7G 1.4G 5.1G 21% /var /dev/mapper/Storage-lvol0 6.4T 4.3T 1.8T 71% /Storage # cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] [raid1] md3 : active raid1 sdb3[0] sdc3[1] 976620352 blocks super 1.2 [2/2] [UU] md2 : active raid5 sdc2[4] sdb2[5] sda2[2] sdd2[1] 2930254440 blocks super 1.2 level 5, 8k chunk, algorithm 2 [4/4] [UUUU] md1 : active raid5 sda1[4] sdd1[3] sdc1[6] sdb1[5] 2930279016 blocks super 1.2 level 5, 8k chunk, algorithm 2 [4/4] [UUUU] unused devices: <none> # parted -s /dev/sdb print freeModel: ATA ST3000DM001-1CH1 (scsi) Disk /dev/sdb: 3001GB Sector size (logical/physical): 512B/4096B Partition Table: gpt Number Start End Size File system Name Flags 17.4kB 1049kB 1031kB Free Space 1 1049kB 1000GB 1000GB md1 2 1000GB 2000GB 1000GB md2 3 2000GB 3001GB 1000GB md3 3001GB 3001GB 466kB Free Space
ストレージの空きが1TB増えて、それぞれのHDDは正常運転。/dev/sdbも正しくパーティションが確認できる。