ラベル Linux の投稿を表示しています。 すべての投稿を表示
ラベル Linux の投稿を表示しています。 すべての投稿を表示

2017年4月28日金曜日

古いLinuxでyumがYumRepo Errorで実行できない場合

yum installやyum updateを実行すると以下のようなメッセージが表示されて実行できなくなりました。

Loaded plugins: fastestmirror
Determining fastest mirrors
YumRepo Error: All mirror URLs are not using ftp, http[s] or file.
 Eg. Invalid release/
removing mirrorlist with no valid mirrors: /var/cache/yum/base/mirrorlist.txt
Error: Cannot find a valid baseurl for repo: base

古いCentOSを使っているためのようです。
セキュリティのこともありますからOSごと最新に移行するのがいいに決まっているのですが、ひとまずこのままyumを使えるようにするには古いバージョンが置かれた別のサーバーを見に行くようにする必要があるようです。

/etc/yum.repos.d/CentOS-Base.repo を編集します。

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&rep
o=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

を以下のように変更します。(赤字の部分)

[base]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&rep
o=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
baseurl=http://vault.centos.org/5.11/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

[base]以外に[update]等、すべて変更します。
「5.11」の部分はバージョン番号です。使っているCentOSのバージョンは

cat /etc/redhat-release

で確認できます。

上記の参照先である http://vault.centos.org/ には各バージョンごとのファイルがそろっていますので、そのバージョンのディレクトリがあるか確認しておいてください。

以上で、yumを実行できるようになっているはずです。

2012年10月31日水曜日

mod_pagespeedの設定効果が分かる統計とメッセージ表示

ウェブページの表示を高速化するmod_pagespeed。
ログメッセージや統計情報を見て動作状況を確認することができます。
まだ、mod_pagespeedをインストールしていない方はこちらをご覧ください。

見ることができる情報は大きく分けて2種類あります。
・統計(mod_pagespeed_statistics)
・メッセージ(mod_pagespeed_message)
以下に順に見ていきます。

mod_pagespeedの統計情報を見る
はじめに、インストールしたマシンの以下のページをウェブブラウザで表示してみてください。
http://●●●/mod_pagespeed_statistics ←●●●はホスト名です。

エラーになって表示されない時は、
/etc/httpd/conf.d/pagespeed.conf
の中の
<Location /mod_pagespeed_statistics>
    Order allow,deny
    # You may insert other "Allow from" lines to add hosts you want to
    # allow to look at generated statistics.  Another possibility is
    # to comment out the "Order" and "Allow" options from the config
    # file, to allow any client that can reach your server to examine
    # statistics.  This might be appropriate in an experimental setup or
    # if the Apache server is protected by a reverse proxy that will
    # filter URLs in some fashion.
    Allow from localhost
    Allow from 127.0.0.1
    SetHandler mod_pagespeed_statistics
</Location>
となっている箇所で、以下のような行を追加してクライアントマシンからのアクセスを許可してください。
Allow from 192.168.0.1 ←クライアントマシンのIPアドレス等の行を追加する。
これで先程の統計ページが表示できるようになると思います。

このような統計情報が表示されます。

高速化の効果を数値で確認できます。
下の方のHistogramでは、「>Raw Histogram Data...」と書かれた部分をクリックすると棒グラフが表示されます(データがないときは表示されません)。


ビーコンを追加する
先ほどの統計情報の中で以下の2つはデータが0になっていると思います。
total_page_load_ms ページの総表示時間
page_load_count ページの表示回数
これらは、ウェブページの実際の表示速度を計測するためのものです。
このデータを採取するには、計測したいページのHTMLにJAVAスクリプトコードを埋め込む必要があります。
埋め込むのは、<head>~</head>と<body>~</body>の二箇所です。
<head>
    <!-- 次の行はなるべく上の方に書いてください -->
    <script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script>
</head>
<body>
    <script type='text/javascript'>
        function g()
        {
            new Image().src = '/mod_pagespeed_beacon?ets=load:' + (Number(new Date()) - window.mod_pagespeed_start);
        };
        var f = window.addEventListener;
        if(f)
            f('load', g, false);
        else
        {
            f = window.attachEvent;
            if(f)
                f('onload', g);
        }
    </script>
</body>
ドキュメントがロードされ始めてから、ロードが完了までの時間を計測して、サーバーに通知しています。
headタグ内の一行は、ページロード時の初期に実行させるため、なるべく上の方に記述してください。
上記コードを埋め込んだページをウェブブラウザで表示してから、統計ページを表示すると「total_page_load_ms」と「page_load_count」の数値が増えているのが確認できます。
「total_page_load_ms」を「page_load_count」で割り算することで、ページの平均表示時間が分かります。

mod_pagespeedのメッセージを見る
以下のページを表示するとmod_pagespeed_messageから出力されるメッセージを見ることができます。
http://●●●/mod_pagespeed_message ←●●●はホスト名です。

見られないときはクライアントマシンの接続が許可されていません。
/etc/httpd/conf.d/pagespeed.conf
の中の
<Location /mod_pagespeed_message>
    Allow from localhost
    Allow from 127.0.0.1
    SetHandler mod_pagespeed_message
</Location>
に、
Allow from 192.168.0.1 ←クライアントマシンのIPアドレス等の行を追加する。
を追加して、接続を許可してください。

mod_pagespeedのリファラー統計
もうひとつ、以前はリファラーの統計情報(mod_pagespeed_referer_statistics)というのがあったようです。
Google ChromeにInstant pagesという、閲覧される可能性が高いページを先読みする機能の動作情報を収集するものだったようですが、現在のバージョンのChromeでは廃止されているようです。もうあまり意味がありません。


以上、mod_pagespeedの情報を見る方法についてご紹介しました。
表示される情報のほとんどは、素のままのデータなので、そのままでは分かりにくいものもありますが、mod_pagespeedが効果的に機能しているかを知る手がかりになるのではないかと思います。
その他の情報については以下をご参照ください。
mod_pagespeedのインストール
・フィルターをカスタマイズする(作成中)

CSSスプライトでウェブページを高速化する方法

2012年10月25日木曜日

mod_pagespeedの超簡単なインストールと設定 CentOS+Apache

mod_pagespeedというウェブページの表示を高速化するGoogle謹製Apache組み込みモジュールがあります。
コンテンツの内容はそのままに、ファイルのダウンロード回数とダウンロードサイズを最小化することで、ウェブページの表示を速くします。対象はHTMLはもとより、CSS、JAVAScript、画像ファイルにまで及びます。

今回これをCentOSにインストールしてみました。
といっても、ものすごくあっさり使えるようになります。

1.mod_pagespeedパッケージをダウンロード

Installing mod_pagespeed From Packages
上のページに行き、右側から該当のファイルをひとつダウンロードします。
「Latest Beta Version」はベータ版、「Latest Stable Version」は安定版です。
CentOSの32ビット版なら「mod_pagespeed 32-bit .rpm (CentOS/Fedora)」を64ビット版なら「mod_pagespeed 64-bit .rpm (CentOS/Fedora)」をダウンロードします。

2.mod_pagespeedをインストール
そうしたら2つコマンドを入れます。
# yum install at
すでにatがインストールされていたら実行する必要ありませんが、インストールされていたら何も起こらないだけなので一度やっておくといいと思います。
次に、mod_pagespeedをインストールします。
# rpm -U mod-pagespeed-*.rpm
勝手にインストールされて、すぐに終わります。

おめでとうございます。以上で、インストールは終わりです。
すでにApacheに組み込まれていて、mod_pagespeedが有効化されています。
Apacheを再起動してください。
# /sbin/service httpd restart
試しに、何かウェブページを表示してみましょう。もちろん見た目は何も変わらないはずです。
ウェブブラウザのソース表示機能でHTMLソースを表示してみるとHTMLに含まれるJAVAScriptのスペースや改行が詰められていたり、画像がHTML中にエンコードされているかもしれません。
また、サーバーの /var/www/mod_pagespeed の下にキャッシュが作成されているはずです。

はじめはデフォルトの設定で使うのが安全だと思いますが、動作をカスタマイズしたい時には /etc/httpd/conf.d/pagespeed.conf を書き換えます。
とりあえず、mod_pagespeedを無効にしたいときは pagespeed.conf の「ModPagespeed on」を「ModPagespeed off」に変更してください。

pagespeed.confの詳しい設定方法は以下に記載していますので、ご覧ください。
mod_pagespeedの統計情報を使う
・フィルターをカスタマイズする(作成中)

CSSスプライトでウェブページを高速化する方法

2011年12月2日金曜日

Linuxカーネルのバージョンを確認する

yum updateをする際に現在のカーネルのバージョンを見たかったので以下のコマンドで調べた。
uname -a
以下のような結果が表示される
Linux hostname 2.6.18-274.7.1.el5 #1 SMP Thu Oct 20 16:21:01 EDT 2011 x86_64 x8
6_64 x86_64 GNU/Linux
カーネルバージョンは 2.6.18-274.7.1.el5 だと分かる。

unameはシステム情報を表示するコマンドで、オプションの指定により、マシンタイプ、ホスト名等の情報を見ることもできる。

2011年12月1日木曜日

MySQLのデータベースコピー方法

MySQLのデータベースをコマンドラインからコピーするには以下のようにする。
mysqldump コマンドの結果を mysql コマンドにパイプしている。
# mysqldump sourceDB | mysql destinationDB
sourceDB にコピー元データベース名、destinationDB にコピー先データベース名を指定する。

ユーザー名とパスワードを指定するには以下のように -u と -p オプションを使う。
# mysqldump -u USER -p PASSWORD sourceDB | mysql destinationDB

この方法によるコピーでは、コピー先に存在するテーブルは置き換えられるが、存在しないテーブルはそのまま残る。
mysqldumpの吐き出すSQLは以下のようにして見ることができるので、心配なら何が行われるのか内容を確認するとよい。
# mysqldump sourceDB > v.sql
# view v.sql
くれぐれも、コピー元とコピー先を逆にしないように注意。念には念を入れて /var/lib/mysql ディレクトリのコピーを作成する等、バックアップしてから実行すること。

2011年11月28日月曜日

大量のファイルを複数のディレクトリに分散して格納する方法

最近はハードディスクもテラバイトクラスの容量なので、大量のファイルを作ることができる。

以前、linux上でPHPを使いウェブサイトのプログラムを書いた。
それは、使っているとファイルがどんどん増えてくるシステムだ。
linuxの場合、ひとつのディレクトリに作れるファイルは最大3万とか、そういう値だったと思う。
いずれにしてもひとつのディレクトリに何万もファイルがあれば、いい加減多すぎるし、何かの時に問題が起こりかねない。
そこで、増えてくるファイルを複数のディレクトリに分散する形をとることを思いつく。

最初はディレクトリ「00001」にファイルを入れていく。1万個まで達したら、次は「00002」というディレクトリを作ってそちらに入れる。というような手法だ。
これでは、ディレクトリにいくつファイルが入っているか、どこまでディレクトリを作ったか等の管理が必要になる。例えばそのカウンターをデータベースに記録しておくといったようにだ。その場合、ウェブシステムなら連番管理の排他制御も考えなければならないかもしれない。

少し面倒なので別の方法を考えた
まず年でディレクトリを作り、その下に月日でディレクトリを作る。実際のファイルはその月日ディレクトリの下に入れる。一日に数千個程度までのファイル数であれば、これで対処できる。まだ無理なら時刻でサブディレクトリを作っても良い。
ファイル名は時刻やuniqid()を使う。

しかしながら、このことは今のシステムを作ってから思いついた。
よく考えず、別の方法で作ってしまったのだ。
たぶん大丈夫だと思うが、自分の納得のいかない状態になっているのが、ちょっと気分が悪い。

2011年11月25日金曜日

lsのディレクトリ名が暗い青色で読めない

linuxのコマンドラインでlsコマンドを打つと、ディレクトリ名等の文字が色分けされて表示されるが、ディレクトリ名が暗い青色で表示されて、よく見えない。
顔を近づけて見るとなんとか読めるが、不便なので色を変更したい。

/etc/DIR_COLORS をホームディレクトリにコピーする。
# cd
# cp /etc/DIR_COLORS .dir_colors

次にコピーしたファイルを編集する。
# vi .dir_colors

以下の行を編集する。
DIR 01:34 # directory

例えば下のように 34→44に変更する。44は青色の反転表示。
色の種類はすぐ上のコメントに英語で書かれている。
DIR 01:44 # directory

変更を反映するために、evalコマンド実行。
# eval `dircolors .dir_colors -b`

このように読みやすくなった。

.dir_colorsファイルの設定しだいで、他にもファイルの種類や、zip、jpg等の拡張子で色分けできたり、太字、ブリンク等の修飾も可能。

2011年11月24日木曜日

MySQL Connector 64bitでMS-AccessからMySQLにテーブルリンクを作成できない

Linux上に構成したMySQLをMS-Accessから見られると便利だ。
MySQL Connector/ODBC でそれができる。
ODBC経由で接続して、MS-Accessからテーブルを表示したり、編集したりできる。

Windows 7の64bit版を使っているので、MySQLのサイトから
「Windows (x86, 64-bit), MSI Installer」
という64bit版のプログラムをダウンロードした。バージョンは5.1.9だ。
しかし、MS-Access上でテーブルへのリンクが作成できなかった。

どうやってもできなくて
「Windows (x86, 32-bit), MSI Installer」
という32bit版に入れ替えると、使うことができた。

それで使えているから別にいいのだが、Windows 7の64bit版なので、MySQL Connectorも64bit版が正しいような気が…なぜ?

2011年11月22日火曜日

MySQL5.5.17 + Research Artisan Lite

以前、CentOS5.6とMySQL5.1の環境でResearch Artisan Liteというアクセス解析を使わせていただいていたのだが、サーバーがクラッシュして再インストールしなおした際、ついでにとCentOS5.7+MySQL5.5.17にバージョンアップしたところ、Research Artisan Liteの設定ができなくなってしまった。

最初のインストール後の設定画面でデータベースの設定をした後、
赤色で「入力内容に誤りがある為、データベースに接続できません。」
と表示される。

Research Artisan LiteはまだMySQL5.5に対応していないらしい。
「ra_core」ディレクトリの中の「*.sql」ファイルから「TYPE = INNODB」や「TYPE = MYISAM」と書かれている場所をgrepで検索して、「TYPE」を「ENGINE」に書き換えることで動くようになるらしい。
MySQLがバージョンアップして構文が変わったのが原因だ。
全部で19個のSQLファイルを書き換えたところ、無事設定することができた。

私はResearch Artisan Liteの他、Google Analyticsも併用している。
セキュリティやプライバシーの問題からだと思うが、Google Analyticsではアクセス元のIPアドレスを見ることや、個別のサイト訪問者のユーザーエージェントやページ閲覧履歴を追跡することができない。
サイト運営者としては、時には個別のユーザーの動向を調査したいことがあるので、これでは不便だ。
サイト閲覧者の利益は重要であるが、閲覧者がサイトを利用できるのは、サイト運営者が存在するからである。
世間への貢献という意味では、どちらかと言えばサイト閲覧者よりもサイト運営者の方が大きく、閲覧者はただ一方的に情報を頂戴するだけのことが多いと思う。IPアドレスや訪問者の閲覧履歴、ユーザーエージェントが、セキュリティやプライバシー上、滅多なことで重大な問題になるとは思えないし、私はこのGoogle Analyticsの閲覧者保護の部分があまり気にいっていない。
その点、Research Artisan Liteでは、一人ひとりの訪問者の動きを確認することが可能であり、手放せなくなっている。
様々な考え方はあるが、サイト運営者としてはResearch Artisan Liteの存在はありがたい。