ブログサービスの様にサブドメインを動的に生成する方法
ブログサービスの様に「hoge」というログインIDを作成した際、「hoge.blog.jp」のようにサブドメインを自動的に生成したかったので、その方法のメモ。
以下の3手順で行う。
- DNSの設定
- apacheの設定
- PHPでディレクトリ生成
DNSの設定
まずはDNS側の設定をする。「○○.blog.jp」の○○がどのような値でも「111.222.333.444」というIPに向けたい場合、ワイルドカードが使えるらしい。が、ムームードメイン及びtkドメインではワイルドカードを使えない模様。
ムームードメインでも2015/10/06からワイルドカードが使えるようになってた(2022/04/11追記)。
なので、Dozensという無料DNSサービスを利用する。
Dozens
http://dozens.jp
Dozensは2019/11/30にサービス終了していた(2022/04/11追記)。
アカウントを作成し、レコードを追加していく。下記がワイルドカードの例。
RECORD NAME *(ワイルドカード) TYPE A TTL 7200(無料プランだと固定) Priority 空白でOK Content 111.222.333.444(サーバーのIP入れる)
あと、ネームサーバーも変えないといけない。今回はtkドメインで試したんだけど、Management Toolsの中にNameserversというのがあるので、Use custom nameserversの中に、
ns1.dzndns.com ns2.dzndns.com ns3.dzndns.com ns4.dzndns.com
を入れておく。
これで「○○.blog.jp」とした場合に○○に何を入れても「111.222.333.444」に飛ぶようになる。
apacheの設定
次にapache側の設定。httpd.confに、
#↓↓コメントアウト付いている場合は外す NameVirtualHost *:80 #↓↓下記を追記 <VirtualHost *:80> ServerAdmin blog.jp ServerName blog.jp ServerAlias *.blog.jp VirtualDocumentRoot /var/www/html/%1 ErrorLog logs/error_log CustomLog logs/access_log common </VirtualHost>
こうすることで「hoge.blog.jp」というURLを叩いた場合「/var/www/html/hoge」がドキュメントルートとなる。
PHPでディレクトリ生成
あとはアカウント作成フォームとかと組み合わせて、
$dirName = 'hoge'; $dirPath = '/var/www/html/' . $dirName; mkdir($dirPath, 0755);
のような形でディレクトリをPHP側から作成することで、ユーザーのIDがサブドメインとして使えるようになる。
関連記事
-
-
WordPressにてPHPのAPCuを使用して高速化を図る方法
先日本サイトのサーバにAPCuを導入した。しかしながら所感にも書いたとおりAPC ...
-
-
PHPでis_fileとfile_existsについて
ファイルの存在チェックを行う際に、file_exists関数を 使用していたが、 ...
-
-
MySQLが起動も再起動もできない
サイトで障害が発生した。FTPやSSH接続は出来るけどサイト自体は表示されない。 ...
-
-
HTML / CSSで作成したコンテンツをPDFファイルで出力する方法(TCPDF)
HTML / CSSで作成したコンテンツをPDFファイルで出力させたい。以前mp ...
-
-
独自タグを変換して画像を表示させる
やりたい事↓↓ ----- {$IMG1}~{$IMG5}までの独自タグがある。 ...
-
-
PHPでデータをファイルキャッシュさせる(Cache_Lite)
最近携わった案件でPHPでファイルキャッシュをしているシステムがあった。今までフ ...
-
-
CodeIgniterのバージョンの調べ方
CodeIgniterを使っているシステムがあったが、どうも記憶しているディレク ...
-
-
iPhoneでSSH接続するアプリ
iPhoneでSSHクライアントアプリを使用する必要があった。以下に経緯等のメモ ...
-
-
サーバーリソース監視にsar(sysstat)が便利だった
過去にサーバーリソース監視のmuninとかcactiを何度か入れようとして挫折し ...
-
-
フォルダにリンク制限をかける
imgというフォルダがあり、直接URLを叩いても 中身を見られないけど、同一サー ...