@blog.justoneplanet.info

JavaScript、PHP、MySQLを使ったり

Drupalをインストールしてみた

なんでもDrupalのSNSモジュールはすごいらしい。

■言語の選択

インストールに使用する言語を設定するらしい。

言語の選択

■インストール必要条件

インストールできる状態かチェックしてくれる。自分はファイル(ディレクトリ)のアクセス権の設定をするように注意された。

インストール必要条件

■データベースの設定

インストールするデータベースを選択する。1つのデータベースで複数のアプリケーションをインストールする場合は、高度なオプションのテーブルプリフィクスに適切な文字列を指定して、テーブルの名前に任意の文字列を付加することを勧める。これにより他のアプリケーションがテーブルに変更を加えてしまうことを防げる。

データベースの設定

■サイトの環境設定

「サイトの名前」「管理者名」「管理者パスワード」などを設定する。下の方の「クリーンURL」というのはクエリ形式のURL(?q=about&p=123)を検索エンジンフレンドリーなもの(/about/123)にするというものだ。ちなみに前述の変更したアクセス権をこのフェーズで戻してあげる。

サイトの環境設定

■インストール完了

インストール完了

Joomla!をインストールしてみた

永遠のテーマ!?、CMSは何を選ぶべきなのか?という問題を考えるために今回Joomlaをインストールしてみることにした。

■言語選択

はじめに言語を選択する。ここでは普通に日本語を選択することにする。

言語選択画面

■インストール前の準備

サーバの設定がJoomla!のインストールに適しているか確認してくれる。自分の場合は、「configureファイルの書き込み」と「mbstring.language」の設定でエラーが出た。素晴らしいのはphp_value mbstring.language neutralと,htaccessに記述するように教えてくれるところなのだが、サーバによってはphp.iniを変更する必要があることにまで触れてくれればパーフェクトであった。

インストール前の準備

■ライセンス

Joomla! is Free Software released under the GNU/GPL License.要はGNU/GPLライセンスの下で配布されているということ。GPLでライセンスされた著作物は、その派生的著作物に関してもGPLでライセンスされなければならないということだけ覚えておけば問題になることはないだろう。

ライセンス

■データベースの設定

ユーザ名とパスワード、DB名を入力する必要がある。但し、いくつものアプリケーションを1つのデータベースで運用している場合は、拡張設定をクリックしテーブルプリフィクスを設定し、生成される各テーブル名に特異な文字列を付加した方がイイかもしれない。

データベースの設定

■FTPの設定

Joomla自体がFTPアクセスを使用する場合には設定する必要がある。今は必要ないので「いいえ」を選択した。

ftpの設定

■全般の設定

基本的には「サイト名」「E-mailアドレス」「管理者パスワード」の設定でOKだ。

全般の設定

■インストール完了

これで基本的にはインストールが完了である。数々見てきたCMSの中でも、かなり良くできているグループに入るっといえる。

インストール完了

OpenPNE3をインストールしよう

■symfony1.2.xのインストール

OpenPNE3では、Webアプリケーションフレームワークであるsymfonyを採用しているため、これがインストールされていないと動かない。更に、symfonyのバージョンは1.2系でなければならない。

symfonyをインストールする

■ファイルのダウンロードとアップロード

wgetでも構わないがクライアントに一旦ダウンロードしてみる。

解凍

解凍すると以下のディレクトリとファイルができる。

  • apps
  • cache
  • config
  • data
  • doc
  • lib
  • log
  • plugins
  • test
  • web
  • LICENSE(ファイル)
  • NOTICE(ファイル)
  • README(ファイル)
  • symfony(ファイル)

注意

「web」ディレクトリが公開ディレクトリとなるように設定を各自変更する必要がある。以下の「プログラム側設定ファイル」か「サーバの設定ファイル」のどちらかを変更しなくてはならない。どちらかというと「web」というディレクトリ名で運用しているサーバは少なかった(個人的な経験)。

プログラム側設定ファイルで変更する

以下の変更例は、「web」を「public_html」に変更する場合である。

<?php

# FROZEN_SF_LIB_DIR: /private/tmp/symfony/lib

require_once dirname(__FILE__).'/../lib/symfony/autoload/sfCoreAutoload.class.php';
sfCoreAutoload::register();

class ProjectConfiguration extends sfProjectConfiguration
{
  public function setup()
  {
    $this->enableAllPluginsExcept(array('sfCompat10Plugin'));
    $this->setIncludePath();
  }

  public function setIncludePath()
  {
    sfToolkit::addIncludePath(array(
      //PEAR
      dirname(__FILE__).'/../lib/vendor/PEAR/',
    ));
  }
}

上述を以下のように変更する。

<?php

# FROZEN_SF_LIB_DIR: /private/tmp/symfony/lib

require_once dirname(__FILE__).'/../lib/symfony/autoload/sfCoreAutoload.class.php';
sfCoreAutoload::register();

class ProjectConfiguration extends sfProjectConfiguration
{
  public function setup()
  {
    $this->enableAllPluginsExcept(array('sfCompat10Plugin'));
    $this->setIncludePath();
    $this->setWebDir($this->getRootDir() . '/public_html');
  }

  public function setIncludePath()
  {
    sfToolkit::addIncludePath(array(
      //PEAR
      dirname(__FILE__).'/../lib/vendor/PEAR/',
    ));
  }
}

追記部分は以下のコードである。

$this->setWebDir($this->getRootDir() . '/public_html');
サーバの設定ファイルを変更する

httpd.confファイルなどに以下のような記述が存在するはずだ。

DocumentRoot /var/www/sample.com/public_html

以下のように変更して、サーバを再起動する。

DocumentRoot /var/www/sample.com/web

アップロード

「web」ディレクトリが公開ディレクトリとなるようにする。つまり、「web」フォルダの中の「index.php」が(公開ディレクトリの)トップページとなるような配置にしなければならない。

■インストール

ファイルをアップロードしたディレクトリにある「symfony」と同じ階層までコマンドラインで移動する。そして以下のコマンドを実行する。

./symfony openpne:install

以下の項目について質問される。

  • DBのタイプ(mysql, pgsql, sqlite)
  • DB名
  • DBのユーザ名
  • DBのパスワード
  • DBのホスト名(localhostなど)
  • 使用するソケットへのパス(未入力可)

足りないパッケージなどなければ通常はこれで上手くいく。

■初期設定

管理側

http://sample.com/pc_backend.phpにアクセスして初期パスワード「password」を必ず変更する。

ユーザ側

http://example.com/index.phpにアクセスして初期ユーザーのパスワード「password」を必ず変更する。

OpenPNE3で画像がアップロード出来ない

■パーミッションの設定が間違っている

そんなときは、公開ディレクトリの「uploads」以下のパーミッションを、すべて「777」にする。


■公開ディレクトリの設定が間違っている

symfonyの公開ディレクトリの設定はデフォルトでは「web/」である。

しかし、これを理解せずに公開ディレクトリを「httpdocs/」などとしインストールを進めると、アップロードした写真が、「web/」配下に保存され、当然ながら公開ディレクトリとは異なるため、写真が表示されなくなる。

対策:symfonyにおける公開ディレクトリ名の変更

公開ディレクトリ名が「httpdocs」の場合

<?php
# FROZEN_SF_LIB_DIR: /private/tmp/symfony/lib
require_once dirname(__FILE__).'/../lib/symfony/autoload/sfCoreAutoload.class.php';
sfCoreAutoload::register();
class ProjectConfiguration extends sfProjectConfiguration
{
  public function setup()
  {
    $this->enableAllPluginsExcept(array('sfCompat10Plugin'));
    $this->setIncludePath();
  }
  public function setIncludePath()
  {
    sfToolkit::addIncludePath(array(
      //PEAR
      dirname(__FILE__).'/../lib/vendor/PEAR/',
    ));
  }
}

上述の「config/ProjectConfiguration.class.php」を以下のように変更する。

<?php
# FROZEN_SF_LIB_DIR: /private/tmp/symfony/lib
require_once dirname(__FILE__).'/../lib/symfony/autoload/sfCoreAutoload.class.php';
sfCoreAutoload::register();
class ProjectConfiguration extends sfProjectConfiguration
{
  public function setup()
  {
    $this->enableAllPluginsExcept(array('sfCompat10Plugin'));
    $this->setIncludePath();
    $this->setWebDir($this->getRootDir() . '/httpdocs');
  }
  public function setIncludePath()
  {
    sfToolkit::addIncludePath(array(
      //PEAR
      dirname(__FILE__).'/../lib/vendor/PEAR/',
    ));
  }
}

追記したのは、11行目部分の以下の記述。

$this->setWebDir($this->getRootDir() . '/httpdocs');

そして以下のコマンドでOpenPNEを再インストールする。

./symfony openpne:migrate
参考

別解:サーバ設定におけるWeb公開ディレクトリ名の変更

どちらかというと美しくない方法ではあるが、サーバ設定で変更する方法も考えられる。

DocumentRoot /var/www/vhosts/「ドメイン」/subdomains/「ドメイン」/httpdocs
<Directory  /var/www/vhosts/「ドメイン」/subdomains/「ドメイン」/httpdocs>

httpd.confやhttpd.include(Plesk)ファイルの上述の部分を以下のように編集

DocumentRoot /var/www/vhosts/「ドメイン」/subdomains/「ドメイン」/web
<Directory  /var/www/vhosts/「ドメイン」/subdomains/「ドメイン」/web>

■その他

symfony側のバグという可能性もある。

Nucleusのifを使ってみよう

■趣旨

備忘録です。

■使い方

ブログの名前(短縮名)で条件分岐

<%if(blogsetting,bshortname,ブログの名前)%>
<%処理1%>
<%else%>
<%
処理2%>
<%endif%>

つまりblogsettingを1つ目の引数に持ってくると

<%if(blogsetting,nucleus_blogのカラム名,対象カラムの値)%>
<%処理1%>
<%else%>
<%
処理2%>
<%endif%>

NP_MitasNom( of Nucleus Plugin)のバグを直そう

■結論

NP_MitasNom.phpの112行目あたり、

if(!$blogid && $itemid){
$blogid = getBlogIDFromItemID($itemid);
}


if(/*!$blogid && */$itemid){
$blogid = getBlogIDFromItemID($itemid);
}

と記述する

■結果

「常にWYSIWYGエディターを使いますか?」に対して、「はい」を選択した時、一般ユーザーの記事の追加、編集が出来なくなるバグを解消できる。