drupal
DrupalのログインURLをカンタンに変更する方法
超!ご無沙汰でございました。
特に書くものが無かったというよりも、その気にならなかったってのがホントのトコロでございました。。。
さて、表題の件でございます。
Drupalではログインする為のURLはサイト/user となっております。。
Drupalをいじっている者であれば、誰でも知ってる事URL。
普通に考えて、都合が悪いですよね。。
そこで!
このログインURLを書き換えてしまおう!!しかもカンタンに♪
さて、その方法はと申せば。。
超カンタンです。
URLエイリアスの管理ページから、 /user のパスに別のエイリアスを当ててしまう。。
そして、テキトウなページを作成して、そのページにuserのエイリアスを当てる。
たったこれだけ!
大切なポイントは、テキトウなページを作成してuserのエイリアスを当てておく事です。
これをやらないと、システムパスにアクセスされたら表示されてしまいますので、ご注意を!
CoreServer・XREAサーバーでPHPをCGIモードで回し場合のCronの実行に関して。
やたらと長いタイトルですが。。
CoreServer・XREAサーバーでPHPをCGIモードで回し場合、拡張子がPHPのファイルを走らせる事ができないケースが出てきます。
drupalの場合、定期的でも不定期でもcron.phpを回してあげる必要がありますが、CGIモードの場合には、回ってくれません。
PoormansCron使えばいーじゃん!と言われてしまえばそれまでの話しですが、そこをなんとか。。と。。
解決策はじつはかなり簡単です。
実行させる.shの中には
/usr/local/bin/php /virtual/アカウント/ファイル設置ディレクトリ/cron.cgi
exit
と。
あとは、cron.phpをcron.cgiにリネームするだけです。
.shから、これはPHPとして回すんだからな!との命令があるので、ファイルの拡張子はなんでも構わないんですよ。
但し、不思議な事にPHPだけは不具合が出てしまいます。
やればやるほどDrupal。
Drupalでサイトの作成を行う上でのネックになりそうな携帯電話への対応。
以前から、モバイル対応のモジュールやテーマ等もありましたが、それだけで充分な携帯対応ができてたかと言えば、ほぼNOだったと思います。
今回、あるサイトをDrupalで作成し、携帯への対応もかなりがんばりました。
そこで一番よく働いてくれたのがコンテンツテンプレートモジュールです。
このコンテンツテンプレートモジュールは、コンテンツタイプ毎に出力するコードの制御を行えるモジュールで、ティーザー・本文・RSSとそれぞれを違った形で出力させる事もできちゃうモジュールです。
コンテンツテンプレートモジュールを利用するにはCCKモジュールの使用が前提となります。
CCKで定義したフィールドのデータを整形して出力させる事が可能になります。
Drupalの場合、CCKで定義したフィールドのデータにそれぞれ個別のクラスが与えられた形でHTMLコードが出力されますが、無駄にタグが増えてしまいますので、それらの不要なタグを削除したり、任意のタグや文字列を追加して出力させられるようになりますので、CSSでの表示の整形もかなり好き放題やれるようになります。
この、コンテンツテンプレートモジュールでも、PHPコードを利用できますので、独自の処理を追加したりという事も可能になってきます。
今回のサイトでは、このコンテンツテンプレートモジュールの中で、携帯とPCとで違うコードを出力させる処理を入れる事で振分けを行う事ができるようになりました。
そして、その次に頑張ってくれたモジュールはVIEWSモジュールです。
VIEWSモジュールは、このモジュールを使わなければ、Drupalの魅力に気づく事ができないほど、必要不可欠なモジュールです。
記事一覧の生成などにもって来いのモジュールなのですが、こちらもCCKで定義したフィールドをチョイスして表示させる事ができるモジュールです。
今回のサイトでは、PC用と携帯用とそれぞれ別々の記事一覧を生成させ、PC用・携帯用でそれぞれどちらを表示させるかをメニューやブロック、そしてテーマで切替えるようにしました。
今回、携帯用に使用したテーマはjp_mobileというテーマで、内部はUTF-8、入出力はS-JISに変換するという、日本の携帯電話事情に合わせた素晴らしいテーマです。
また、このテーマは、携帯キャリア毎に出力するヘッダをも変えてくれる機能まで備わっています。
そしてそして。PC・ケータイの振分けを行ってくれるモジュールはMobile Toolsモジュール。
こちらのモジュールで、どのテーマを適用するかの判定を行うのですが、ケータイでも今ではiPhoneやExperiaなどのスマートフォンが多くなってきて、その判定で困るかな?とも思ったのですが、それらもOS毎に判定を行い、どのテーマで出力させるかを細かく設定できるようになってます。
今回のサイトの制作をやってみて、Drupalでは、最初は無理か?なんて思った事もできてしまう柔軟さを再確認しました。
とにもかくにも、CCK・コンテンツテンプレート・Views。この三つのモジュールは必須中の必須です。
このモジュールがあれば、だいたいの事ができてしまうのがDrupalです。
DrupalでタクソノミータームのRSSを隠す。
DrupalはRSS配信の機能がモノスゴク長けています。
タクソノミーモジュールで定義したターム毎にページを自動生成し、更にはそのターム毎のRSSも配信します。
そのRSSを受ける側にとっては、大変便利な機能ではあるのですが。
レアなケースですが、RSSのURLを隠したい場合もサイトの運営の手法によっては発生しますね。
ただ今、当方で作成しているウェブサービスのサイトがありますが、このサイトの場合、ターム毎のRSSは配信して欲しくないんです。
という事でどこをどういじれば、ターム毎のRSSのURL隠せるか。
なんとか解決する事ができました。
タクソノミーモジュールの中のtaxonomy.pages.incの45行目(6.15)
drupal_add_feed(url('taxonomy/term/'. $str_tids .'/'. $depth .'/feed'), 'RSS - '. $title);
ここをコメントアウトする事でOKです。
但し、ターム毎のページにエイリアスを適用して、そもそものタームのURLも隠さないと、Drupalを知っている人には、RSSのURLがバレてしまいますので、ご注意下さい。
ターム毎のRSSのURLは隠しますが、生成はされていますので、ご心配なく。
さくらインターネットでDrupal(運用編)
以前、このブログの中でさくらインターネットのサーバーでdrupalを利用するにはという記事を書きましたが、更にもう一つ。
インストールするにもコツが必要なのですが、実運用するにもコツが必要だという事が判明いたしました。
サイトルートに設置するhtaccessとphp.iniはさくらに合わせたものが必要という事があちこちのサイトでも言われていましたが、
運用を始めてみると、/sites/default/files 以下のディレクトリに変更を加えるモジュールを設置している場合に不具合が発生します。
/sites/default/filesにhtaccessが作成され、それのおかげでそのディレクトリにアクセスができなくなってしまう為に、CSSや画像が呼び出せない状況になります。
作られたhtaccessを削除してしまえば、問題なくアクセスできるのですが、例えば画像をアップロードしたりした際に、またhtacceessが作成されてしまいますので、その度に作られたhtaccessを削除しなければならなくなってしまいますので、運用なんてできたもんじゃありません。
回避方法。
/sites/default/filesにhtaccessが作成される前に、中身が空っぽのhtaccessを設置してしまい、パーミッションを444に設定。
これで、システムが新たなhtaccessを作成する事ができなくなりますので、問題なく運用できるようになります。
それでは皆様、良いお年を。
ホワイトハウスの公式サイトもDrupalに。
日本ではまだまだ認知度の低いCMSであるDrupalですが、海外では圧倒的な支持を得ています。
PACT PUBLISHINGでのオープンソースCMSアワードでは2007年2008年と連覇を果たした他、アメリカでの政府機関での採用も多数あります。
そんな中、ホワイトハウスの公式サイトもDrupalに移行したらしいとの情報から早速拝見させていただきました。
かなりカスタマイズされているのですが、もう既にDrupalで運用されています。
はい!
当サイトもDrupalで運用させていただいております。
さくらインターネットでDrupal
さくらインターネットのサーバーでDrupalを運用するには、さくら専用にhtaccessを書き換えなければ動かないという情報があちらこちらにあります。
当方でも、昨日の午後からさくらインターネットのサーバーにDrupalをインストールしてみましたが、
htaccessを一切いじらない状態では500 server errorが返ってくるはずなのに、そのエラーが出ませんでした。
しかし、インストール後にもDrupal内部でエラーが出まくりで、6xでも5xでも関係なく、エラーエラーエラー。エラーの嵐。
表示されていたエラーメッセージで検索しても、全く情報が得られず、なんじゃこりゃ?なんて思っていたのですが、
帰宅後に、インストールしたサイトを開いて、再度エラーをださせようとしたところ、ログイン後に、何かの操作をすると、セッションが切られてしまうという状態。
日中よりも更に状態が悪化しているではありませんか。
DBをまっさらにして、全てのファイルをアップロードしなおして、さぁ!インストール!とやってみれば、今度はForbiddenの表示。。
なんなんだこれは!!と思いましたが、ウェブアプリケーションファイアーウォールのせいであるという事が判明し、それをオフったところ、インストール画面が表示。
インストール自体も、すんなりと終わり、動作の確認をすると、今度な全く問題なく動いてくれました。
日中に出ていたエラーも全く無く、なんなんだろうと、考えて出てきた結論は。
日中までは「お試し期間中」だった為に、よくわからない制限が働いていたのだろうという事。
日付が替わり、正式なアカウントとなった為に、正常に動作するようになったのあろうと思います。
ここでおさらいです。
さくらインターネットでDrupalを運用する場合には、正規アカウントに移行してから作業を行う事。
htaccessはOPTIONが禁止されているので、
OPTIONの前に「#」を付けて無効にする。
但し、それだけだと、DirectoyIndexが表示されてしまうので、
DirectoryIndex index.php を
DirectoryIndex index.php /index.php
と書き換える。
クリーンURLの機能を使いたい場合には、
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] を
RewriteRule ^(.*)$ /index.php?q=$1 [L,QSA]
と書き換えること。
そして、PHP.iniに
mbstring.func_overload = 0
mbstring.language = neutral
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.encoding_translation = off
mbstring.internal_encoding = UTF-8
magic_quotes_gpc = Off
register_globals = Off
session.auto_start = Off
と。
これはコンパネから入力しても良いし、php.iniのファイルを作成してアップロードしてもOK。
この記事を読んでも何がなんだかわからない人は
この記事にくっついているファイルをダウンロードして、ファイル名を変更(sakuraの文字を削除)した上で、サーバーにアップロードしてお使い下さい。
LAN内に設置したサーバーにもっと仕事をしてもらう。
当事務所では、24時間稼動のファイルサーバーを設置しています。
このサーバーはWindowsXPですが、ファイルサーバーとVPNの認証サーバー、リモートデスクトップで外部から入る場合のゲートウェイとして動かしています。
同じネットワーク上に1台、ウェブサーバーを設置してますが、ポートフォワーディングと2段ルーティングでもって、特定のポート番号でしかWindowsのサーバーには接続できないようになってます。
つい、昨日までは単なるファイルサーバーとしてしか使っていなかったのですが、多分、そうとうヒマしてるんだろうな。などと思い、ウェブサーバーとしての機能を追加して、Drupalもインストール。
グループウェア的に利用する事ととしました。
今回は、LAN内からしか接続できないのでXAMPPで簡単に済ませました。
ものの1時間も掛からず、グループウェアの完成です。
Drupalには、外部のフィードを定期的に取得する機能がありますので、複数のニュースサイトからのフィードを取得し、欲しいニュースもすぐに手に入るようにしました。
また、スケジュール管理やクライアントの管理等にも使えますので、立派にグループウェアとして機能しています。
今回利用したXAMPPの最新版ですが、PHPのバージョンが既に5.3になっていたため、少々問題が発生しましたが、なんとかかんとか解決です。
content access モジュール削除後の対応
Drupal5x用の記事毎のアクセスレベル設定に便利なContent_accessモジュールですが、
モジュールの無効化や削除だけでは、モジュールの機能が生き残ってしまい、新たな記事の作成後に少々面倒な事になります。
新たな記事を投稿したら、一旦モジュールを有効化させ、再度無効化した上でアンインストールの手順を踏まないと、ログインしていないユーザーがその記事にアクセスできないという、状態になってしまいます。
この状態は、6xバージョンアップしても、引き継がれてしまう為、content accessモジュールを一旦インストールしてしまったサイトは半永久的にこのモジュールの呪縛を受けるという事になってしまいます。
この状態から脱出する方法は、content accessモジュールをインストールした際に変更されるDBのテーブルをインストール前の状態に戻す事で可能になります。
drupalのインストールで、node_accessというテーブルも作成され、nid:0, gid:0, realm:all,grant_view:1,grant_update:0,grant_delete:0とデータが入ります。
ここに、content_accessモジュールをインストールすると、
nidの値が0から1に変更され、ノードの数だけデータが挿入されます。
content accessモジュールはアンインストールの際に、これらのデータの削除を行わない為、記事(node)が追加される度にnode_accessテーブルにデータを追加し続けてしまいます。
この為、モジュールをアンインストールしたにも拘わらず、モジュールの機能が生き続けてしまう事になってしまいます。
モジュールをアンインストールした後に、DBに直接手を入れ、nidに1以外の数字のデータを全て削除した後に、1を0に打ちかえる事でcontent accessモジュールの機能を完全に消し去る事ができます。




