1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CentOS 7でmod_auth_mysqlをインストールする方法

Last updated at Posted at 2017-10-13

※sudoを一部入れ忘れたので、加筆しました(2017-10-15)
※apxsを実行してもLoadModuleが入らない場合があるため加筆いたします。

今回初めて記事を投下していきます伍希(いつき)と申します。

さて、過去の記事を参考にPostfixとかそのあたりを構築していく際にPostfixadminのところで躓いたのでメモ
見る方、ツッコミ所満載ですがお許しください。

#この記事を記載した理由
まぁ、適当です(大嘘)
調べたんですが、なんか記事が見つからないんですよね(笑)

#mod_auth_mysqlってなんぞや
Apacheに実装されているBASIC認証は.htpasswdファイルを使用して認証しているのですが、これだと大規模になったとき面倒なので、MySQLのデータベースに認証情報を保存する目的で用意されたApacheのプラグイン(mod)です。
(間違ってるかもしれないですが・・・)

#分かったところで材料です(某料理番組風)

  • CentOS 7 (ちなみに私の時は7.4.1708です)
  • ネットワーク接続(WAN)(まぁ・・・当たり前ですね)

あとは、順を追って説明していきます。

この下のことをやられる方
何が起こっても責任は負えません。要は自己責任です

#modを入れるまでの手順
##1. 必要なパッケージを入れていきます
あ、そうそうMySQLですが、CentOS7ではmariaDBになってますのでご注意を

コマンド
$ sudo yum install httpd httpd-devel mariadb mariadb-libs mariadb-devel subversion mod_dav_svn mod_ssl patch wget

##2. mod_auth_mysqlとpatchをダウンロードします
一応、作業用フォルダを作ってその中にダウンロードします

コマンド
$ mkdir ~/tmp && cd ~/tmp
$ wget https://downloads.sourceforge.net/project/modauthmysql/modauthmysql/3.0.0/mod_auth_mysql-3.0.0.tar.gz
$ wget https://sourceforge.net/p/modauthmysql/patches/_discuss/thread/efda3a06/c5a7/attachment/apache22.diff

##3. mod_auth_mysqlを作っていくよー
さて、ここまで来たら、次はmod_auth_mysqlを作っていきます。
まずは解凍します

コマンド
$ tar zxf mod_auth_mysql-3.0.0.tar.gz
$ cd mod_auth_mysql-3.0.0

次に、パッチを当てていきます

コマンド
$ patch -p0 < ../apache22.diff

さて、このままビルト・・・
ちょっと待った!!!

まだ、これで完了じゃないんです。
実は、このままだとエラーが出るのでまだ手直ししていかないとダメなんです。

てことで、コードを直します。

コマンド
$ sed -i 's#return r->connection->remote_ip;#return r->connection->client_ip;#g' mod_auth_mysql.c
$ sed -i 's#ap_requires(r)#apr_table_elts(r->headers_in)#g' mod_auth_mysql.c

上記は、mod_auth_mysql.cの908行目と1273行目のコードを修正しています。

908行目はreturn r-> connection-> remote_ip;からreturn r-> connection-> client_ip;に変更
1273行目はconst apr_array_header_t *reqs_arr = ap_requires(r);からconst apr_array_header_t *reqs_arr = apr_table_elts(r->headers_in);へ変更しています。

さて、次はコンパイルしていきます

コマンド
$ sodo apxs -c -L/usr/lib64/mysql -I/usr/include/mysql -lmysqlclient -lm -lz mod_auth_mysql.c

上記は64bit用ですので、もし32bitに方がいれば/usr/lib/mysqlに修正してください。

さて、warning出てますが無視で大丈夫...かな?
※今回は無視します。

##4.入れていきます。
さて以下のコマンドを実行します

コマンド
$ sudo apxs -i mod_auth_mysql.la

これで完了となります
お疲れさまでした!!!!
もし、入ってるかわからない場合は
httpd -M | grep mysqlをするといいかもしれません。

##Ex.ちょっとまて。入ってないぞ!!!
お怒りのことと思いますが、私に怒らないでください...
モジュールがインストールされているかを確認したいときは、

コマンド
$ httpd -M | grep mysql
mysql_auth_module (shared)

このようにすれは、上のように反応が返ってきます。
しかし、これがないときは編集をしないといけません。

コマンド
$ nano /etc/httpd/conf.modules.d/00-base.conf

を実行して(nanoのところはviでもvimでもいいですよ)

追加内容
LoadModule mysql_auth_module modules/mod_auth_mysql.so

を追記して保存して下さい。
あとは

コマンド
$ service httpd reload
か
$ systemctl reload httpd

を実行してください

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?