ホーム > Ubuntu

Ubuntuのアーカイブ

Ubuntu ServerにImageMagickとImagickをインストール

この記事は
Ubuntu ServerにImageMagickとImagickをインストール
に引っ越しました。

UbuntuのApacheでmod_rewriteを有効にする

この記事は
UbuntuのApacheでmod_rewriteを有効にする
に引っ越しました。

VMware FusionにUbuntu 9 ServerをインストールしてLAMP環境の構築

Ubuntu DesktopでLAMP環境を構築

この記事はUbuntu DesktopでLAMP環境を構築に引っ越しました!

NTPを使ってUbuntuの時刻合わせ

PHPの勉強で日付に関することをやっていたら、まるで合っていないことに気がついたので、これを合わせることにする。

最近はもっぱらVMware FusionにインストールしているUbuntu Server上での作業なので、NTP(Network Time Protocol)を使って、このUbuntu Serverの時刻合わせをする。

UbuntuにはデフォルトでNTPに関するパッケージはインストールされていないので、apt-getコマンドを使ってntpのパッケージをインストールする。

$ sudo apt-get install ntp
Reading package lists… Done
Building dependency tree
Reading state information… Done
Suggested packages:
ntp-doc
The following NEW packages will be installed:
ntp
0 upgraded, 1 newly installed, 0 to remove and 36 not upgraded.
Need to get 487kB of archives.
After this operation, 1221kB of additional disk space will be used.
Get:1 http://us.archive.ubuntu.com intrepid-updates/main ntp 1:4.2.4p4+dfsg-6ubuntu2.3 [487kB]
Fetched 487kB in 2s (185kB/s)
tar: ./postinst: time stamp 2009-05-13 17:11:21 is 13029726.148910012 s in the future
tar: ./prerm: time stamp 2009-05-13 17:11:21 is 13029726.147629681 s in the future
tar: ./postrm: time stamp 2009-05-13 17:11:21 is 13029726.146984068 s in the future
tar: ./conffiles: time stamp 2009-05-13 17:11:21 is 13029726.146313312 s in the future
tar: ./md5sums: time stamp 2009-05-13 17:11:25 is 13029730.145565452 s in the future
tar: ./control: time stamp 2009-05-13 17:11:25 is 13029730.144971801 s in the future
tar: .: time stamp 2009-05-13 17:11:25 is 13029730.144455813 s in the future
Selecting previously deselected package ntp.
(Reading database … 28691 files and directories currently installed.)
Unpacking ntp (from …/ntp_1%3a4.2.4p4+dfsg-6ubuntu2.3_amd64.deb) …
Processing triggers for man-db …
Setting up ntp (1:4.2.4p4+dfsg-6ubuntu2.3) …
* Starting NTP server ntpd
…done.

これでパッケージのインストールは完了。つづいて、設定ファイルを編集する。

$ sudo vim /etc/ntp.conf
このntp.confという設定ファイル内にある「server ntp.ubuntu.com」という行をコメントアウトし、あらたに「server ntp.nict.jp」という文字列を三行、追加する。

# server ntp.ubuntu.com
server ntp.nict.jp
server ntp.nict.jp
server ntp.nict.jp

NTPサーバの再起動

$ sudo /etc/init.d/ntp restart

動作確認

 $ sudo ntpq -p
    remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 ntp-b3.nict.go. .NICT.           1 u   45   64    1    8.439  1944422   0.001
 ntp-a2.nict.go. .NICT.           1 u   44   64    1    6.520  1944422   0.001
 ntp-a3.nict.go. .NICT.           1 u   43   64    1    7.686  1944422   0.001

でも、なぜこれが動作確認になるのかよくわかっていない。

このままだと、冒頭のPHPのほうはまだ時刻は修正されないので、Apacheを再起動する。

$ sudo /etc/init.d/apache2 restart
[sudo] password for showjin:
 * Restarting web server apache2
 ... waiting    ...done.

PHPのほうを確認すると、ちゃんと現在時刻になっていた。

aptコマンドの使い方

aptは、deb形式(debian系Linuxシステムのパッケージ)のパッケージを管理するコマンド。

aptを使用するには、あらかじめ
/etc/apt/sources.list
というファイルに、パッケージの取得先(debパッケージが格納されているFTPサイトなど)を列挙しておく必要がある。

Ubuntu 8.04におけるデフォルトのsources.listの内容(パッケージ取得先のURIだけ抜粋)

deb http://jp.archive.ubuntu.com/ubuntu/ hardy main restricted
deb-src http://jp.archive.ubuntu.com/ubuntu/ hardy main restricted

deb http://jp.archive.ubuntu.com/ubuntu/ hardy-updates main restricted
deb-src http://jp.archive.ubuntu.com/ubuntu/ hardy-updates main restricted

deb http://jp.archive.ubuntu.com/ubuntu/ hardy universe
deb-src http://jp.archive.ubuntu.com/ubuntu/ hardy universe
deb http://jp.archive.ubuntu.com/ubuntu/ hardy-updates universe
deb-src http://jp.archive.ubuntu.com/ubuntu/ hardy-updates universe

deb http://jp.archive.ubuntu.com/ubuntu/ hardy multiverse
deb-src http://jp.archive.ubuntu.com/ubuntu/ hardy multiverse
deb http://jp.archive.ubuntu.com/ubuntu/ hardy-updates multiverse
deb-src http://jp.archive.ubuntu.com/ubuntu/ hardy-updates multiverse

deb http://security.ubuntu.com/ubuntu hardy-security main restricted
deb-src http://security.ubuntu.com/ubuntu hardy-security main restricted
deb http://security.ubuntu.com/ubuntu hardy-security universe
deb-src http://security.ubuntu.com/ubuntu hardy-security universe
deb http://security.ubuntu.com/ubuntu hardy-security multiverse
deb-src http://security.ubuntu.com/ubuntu hardy-security multiverse

システム全体のアップデート

システムにインストールされているdebパッケージ群をアップデートするには以下を実行。これにより、パッケージをアップデートするために必要な情報が更新される。

$ sudo apt-get update

次に、apt-getコマンドにupgradeというサブコマンドを指定して実行。これで、システムに存在するdebパッケージが最新のバージョンに更新される。

$ sudo apt-get upgrade

パッケージのインストール

apt-getコマンドの引数にinstall パッケージ名と指定することで、指定したパッケージがダウンロードされる。

$ sudo apt-get install パッケージ名

パッケージの削除

apt-getコマンドの引数にremove パッケージ名とすることで、指定したパッケージを削除

$ sudo apt-get remove パッケージ名

パッケージの検索

パッケージの検索や詳細情報の表示には、apt-getではなくapt-cacheというコマンドを使用する。検索の場合は「search」というサブコマンドを指定する。

$ apt-cache search bar

上記の例だと、barが検索ワードで、パッケージ名や説明文に「bar」を含むパッケージが表示される。

詳細情報の表示には、サブコマンドに「show」を指定してapt-cacheを実行する。

$ apt-cache show php5

実行すると、パッケージのバージョン、リリース番号や依存関係のあるパッケージ名、ファイル容量等の詳細情報が表示される。

rootに不可欠な20の主要コマンドについて

一般的なコマンド(cd, cp, ls, mkdirなど)は省く。

suコマンド

ターミナル上のコマンドラインでsuコマンドを実行するとパスワードを求めるプロンプトが表示されるので、ここにrootのパスワードを入力すると、コマンドプロンプトが「#」に変わって、root権限での操作が可能になる。(rootを抜けて一般ユーザーに戻るにはexitコマンド)

単にsuを実行すると、シェルの動作設定は一般ユーザーとしてログインしたときのものが引き継がれる。root用の設定でシェルを利用したい場合は「su -」を実行。

また、引数にユーザーを指定すると(su username)指定したユーザーの権限でシステムを操作出来るようになる。さらに、「su username -c コマンド名」で実行すると、指定したユーザーの権限で指定したコマンドを実行できる。

rpmコマンド

Red Hat系Linuxでパッケージのインストールや削除を行うコマンド。

パッケージ(rpm形式)をインストールするには「rpm -i ファイル名」、アップデートするには「rpm -U ファイル名」、削除するには「rpm -e ファイル名」を実行。

オプション「-v」を指定すると、インストールのプロセスが画面に表示される。

オプション「–force」を指定すると、一度インストールしたパッケージを強制的に再インストールしたり、アップデートすることができる。

yumコマンド

CentOSやRed Hat Enterprise Linuxなどでパッケージ管理を行うコマンド。

リポジトリにアクセスして、パッケージのインストールや交信、削除などを行うパッケージ管理のためのコマンド。

システムに最新のアップデート・パッケージを適用する場合は「yum update」を実行。表示されるアップデートの内容に問題がなければ「y」を入力してアップデートを実行。

新たなパッケージをインストールする場合は「yum install パッケージ名」を実行。パッケージを削除する場合は「yum remove パッケージ名」を実行。

コマンドの前に「-y」オプションを追加すると、実行確認をせずに処理が実行される。ユーザーからの応答が必要なくなるので、スクリプトやcronを使った自動アップデートに利用できる。

apt-getコマンド

Debian系Linuxでパッケージのインストールや削除を行うコマンド。
(Vine系Linuxなど、一部のRed Hat系Linuxでも利用可)

パッケージ(主にdeb形式)をインストールするときは「apt-get install パッケージ名」、削除には「apt-get remove パッケージ名」を実行する。

パッケージをアップデートするときは、まず「apt-get update」と実行してインストールCDやリポジトリからパッケージの最新リストを取得する。その上で「apt-get upgrade」を実行。

利用しているマシンのHDにインストールしたいパッケージがある場合はapt-getではなく、dpkgというコマンドを使う。「dpkg -i ファイル名」と実行すると、ファイル名に指定したパッケージがインストールされる。

useradd(adduser)コマンド

新規にユーザーアカウントを作成するコマンド。

オプションとしてUID(ユーザー番号)や所属グループ、パスワードなどを指定することで、それらの設定を同時に行える。

userdel(deluser)コマンド

ユーザーアカウントを削除するコマンド。

削除したいユーザーアカウントのユーザー名を引数に指定して実行。コマンド実行時に「-r」オプションを指定すると、当該ユーザーのホーム・ディレクトリの内容も削除される。

passwdコマンド

ユーザーアカウントのパスワードを変更するコマンド。

コマンド実行時にユーザー名を指定すると「passwd ユーザー名」そのユーザーのパスワードを変更できる。また、ユーザー名を指定せずに単独でコマンドを実行すると、自分のパスワードを変更出来る。

コマンド実行時に「-x 日数」というオプションを指定すると、指定した日数がパスワードの有効期限となる。(その日数を過ぎると、パスワードの変更を促される)また「-n 日数」と指定すると、指定した日数がパスワードが変更できるようになるまでの最小期限となる。(指定した日数を過ぎないとパスワードを変更できない)

さらに「-l ユーザー名」と指定すると、このユーザーアカウントが一時的に使用出来なくなり、「-u ユーザー名」で、再び使用可能となる。

fsckコマンド

ファイルシステムの検査と修復を行うコマンド。

このコマンドを実行すると、ファイルシステムの管理データに矛盾がないかどうかがチェックされる。もし、システムの終了時にファイルシステムが正常にアンマウントされなかったときは、次のLinux起動時にこのコマンドが自動的に起動する。その際、管理データに問題が見つかれば、修復を試みるかどうかの質問が表示されるので「y」または「n」を入力する。(yes or no)

shutdownコマンド

システムを停止、または再起動させるコマンド。

停止は「shutdown -h now」、再起動は「shutdown -r now」を実行。どちらもnowが指定されているが、これはこのコマンド実行後、すぐにシステムが停止、もしくは再起動をさせるための引数。nowのかわりに秒単位で時間(実行されるまでの)を指定することも可能。

shutdownのかわりに「reboot」コマンドでシステムの再起動、「halt」コマンドでシステムの停止を行うことも出来る。

telinitコマンド

ランレベルを変更するコマンド。「telinit ランレベル(数)」

Linuxシステムでは、0から6までの数字(ランレベルという)を使用することで、システムの動作モードを変更することが出来る。

Red Hat系Linuxの場合、通常はランレベル3(複数ユーザーが同時ログインできて、ログイン画面はCUIの動作モード)または5(複数ユーザーが同時にログインできて、ログイン画面はGUI)に設定されているらしい。

ランレベル1はシングルユーザー・モードと呼ばれ、root以外のユーザーはログイン出来ない状態。なので、システムのメンテナンス作業などはこのモードで行うことが望ましい。

ランレベル0はシステムの停止、ランレベル6は再起動に割り当てられている。したがって、shutdownコマンドの代わりにtelinitコマンドを使用することも出来る。また、runlevelというコマンドを実行すると、現在のランレベルが表示される。

mountコマンド

デバイス(例えばCD-ROM)に作成されているファイルシステムを別のデバイス(例えばハードディスク)のファイルシステムに割り当てるコマンド。

現時点で、ちゃんと理解していないので、また機会があったら追記する。

umountコマンド

ファイルシステムをアンマウントするコマンド。

例えば、/mntディレクトリにマウントされたファイルシステムをあうんマウントするには、「umount/mnt」と実行する。

「umount -a」と実行すると、現在マウントされているファイルシステム全てがアンマウントされる。

killコマンド

プロセスを終了、あるいは制御するコマンド。
「kill [シグナル] プロセス番号」(シグナルはなくても良い)

動作しているプログラムを終了させる。また、動作中のプロセスに対して「シグナル」を送信することで、そのプロセスの動作を変更することも出来る。例えば、SIGSTOPというシグナルを送れば、そのプロセスはいったん動作を停止する。再開させるにはSIGCONTというシグナルを送信すれば良い。

killを実行するには、まずpsコマンドを実行して、制御したいプロセス番号を確認。そして、killの引数にシグナルとプロセス番号を指定して実行すればシグナルがプロセスに送信される。

ソフトウェアの動作異常などで、killを実行してもプロセスが終了しない場合がある。その際は「-SIGKILL」というシグナルを送ることで、プロセスを強制的に終了させることが出来る。

psコマンド

実行中のプロセスを表示するコマンド。

オプションを指定せずにpsのみを実行すると、psを実行したターミナル上で動いている全てのプロセスが表示される。「ps -A」と実行すると、動作していないものも含めたすべてのプロセスを表示する。他にも多くのオプションがある。

modprobeコマンド

カーネル・モジュールをカーネルに組み込んだり、除外したりするコマンド。

主にカーネル・モジュール(例えば、周辺機器用のドライバ・プログラム)を、現在実行中のシステムに組み込むときに使用される。モジュールの組み込みには、insmodというコマンドも使用できるが、依存関係まではフォローしてくれない。その点、modprobeはそうした依存関係を考慮した上で必要なモジュール群を自動的に組み込んでくれるので、とても便利らしい。

仮に「sound」というモジュールを組み込みたければ、単に「modprobe sound」を実行。組み込んだモジュールを取り外したければ-rオプションを指定して「modprobe -r sound」と実行。他にもdepmod、lsmod、insmod、rmmodといったコマンドもある。

chmodコマンド

ファイルのパーミッションを変更するコマンド。

chmodを利用することで、ファイルのパーミッション(利用権限)を設定出来る。

ファイルのパーミッションは「シンボル」と「数値」のふたつの方法で設定出来る。

シンボルによる指定とは、所有者(u)、所有グループ(g)、その他(o)の三種類のそれぞれのユーザーに、読み込み(r)、書き込み(w)、実行(x)のパーミッションを指定する方法。たとえば、所有者には三つすべての権利を与え、他のユーザーにはあたえないとすると、以下のようなコマンドになる。

chmod u+rwx,go-rwx ファイル名

所有者(u)に三つ全ての権限(rwx)を付与(+)し、その他のユーザー(go)にはそれらの権限(rwx)を与えない(-)。

一方、数値を使用して同様の指定を行うには以下のように実行する。

chmod 700 ファイル名

数字「700」は、左から順にファイルの所有者、グループ、その他の設定を意味している。(7は全ての権利を付与、0は全ての権利を与えない、を意味する)

あるディレクトリ内(サブ・ディレクトリも含む)にある全てのファイルを対象にパーミッションを設定する場合は「-R」オプションを使用する。

chmod -R go-rwx ディレクトリ名

上記の例では、所有者以外のユーザーに対して、ここで指定したディレクトリ内にある全て(子ディレクトリ、ファイル)における全ての権利を「与えない」としている。

他にも、スティッキー・ビットの変更とかもあるらしいけど、これは必要になったらまた調べましょう。

chownコマンド

ファイルの所有者を変更するコマンド。

ファイルの所有者やグループを設定するためのコマンドで、例えば、あるファイルの所有者をroot、グループもrootに設定する場合は「chown root:root ファイル名」と実行する。

chownコマンドにおいても、chmodコマンド同様に「-R」オプションが利用出来る。

netstatコマンド

ネットワークの状態を表示するコマンド。

オプションをつけずにnetstatを実行すると、その時点でマシンがどのネットワークへ接続しているかが一覧表示される。オプションによって様々なネットワーク状況を表示することが出来るが「-r」「-n」「-t」「-u」などのオプションを使用することが多い。

-rは、ルーティング・テーブルの内容を表示するオプション。-nは、ネットワーク情報をホスト名ではなくIPアドレスで表示するオプション。-tは、TCP接続のみを表示するオプション。-uは、UDP接続のみを表示するオプション。例えば、システム内部の接続状況は表示せず、インターネットへの接続状況だけを表示するには「netstat -tu」と実行すれば良い。

ifconfigコマンド

ネットワーク・インタフェースを設定、あるいは設定内容を表示するコマンド。

ifconfigをオプションなしで実行すると、現在のネットワーク・インタフェース(Ethernetカードなどのネットワーク・デバイスのこと)の設定内容が表示される。

また、インタフェース名を指定すれば(ifconfig インタフェース名)そのインタフェースの情報だけが表示される。(例えば、一枚目のEthernetカードならeth0と指定)

特定のインタフェースにIPアドレスを設定するときもこのコマンドを利用する。例えば、eth1(二枚目のEthernetカード)に「192.168.0.10/255.255.255.0」というIPアドレスを割り当てたいときは、以下のようにifconfigを実行する。

# /sbin/ifconfig eth1 192.168.0.10 netmask 255.255.255.0

指定したインタフェースを一時的に停止したいときは(例えばeth0)「ifconfig eth0 down」、再開するには「ifconfig eth0 up」と実行する。

routeコマンド

ルーティング・テーブルを設定、あるいは設定内容を表示するコマンド。

ルーティング・テーブルとは、あるマシンがIPパケットを送信するときに、それをどのルータに送れば良いかといった経路を記した情報のこと。

routeに何もオプションを付けずに実行すると、現在のルーティング・テーブルが表示される。また、「-n」オプションを付けて実行すると、ルーティング・テーブルのホスト名がIPアドレスで表示される。

ルーティング・テーブルに新しい経路を設定したいときは、オプションとして「add」、削除したいときは「del」を指定して、routeを実行してやればよい。

Linux(Ubuntu Server 8.10) でファイルを探す(例えば php.ini)

Linux で(この場合は Ubuntu Server version 8.10)ファイル名からファイルを探す場合。

先にファイル一覧のデータベースを更新しておく

$ sudo updatedb

locate を使って、ファイルを探す(例として、この場合は php.ini)

$ locate php.ini
/etc/php5/apache2/php.ini
/etc/php5/cli/php.ini
/usr/share/doc/php5-common/examples/php.ini-dist
/usr/share/doc/php5-common/examples/php.ini-paranoid
/usr/share/doc/php5-common/examples/php.ini-recommended
/usr/share/php5/php.ini-dist
/usr/share/php5/php.ini-dist.cli

これのおかげで php.ini が php5/apache2 配下と、php5/cli 配下の二箇所にあることがわかったけど、詳しいことはよく分からない。いまんところ。
(なんで二つあるのか、違いはあるのか、対象が違うのか、内容は違うのか、違うんだったらどこが違うのか等)

Ubuntu Serverにおけるapacheの設定ファイル

この記事はUbuntu Serverにおけるapacheの設定ファイルに引っ越しました。

Ubuntu Serverでmod_rewriteを有効にする

この記事はUbuntu Serverでmod_rewriteを有効にするに引っ越しました。

ホーム > Ubuntu

検索
フィード

ページの上部に戻る