레이블이 OpenPNE인 게시물을 표시합니다. 모든 게시물 표시
레이블이 OpenPNE인 게시물을 표시합니다. 모든 게시물 표시

OpenPNE 3.1 を CentOS 5 にインストールしてみました

OpenPNE開発チームの小川です。




前回はレンタルサーバに OpenPNE 3 をインストールする例を紹介しましたが、今回は自分で管理しているサーバへのインストール例として OpenPNE 3.1.0 を最小セットアップ状態の CentOS 5.3 にインストールする手順をご紹介します。



OpenPNE 3.1 の一般的なインストール方法は、OpenPNE3.1 セットアップ手順 をご覧ください。



はじめに

ここで紹介する手順は OpenPNE を動作させる例として最低限の手順しか記載していないので、実際に公開サーバの設定をする際には参考程度にご利用ください。



以下の手順では sudo を使用していますが、sudo の設定をしていない環境では「sudo」の付いているコマンドは「sudo」を抜いて root ユーザで実行してください。



また、ホスト名として sns.example.com を、OpenPNE を管理する一般ユーザとして admin を例にしていますが、環境に合わせて適宜読み替えてください。



ミドルウェアのインストール

Apache, MySQL, Postfix のインストール

yum コマンドを使ってOS標準のパッケージをそのままインストールします。



$ sudo yum install httpd mysql-server postfix



PHP のインストール

PHP に関してはバージョン 5.2.3 以降が必要なので、個別にインストールします。ソースコードからコンパイルしてももちろんよいのですが、今回は oss.oracle.com で公開されている rpm パッケージを利用しました。



$ sudo yum install aspell curl gmp libxslt wget



$ DIST=http://oss.oracle.com/projects/php/dist/files/EL5/i386

$ wget $DIST/php-5.2.9-1.el5.i386.rpm

$ wget $DIST/php-cli-5.2.9-1.el5.i386.rpm

$ wget $DIST/php-common-5.2.9-1.el5.i386.rpm

$ wget $DIST/php-gd-5.2.9-1.el5.i386.rpm

$ wget $DIST/php-mbstring-5.2.9-1.el5.i386.rpm

$ wget $DIST/php-mysql-5.2.9-1.el5.i386.rpm

$ wget $DIST/php-pdo-5.2.9-1.el5.i386.rpm

$ wget $DIST/php-xml-5.2.9-1.el5.i386.rpm

$ sudo rpm -ivh php-*.rpm

準備中... ########################################### [100%]

1:php-common ########################################### [ 13%]

2:php-cli ########################################### [ 25%]

3:php-pdo ########################################### [ 38%]

4:php ########################################### [ 50%]

5:php-gd ########################################### [ 63%]

6:php-mbstring ########################################### [ 75%]

7:php-mysql ########################################### [ 88%]

8:php-xml ########################################### [100%]



APC のインストール(オプション)

PHP の快適な動作にはアクセラレータの導入が欠かせません。ここではセットアップガイドでも推奨されている APC をインストールしてみます。



$ sudo yum install autoconf213 automake gcc make httpd-devel



$ wget $DIST/php-devel-5.2.9-1.el5.i386.rpm

$ sudo rpm -ivh php-devel-5.2.9-1.el5.i386.rpm



$ sudo yum install php-pear

$ sudo pear channel-update pear.php.net

$ sudo pear upgrade-all --ignore-errors

$ sudo pecl install APC

Use apxs to set compile flags (if using APC with Apache)? [yes] : yes

...

install ok: channel://pecl.php.net/APC-3.0.19

configuration option "php_ini" is not set to php.ini location

You should add "extension=apc.so" to php.ini

$ echo "extension=apc.so"
sudo tee /etc/php.d/apc.ini



ミドルウェアの設定

Apache の設定

VirtualHost の設定を httpd.conf の末尾に追加します。



$ sudo vi /etc/httpd/conf/httpd.conf



<VirtualHost *:80>

ServerName sns.example.com

DocumentRoot /var/www/sns/web

<Directory /var/www/sns/web>

AllowOverride All

</Directory>

</VirtualHost>



OpenPNE を設置するディレクトリを作成します。



$ sudo mkdir /var/www/sns

$ sudo chown admin. /var/www/sns



設定ファイルが間違っていないかどうかテストします。



$ sudo /etc/init.d/httpd configtest

Warning: DocumentRoot [/var/www/sns/web] does not exist

Syntax OK



/var/www/sns/web は後の手順で作成するので、この Warning が出るのはよしとして進めます。



デーモンの起動

$ sudo /etc/init.d/httpd start

$ sudo /etc/init.d/mysqld start

$ sudo /etc/init.d/postfix start



MySQL のユーザ設定

まず、root ユーザのパスワードを設定します。new-password の部分は変更してください。



$ mysql -u root



mysql> UPDATE mysql.user SET Password = PASSWORD('new-password') WHERE User = 'root';

Query OK, 3 rows affected (0.00 sec)

Rows matched: 3 Changed: 3 Warnings: 0



mysql> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.00 sec)



OpenPNE 用に openpne というユーザを作成し、openpne3 というデータベースに対するアクセス権限を与えます。pasuwado の部分は変更してください。



mysql> GRANT USAGE ON *.* TO 'openpne'@'localhost' IDENTIFIED BY 'pasuwado';

Query OK, 0 rows affected (0.00 sec)



mysql> GRANT ALL ON openpne3.* TO 'openpne'@'localhost';

Query OK, 0 rows affected (0.00 sec)



ファイアーウォールの設定

外部から HTTP でアクセスできるよう設定します。



$ sudo system-config-securitylevel-tui



「カスタマイズ」 → 「WWW (HTTP) 」にチェック → 「OK」 → 「OK」



OpenPNE 3.1 のインストール

ソースコードのダウンロード

SourceForge.net の OpenPNE プロジェクトのページから OpenPNE 3.1.0 の zip アーカイブをダウンロード・展開します。



$ sudo yum install unzip

$ cd /var/www/sns

$ wget http://nchc.dl.sourceforge.net/sourceforge/openpne/OpenPNE-3.1.0.zip

$ unzip OpenPNE-3.1.0.zip



キャッシュファイルの削除

OpenPNE 3.1.0 の zip アーカイブには誤ったキャッシュファイルが含まれている可能性があるので、念のためキャッシュファイルの削除をしてください。(3.1.0 バージョン固有の問題で、通常のインストールでは必要ありません)



$ cd OpenPNE-3.1.0

$ rm cache/*



プラグインインストール

OpenPNE 3.1.0 では初期データの登録処理の関係上、openpne:install タスクを実行する前に opPlugin:sync タスクを実行してあらかじめプラグインをインストールしておく必要があります。



せっかくなので、先日リリースされたばかりの opDiaryPlugin も一緒にインストールしておきましょう。



$ php symfony opPlugin:sync

$ php symfony opPlugin:install --stability=beta opDiaryPlugin



openpne:install タスクの実行

$ php symfony openpne:install



openpne:install タスクを実行すると DB のセットアップに必要な情報を聞かれるので、サーバ環境に合わせて入力していきます。



Choose DBMS (mysql, pgsql or sqlite)

使用する DBMS の種類を入力します。

ここでは、「mysql」と入力します。

Type database username

データベースのユーザ名を入力します。

作成した MySQL のユーザ名「openpne」を入力します。

Type database password (optional)

データベースのパスワードを入力します。

作成した MySQL ユーザのパスワード「pasuwado」を入力します。

Type database hostname

データベースサーバのホスト名を入力します。

ここでは「localhost」と入力します。

Type database port number (optional)

データベースのポート番号を入力します。未入力の場合は DBMS ごとのデフォルト値が使用されます。

ここでは未入力のまま Enter を押します。

Type database name

データベース名を入力します。

ここでは例として「openpne3」と入力します。

Type database socket path (optional)

データベース接続に使用するソケットのパスを入力します。

ここでは未入力のまま Enter を押します。

最後に入力した内容の確認をします。問題なければ「y」を入力します。



The DBMS mysql

The Database Username openpne

The Database Password ******

The Database Hostname localhost

The Database Port Number

The Database Name openpne3

The Database Socket



Is it OK to start this task? (y/n)y



公開ディレクトリの設定

ここまでの手順で OpenPNE 3 が動作する状態になっているので、公開ディレクトリにシンボリックリンクを作成します。



$ cd /var/www/sns

$ ln -s OpenPNE-3.1.0/web



ブラウザからアクセス

ブラウザから「http://sns.example.com/」にアクセスして OpenPNE 3 のログイン画面が表示されれば OK です。(初期アカウントはセットアップガイドにある通り、sns@example.com / password となっています。変更して使ってください)



また、管理画面は「http://sns.example.com/pc_backend.php」へアクセスすれば表示されます。(初期アカウントはセットアップガイドにある通り、admin / password となっています。変更して使ってください)



前のページ 次のページ

コメント:5

kawakami 09-06-02 (火) 20:00 すばらしいチュートリアルです。

私のようなスキルの人間でも、2時間くらいでインストールできました。

本当に助かりました。



手嶋守 09-08-02 (日) 18:26 20090802現在、パッケージの配置が変更されていました。



DIST=http://oss.oracle.com/projects/php/dist/files/EL5/i386



wget $DIST/php52-5.2.10-2.el5.i386.rpm

wget $DIST/php52-cli-5.2.10-2.el5.i386.rpm

wget $DIST/php52-common-5.2.10-2.el5.i386.rpm

wget $DIST/php52-gd-5.2.10-2.el5.i386.rpm

wget $DIST/php52-mbstring-5.2.10-2.el5.i386.rpm

wget $DIST/php52-mysql-5.2.10-2.el5.i386.rpm

wget $DIST/php52-pdo-5.2.10-2.el5.i386.rpm

wget $DIST/php52-xml-5.2.10-2.el5.i386.rpm



ゲン・テイ・チー 09-08-06 (木) 19:01 皆様



Openpne3.xを使いたいです。

携帯から画像の投稿などをできるようにしたいです。

メールサーバの設定がわかりませんでした。

教えていただけませんか。



(私はベトナム人ですから、日本語がまだ下手です)



よろしくお願いいたします。



John 09-09-10 (木) 17:47 現在はなぜかmbstringが見つからないですね。

wget $DIST/php52-mbstring-5.2.10-2.el5.i386.rpm



匿名 10-02-24 (水) 2:59 ギブアップ。

XOOPSにトライします。

OpenPNE에서 SendMail 설정하는 방법 (휴대폰에서 파일 업로드)

OpenPNE에서 SendMail 설정하는 방법 (휴대폰에서 사진등록 가능하도록)

DNS설정가능하면、sns.example.com 이런 형태의 OpenPNE용의 서브 도메인을 작성해서 MX레코드를 설정해 두면 사용하기 쉽다

sns.example.com 을 메일용으로 할 경우
DNS 에서 sns.example.com 가 설정되어 있다는 전체하에 다음과 같이 연결하면 된다


1. config.php
define('MAIL_SERVER_DOMAIN', 'example.com');

2. vi /etc/mail/local-host-names
sns.example.com

3. vi /etc/mail/virtusertable
@sns.example.com sns-ktai@example.com

4. 3번 설정이 완료 되면 반영시키기 위해 아래 명령어 실행
# makemap hash /etc/mail/virtusertable.db < /etc/mail/virtusertable

5. vi /etc/aliases 파일에 아래 코드 추가
sns-ktai: "| php /path/to/openpne/bin/mail.php"

6. aliases 설정이 끝나면 아래 명령어 실행
# newaliases
--> 결과(오류아님) /etc/aliases: 78 aliases, longest 37 bytes, 819 bytes total

이것으로@sns.example.com쪽으로 오는 메일은 OpenPNE_DIR/bin/mail.php에서 처리하도록 설정했다 하지만 、실제로 실행해 보면 실행되지 않고 메일로그를 보면 아래와 같은 메세지가 출력 된다.

Nov 19 15:50:44 hoge sendmail smrsh: uid 8:
attempt to use "| php /path/to/openpne/bin/mail.php" (stat failed)

php 부분을 /usr/bin/php 등 전체경로로 설정해 주어야 하는데
sendmail 이 실행하는 smrsh 라는 것이 sh 보다 엄격해서 에러가 나버린다.

이것은 /etc/smrsh 아래에 /usr/bin/php 심볼링 링크를 생성하면서 문제를 회피할 수 있다

7. $ ln -s /usr/bin/php /etc/smrsh/php


php소스 컴파일을 하였다면 예를 들어 /usr/local/src/php가 루트 폴더일때
/usr/local/src/php/bin/php로 설정해 주면 이상없이 동작한다

debug : 서버에서 메일전송 및 php 연동 테스트 하는 방법 (echo 이용)

echo -e "From: sns-ktai@sns.thenamed.net\nTo: sns-ktai@sns.thenamed.net\n\nThis is TEST."

/usr/bin/php -d safe_mode=off /html/webroot/thenamed/bin/mail.php

OpenPNE o_login slavepne 프로세스 분석 by Vins

OpenPNE 로그인 구성 (심포니 프레임워크 설명 배제)

1. 메인화면에서 아이디/패스 입력
2. OpenPNE/webapp/modules/pc/do/o_login.php 의 do_o_login class의 execute 실행
3. get_auth_config() (/webapp/lib/util/util.php) 호출하며 /OpenPNE/config.php에서 설정한 글로벌 변수 인식
4. $auth = new OpenPNE_Auth($config) 호출 (webapp/lib/OpenPNE/Auth.php)
  • /OpenPNE/config.php에서 설정한 정보 직렬화
  • /OpenPNE/lib/include/Auth.php 객체 호출 .. new Auth(....);
5. $auth->logout(); 현재 남아 있을지도 모르는 세션 종료
6. LOGIN_CHECK_ENABLE (세션 유효기간 체크 로직 - 설명 패스)
7. $auth->login($requests['is_save']) 입력 받은 정보 로그인 실행
  •  $this->auth =& $this->factory(true);
  • factory 내부에서 $auth = new Auth($this->storage, $this->options, '', false); 실행
  • /OpenPNE/lib/include/Auth.php의 Auth Class는 1,2,3,4에 걸친 입력을 직렬화하여 하나의 클래스에 저장
  • 이후 1에서 입력 받은 아이디를 소문자로 치환한 후 암호화 실행
  • $this->auth->start() 실행 (/OpenPNE/lib/include/Auth.php)
  • start()메서드에서는 유니크세션키를 발생시키고 assignDate() 실행
  • assignDate()에서 유저로 부터 입력 받은 ID/PW의 get_magic_quotes_gpc 후 stripslashse 실행
  • start()메서드에서 다시 login() 실행
  • login()메서드에서 Auth_Container_DB() 객체의 fetchDate(userID, userPW, $userChap) 실행
  • Auth_Container_DB class는 /OpenPNE/lib/include/Auth/Container/DB.php에 있음
  • 생성된 Login Query 실행 (내부적으로 imbeded query 생성)
  • Auth Class에 리턴받은 데이터 각 항목에 세팅
8. $auth->getUsername() 으로 slavepne ID와 c_member 테이블 ID매칭 검색(c_member_secure테이블))
9. 로그인 인증되면 auth.inc에서 각 페이지의 세션 체크 (getUsername()으로 체크)

pc와 mobile에서 인증절차가 다를 경우라면 추가적으로 다음 프로세스를 실행해야 한다

10. 만일 config.php에서 db_fields를 사용하여 다른 데이터로 매칭 시키고 싶을 경우
      8, 9번 항목에서 사용된 $auth->getUsername() 이 아니라 다른 메서드를 생성해야함
      PC에서와 MOBILE에서 로그인 아이디가 다른 웹 사이트를 작업하고 있는
      프로젝트라면
      선략....
      'usernamecol' => 'ktaiID',

      'passwordcol' => 'ktaiPW',
      'db_fields' => array('cpid'),
      'cryptType' => 'md5',
      후략 .
     db_fields에 세팅된 값들을 Select usernamecol, passwordcol, db_fields[] from slaveAuthInfo ....후략
     세팅되므로 OpenPNE_Auth에서 Auth Class에 getSessionName을 가져올수 있다록
     메서드를 하나 더 생성해야 함
11. 나의 경우엔 /OpenPNE/webapp/lib/OpenPNE/Auth.php 즉 OpenPNE_Auth Class에 다음과 같은 메서드를 생성하였다

/**

* Auth에서 session값을 반환하도록 메서드 생성
*
* return string (2010/02/16 by yhan@gungho.jp
*/
function getSessionName($sessname) {
     return $this->auth->getAuthData($sessname);
}

이를 $auth->getUsername() 대신 $auth->getSessionName("cpid") 로 바꾸어주는데
바꾸여하 할 부분은
/OpenPNE/webapp/modules/ktai/auth.inc 에서 한군데와
/OpenPNE/webapp/modules/ktai/do/o_login.php 에서 한군데 씩 바꾸면 된다


OpenPNE라고 OpenSource를 지향하고 있지만 클래스 내부를 뜯어볼때
아직 향후 많은 부분이 보완되어야 할 것이다
하지만 지금 자체만으로도 한국업체가 일본에서 SNS를 하고 싶다면
꼭 분석해봐야 할 좋은 재료라고 하고 싶다.
한국에서 당연시 여기었던 블로그등 지금까지 익숙해져 있던것에 근거하여
기획하고 디자인하고 개발한다면
대부분 한국계열 SNS가 그래 왔던것 처럼 고전을 면치 못할 것이기 때문이다.

NHN의 쿠루쿠루가 그랫고 싸이월드 재팬이 망했으며
한국식 블러그 사이트를 들고와서 성공해 보겠다고 저마다 기업들이 아우성치고 있지만
성공하고 있는 업체가 하나도 없듯이 말이다.

팁을 하나 귓뜸해 주자면 일본의 최대 SNS사이트인 mixi나 gree 등 유저의 접속자 수의
90% or 99%가 PC도 아닌 스마트폰도 아닌 조그만 화면의 휴대폰에서 이루어진다는
사실이다
일본 의류 쇼핑몰의 경우에도 다르지 않다 휴대폰을 통한 매출이 절대적이기 때문이다.

혹시 일본에서 활동하고 있는 한국에 SNS 또는 게임 사이트를 운영하는 운영자라면
꼭 한번 생각해봐야 한다 .

이제 ceolikeproject 를 그만둘때도 되었다
기획자라면 한국적인 사고방식에서 떠나 일본유저의 눈에 마출수 있는 기획을 (네이버 그만좀 베겨라..)
디자이너라면 절대 자부심을 가지지마라 한국에서 디자인과 일본의 디자인 그 시작부터가 다르다 .
플래쉬 도배해 놓고 "나 좀 하지!!" 하고 자만하지마라 유저는 진정 플래쉬를 원하지 않는다
마지막으로 개발자 머리속에서 "주민번호" 부터 지워라
회원가입시 주민번호가 당연한 유니크 체크라고 생각하는 순간 ...
당신은 우물안에 개구리 ....

By Vins