Apache2.4のバーチャルホストでハマったところメモ

バーチャルホストの設定しててドハマリしたのでメモ。
ローカルの開発用Apacheなのでとりあえず全通ししたいとき。
これまで

<Directory "/var/www/foo">
  Order Allow, Deny
  Allow from all
  DirectoryIndex index.html index.cgi index.pl index.php
</Directory>

Apache2.4の場合

<Directory "/var/www/foo">
  Require all granted
  DirectoryIndex index.html index.cgi index.pl index.php
</Directory>

CentOS6.3で作るプリンタサーバ

あけましておめでとうございます。
約半年振りにブログ書きます。

今日はCentOS6.3でプリンタサーバ立ててみたのでその記録です。

環境

  • CentOS6.3が入ったサーバマシン
  • EPSON PX-A720

必要なパッケージのインストール

yumでcups関連のパッケージをインストールします。
デフォルトで入っているかもしれないですが新しいバージョンが出ている場合があるのでなるべく実行してアップデートするようにしてください。

# yum install cups
# yum install desktop-printing
# yum install hal-cups-utils

設定ファイル

設定ファイルを書き換えます。といってもcupsのバージョン1.4であればアクセス周りの設定だけです。 

# emacs /etc/cups/cupsd.conf
# Allow remote access
#Port localhost:631
Port 631
<location />
#追加
Allow @LOCAL
</location>
<location /admin>
#追加
Allow @LOCAL
</location>
<location /admin/conf>
#追加
Allow @LOCAL
</location>

これでcupsの設定は終わりです。
必要に応じてiptablesでTCP 631にアクセスできるように設定してください。

ブラウザで設定画面へいく

ブラウザで下記のようなURLにアクセスしてみてください。

https://[サーバのホスト名 or IPアドレス]:631/

デフォルトのSSL証明書オレオレ証明書なのでセキュリティ警告が出てくるとおもいますが続行するようにしてください。
下記のような画面が出たら成功です。

f:id:tyoshihisa:20130115001455j:plain

出なかったらもう1度手順を見なおしてみてください。iptablesの設定はできているでしょうか。

PPDの入手

ここまででcupsの設定自体は完了です。あとはプリンタを登録する作業を行います。
自分が使っているのはEpsonのPX-A720です。大学入学時に買ったものですがまだ現役で使えるのでこれを使います。

cupsで正常に登録するにはPPDファイルというものが必要です。Linux用ドライバとでも思ってて大丈夫です。たぶん。

Epsonの場合はこちらのダウンロードサイトから入手します。
機種名を検索条件にするとたぶん見つかります。 

PX-A720用のPPDは「epson-inkjet-printer-escpr-1.2.2-1lsb3.2.x86_64.rpm」みたいな名前のrpmファイルなのでインストールします。

# rpm -Uvh epson-inkjet-printer-escpr-1.2.2-1lsb3.2.x86_64.rpm

これで完了です。

プリンタを登録する

プリンタはもうUSBでマシンと接続してあって電源が入っているものとします。

cupsのウェブ管理画面へ行き、[管理]タブからプリンタの[プリンタの追加]をクリックします。

[ローカルプリンタ]の欄に使っているプリンタが表示されていると思うので選択して[続ける]をクリックします。

[説明]と[場所]はわかりやすい名前を付けてください。また[このプリンタを共有する]にチェックして[続ける]をクリックしてください。

表示されたら[モデル]欄で適切なモデルを選択します。PX-A720の場合はPPDがインストールできていれば「Epson PX-A720(以下略)」が出ているはずなので探して選択し[続ける]をクリックします。

あとは画面の指示に従い入力していくとサーバ側の準備は完了です。
テスト印刷をしてちゃんと印刷できるか確認してください。 

クライアント機(Windows)でプリンタを追加する

最後にクライアント機(Windows)でプリンタを登録すると完了です。

PX-A720のデバイスドライバを前もってインストールしておきます。

デバイスドライバのインストールが終わるとWindows7の場合コントロールパネルのハードウェアとサウンド→デバイスとプリンターでプリンタを追加します。

「ネットワーク、ワイヤレスまたは(以下略)」を選択してください。
検索が始まるので「探しているプリンタはこの一覧にありません」をクリックしてください。 

[共有プリンタを名前で選択する]にチェックしてプリンタのURLを入力します。

http://[サーバのホスト名 or IPアドレス]:631/printers/[プリンタの名前]

例:自分の場合

http;//192.168.0.3:631/printers/EPSON_PX-A720

ウェブ管理画面はHTTPSですが、ここではHTTPを入力します。

あとは画面の指示に従ってください。これでWindows機からも印刷できるようになっているはずです。

HandlerSocketを入れてみる

こんちはー

はてなダイアリーからHatena Blogに移行して最初の記事は
自分が契約しているさくらのVPS1GプランにHandlerSocketをインストールしたときの記録です。

環境

HandlerSocketって何?

DeNAの樋口さんが開発されたMySQLへのアクセスを高速化するプラグインで、MySQLに非SQLなインタフェースでアクセスできるようになります。
具体的には独自プロトコルでInnoDB等のストレージエンジンを直接叩くプラグインらしいです。

どんな仕組みかとかどれぐらい速くなるかは作者のスライドをみてください

インストール - makeするまで

HandlerSocketのインストールにはお使いのMySQLソースコードが必要です。あらかじめ入手しておいてください。
またHandlerSocket本体はgithubで配付されています。

# git clone https://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL.git 
# cd HandlerSocket-Plugin-for-MySQL
# ./configure --with-mysql-source=/root/rpmbuild/SOURCES/mysql-5.5.27 \
--with-mysql-bindir=/usr/bin \
--with-mysql-plugindir=/usr/lib64/mysql/plugin

configureのオプションは以下の通り指定します

  • --with-mysql-source : あらかじめ入手しておいたMySQLソースコード。自分は5.5.27を使っている
  • --with-mysql-bindir : mysqlコマンドの在処。which mysql_configしたらOK
  • --with-mysql-plugindir : プラグインの在処。それっぽいのを探す。

これでMakefileが生成されました。
あとはmake installするだけ・・・と言いたいですがCentOSを使っている方は生成されたMakefile中に書かれている「-DMY_PTHREAD_FASTMUTEX=1」を1つ残らず削除します。(clientのMakefileも忘れないように!)
削除が終わったらmake installしてください。

インストール - make後

make installが終わったら/etc/my.cnfに以下の設定を追記します.

[mysqld]
handlersocket_port = 9998
handlersocket_port_wr = 9999
handlersocket_address =
handlersocket_verbose = 0
handlersocket_timeout = 300
handlersocket_threads = 16
thread_concurrency = 128
open_files_limit = 65535

各項目の意味はググってください。
そしてmysqlに接続して以下のコマンドを実行していきます。

mysql > use mysql
mysql > install plugin handlersocket soname 'handlersocket.so'

ここまで実行したら以下のようになるはずです。

mysql > show plugins;
+-----------------------+----------+--------------------+------------------+---------+
| Name                  | Status   | Type               | Library          | License |
+-----------------------+----------+--------------------+------------------+---------+
| binlog                | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| mysql_native_password | ACTIVE   | AUTHENTICATION     | NULL             | GPL     |
| mysql_old_password    | ACTIVE   | AUTHENTICATION     | NULL             | GPL     |
| CSV                   | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| MEMORY                | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| MRG_MYISAM            | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| MyISAM                | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| ARCHIVE               | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| FEDERATED             | DISABLED | STORAGE ENGINE     | NULL             | GPL     |
| BLACKHOLE             | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| InnoDB                | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| INNODB_TRX            | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_LOCKS          | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_LOCK_WAITS     | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_CMP            | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_CMP_RESET      | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_CMPMEM         | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_CMPMEM_RESET   | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| PERFORMANCE_SCHEMA    | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| partition             | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| handlersocket         | ACTIVE   | DAEMON             | handlersocket.so | BSD     |
+-----------------------+----------+--------------------+------------------+---------+

環境によって異なるので全く同じでなくても大丈夫です。「handlersocket」という項目が出てていたら完了です。

次回は実際に接続していろいろやってみようと思います