ソーシャル ネットワーキング サイトの展開

WBOY
リリース: 2016-06-23 13:20:18
オリジナル
1223 人が閲覧しました

ソーシャル ネットワーキング サイトを展開する

1. はじめに

このプロジェクト ケースでは、SVN、LNMP、MySQL の 3 つの環境を組み合わせてソーシャル ネットワーキング サイトを展開し、SVN サーバーを構築します。 PHP のバージョン管理と集中管理 プログラマが開発したコードは、フロントエンド サーバーとして Nginx を使用し、fastcgi プロトコルを通じてバックエンド PHP サーバーにアクセスし、データ セキュリティを確保するための MySQL マスター/スレーブである PHP ページを呼び出します。レプリケーション環境は重要なユーザー データを保存するために構築され、MFS 分散ファイル システムもユーザーの写真を保存するために構築されます。

1.SVN サーバー: Baidu の概要 http://baike.baidu.com/link?url=fJT4nk4sgyc97MYSciYwlzMp2uRVsi-FkGYOEA7UtvPk4ioBl1NTaAAFRbBhuu6-YOAqaGFomxlu2j3AKgNlba を参照してください。

2.MFS 分散ファイル システムFS 分散ファイル システムはさらに強力になり、他の分散ファイル システムには、HDFS 分散ファイル システムや fastDFS 分散ファイル システムなども含まれます。

3. この環境は、実際の mysql マスター/スレーブ レプリケーションが構成されている場合にのみ限定されます。環境では、ダブルクリック ホット スタンバイを構成したり、アメーバ環境を使用して読み取り/書き込み分離、負荷分散、およびその他の機能を実現したり、大規模なネットワーク環境で MySQL クラスターを構成したりすることもできます。

2. ケース環境

1. ネットワーク トポロジ図

3. ホスト環境

オペレーティング システム CentOS6.5-64

Nginx: 192.168.0.10 /24

PHP: 192.168.0.12/24 ソフトウェア: php、mfs、fuse

MySQL マスター: 192.168.0.100/24 ソフトウェア: cmake、mysql

MySQL スレーブ: 192.168.0.101/24 ソフトウェア: cmake、mysql

マスターサーバー: 192.168 .0.20/24 ソフトウェア: mfs

MetaLogger: 192.168.0.200/24 ソフトウェア: mfs

Chunk1: 192.168.0.21/24 ソフトウェア: mfs

Chunk2: 192.168。 0.22/2 4 ソフトウェア: mfs

Chunk3: 192.168.0.23 /24 ソフトウェア: mfs

SVN: 192.168.0.172/24 ソフトウェア: subversion

実際の環境では、最初に FTP サーバーをセットアップするのが最善です。インストール CD 内のファイルは、インストール中に使用されます。ローカルで yum ファイルを設定する場合、ソフトウェア パッケージは ftp サーバー

mfs を指します。mfs ソース コード パッケージのダウンロード アドレスは http://sourceforge.net/ です。 project/moosefs/files/moosefs/1.6.27/mfs-1.6.27-5.tar.gz

fuse ソース コード インストール パッケージのダウンロード アドレス http://nchc.dl.sourceforge.net/project/fuse/fuse- 2.x/2.9.2/fuse-2.9.2.tar.gz

今回の実装手順 vmware 仮想マシン環境で完了

4. ホスト内部環境

a ホスト名を設定

root @localhost ~#ホスト名 nginx

root@localhost ~# vim /etc/hosts

192.168.0.10 nginx

192.168.0.12 php

192.168.0.100 master

192.168.0。 101 スレーブ1

192.168.0.20 mfsmaster

192.168.0.200 mfslogger

192.168.0.21 チャンク1

192.168.0.22 チャンク2

192.168.0.23 チャンク3

192.168 .0.172 svn

root@nginx ~#vim /etc/sysconfig/network

NETWORKING=yes

ホスト名=nginx

//他のホストも同様に設定されます

b. ファイアウォールをオフにします

root@localhost ~# vim /etc/selinux/config

SELINUX=disabled

root@localhost ~#service iptables stop

root@localhost ~#setenforce 0

c. ホスト IP アドレスを設定します

root@localhost ~#vim /etc/sysconfig/network-scripts/ifcfg-eth2

DEVICE=eth2

HWADDR=00: 0C:29:49:0F:81

TYPE=イーサネット

UUID=d97bca82-0440-41f9-9cd0-02fe0909cee6

ONBOOT = はい

_nm_controlled = はい

Bootproto = 静的

ipaddr = 192.168.0.10

ネットマスク= 255.255.255.0

Restart

その他 // 他のホストも同様に設定し、自分のマシンに従います ネットワーク カード デバイスの設定を表示します

d. ローカル yum サービスを構成します

root@localhost ~# rm -fr /etc/yum.repos.d/*

root@localhost ~#cat >/etc/ yum.repos.d/local.repo<

[local]

name=cjenlet

baseurl=file:///media/

enabled=1

gpgcheck=0

end

[ root@localhost ~]# mount /dev/cdrom /media/

3. ケースの実装

によるとネットワーク論理トポロジ図では、最初に LNMP 環境を展開して簡単なテストを実施し、次に MFS 環境を展開して MFS ファイル システムを PHP サーバーにマウントします。 ユーザーの写真が保存されているディレクトリには、SVN 管理環境が展開され、 Nginx と PHP の webphp ディレクトリは、集中管理のために SVN の webphp ディレクトリにリンクされます。最後に、オンラインになった後、PHP プログラマが開発したコードの呼び出しとリリースのために MySQL 環境が構築されます。

1. 導入 Nginx サーバー

A.

インストール nginx サーバー

[root@nginx ~]# yum -y install pcre-devel zlib-devel

[root@nginx ~]# useradd -M -s /sbin/nologin nginx

[root@nginx ~]# tar xvf nginx- 1.6.0.tar.tgz

[root@nginx ~]# cd nginx-1.6.0/

[root@nginx nginx-1.6.0]# ./configure --prefix=/usr/local/nginx - -with-http_stub_status_module - user = nginx-group =nginx

[root@nginx nginx-1.6.0] ]#vim /usr/local/nginx/conf/nginx.conf

C

Start nginx [root@nginx ~ ]#ln -s /usr/local/nginx/sbin/nginx /usr/ local/sbin/ // システムユーザーがコマンドを実行できるディレクトリに nginx 起動ファイルをソフトリンクします

[root@nginx ~ ]#nginx

[root@nginx ~ ]#netstat -anpl |grep nginx

2. デプロイ

PHP

サーバー

A.

インストール php サーバー [root@php ~]# yum -y install gd libxml2-devel libjpeg-devel libp ng-devel mysql-devel [root@php ~]# useradd -M -s /sbin/nologin php

[root@php ~]# tar xvf php-5.3.28.tar.gz [root@php ~] # cd php-5.3.28/ [root@php php-5.3.28]# cp /usr/lib64/mysql/libmysqlclient.so.16.0.0 /usr/lib/libmysqlclient.so //PHP のデフォルトto/ usr/lib/ libmysqlclient.so を検索

[root@php php-5.3.28]# ./configure --prefix=/usr/local/php --with-gd --with-zlib --with- mysql - -with-mysqli --with-mysql-sock --with-config-file-path=/usr/local/php --enable-mbstring --enable-fpm --with-jpeg-dir=/usr/ lib

[root@php php-5.3.28]# make&&make install

B.

設定

php-fpm

プロセス

[root@php php-5.3.28]# cd /usr/local/ php/ etc/

[root@php etc]# cp php-fpm.conf.default php-fpm.conf

[root@php etc]# vim php-fpm.conf // これらの内容を見つけて変更します pid = run/php-fpm.pid user = php

group = php

listen = 0.0.0.0:9000

pm.max_children = 50

pm.start_servers = 20

pm.min _spare_servers = 5

pm.max_spare_servers = 35

C

開始

php-fpm

プロセス

[root@php etc]# /usr/local/php/sbin/php-fpm

D. nginx テスト

まず、php ホスト上に新しい php テスト ページを作成します [root@php etc]# mkdir -p /var/www/html/webphp [root@php etc]# vim /var/www/ html/webphp/index.php

phpinfo();

?>

外部ブラウザから 192.168.0.10/index.php にアクセスします

3.

展開

MFS

分散ファイル システム

A.

Build

Master Server a. mfs をインストールします [root@mfsmaster ~]# yum -y install zlib-devel [root@mfsmaster ~]#useradd mfs -s /sbin/ nologin

[root@mfsmaster ~]#tar zxf mfs-1.6.27-5.tar.gz

[root@mfsmaster ~]#cd mfs-1.6.27 [root@mfsmaster mfs-1.6 .27] #./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount

[root@ mfsmaster mfs- 1.6.27]#make &&make install

b. 関連する設定ファイルをコピーします

[root@mfsmaster mfs-1.6.27]#cd /usr/local/mfs/etc/mfs/

[root@ mfsmaster mfs]# cp mfsexports.cfg.dist mfsexports.cfg

[root@mfsmaster mfs]#cp mfsmaster.cfg.dist mfsmaster.cfg

[root@mfsmaster mfs]#cp mfstopology.cfg.dist mfstopology.cfg

[root@ mfsmaster mfs]#cd /usr/local/mfs/var/mfs/

[root@mfsmaster mfs]#cp metadata.mfs.empty metadata.mfs

c. 関連する設定ファイルのパラメータの説明

//mfsmaster.cnf : メイン設定ファイル

//mfsexports.cnf: マウントされたディレクトリと権限設定ファイル

mfsmaster.cnf のパラメータ:

# WORKING_ USER = mfs // マスターサーバーを実行するユーザー

#WORKING_ GROUP = mfs // マスター サーバーを実行しているグループ

# SYSLOG_IDENT = mfsmaster //syslog 内のマスター サーバーの ID。マスター サーブによって生成されたことを示します

# LOCK_MEMORY = 0 // mlockall( ) mfsmaster プロセスのオーバーフローを避けるため (デフォルトは 0)

# NICE_LEVEL = -19 // 実行優先度 (可能であれば、デフォルトは -19; 注: プロセスは root として開始する必要があります)

# EXPORTS_FILENAME = /usr/local/mfs/etc/mfsexports.cfg // マウントされたディレクトリとその権限制御ファイルの保存場所

# DATA_PATH = /usr/local/mfs/var/mfs // データの保存パス、このディレクトリには、changelog、sessions、stats の 3 種類のファイルがあります。

# BACK_LOGS = 50 //メタデータ変更ログ ファイルの数 (デフォルトは 50)

# REPLICATIONS_ DELAY_INIT = 300 // 遅延コピーtime (デフォルトは 300 秒);

# REPLICATIONS_ DELAY_DISCONNECT = 3600 //チャンクサーバーの切断されたレプリケーション遅延 (デフォルトは 3600); // メタロガーのリスニング IP アドレス (デフォルトは *、任意の IP を表す); #MATOML_LISTEN_PORT = 9419 //Metalogger のリスニング ポート アドレス (デフォルトは 9419); #MATOCS_LISTEN_ HOST = * // チャンクサーバー接続に使用される IP アドレス (デフォルトは *、任意の IP を表します); #MATOCS_LISTEN_PORT = 9420 // ポートチャンクサーバー接続に使用されるアドレス (デフォルトは 9420);

#MATOCU_LISTEN_HOST = * // クライアント フック接続に使用される IP アドレス (デフォルトは *、任意の IP を表します);

#MATOCU_LISTEN_PORT = 9421 // クライアント フックに使用されるポート アドレス接続数 (デフォルトは 9421);

#CHUNKS_LOOP_TIME = 300 // チャンクのループバック頻度 (デフォルト: 300 秒);

# CHUNKS_DEL_LIMIT = 100

#CHUNKS_WRITE_REP_LIMIT = 1 // コピーされるチャンクの最大数のチャンクサーバーループ (デフォルトは 1)

# CHUNKS_READ_REP_LIMIT = 5 // ループ内のチャンクサーバーからコピーされるチャンクの最大数 (デフォルトは 5)

# REJECT_OLD_ CLIENTS = 0 // 1.6.0 より前のクライアント フックをポップアップします ( 0 または 1、デフォルトは 0)

注:

#

でコメントアウトされた変数はデフォルト値を使用します

変更
  • DATA_PATH

    指定されたディレクトリには権限が必要です mfs ,

    chown -R mfs:mfs /usr/local/mfs/var/mfs
  • mfsexports 古いものへのアクセス制御 クライアントは役に立たない 開封に注意してくださいデータのセキュリティを確保するには、ポートを変更してください: mfsexports.cnf パラメータ:

  • #
  • Client

    IP

    マウントを許可するディレクトリ
  • クライアントが所有する権限

  • 192 .168.0.0/ 24 / rw,alldirs,maproot=0

/ MFS のルートを識別します

. MFSMETA ファイル システムを識別します アドレスを指定できる形式:

IP 形式

説明

*n.n.n.n n.n.n.n/bn.n.n.n/m.m.m.m

すべての IP アドレス

単一 IP アドレス

IPネットワークアドレス/ビットマスク

IPネットワークアドレス/サブネットマスク

f.f.f.f -t.t.t.t
IP セグメント

許可の説明:

許可

説明

ro

読み取り専用モード

rw
読み取りおよび書き込みモード

alldirs
指定されたサブディレクトリのマウントを許可します

maproot
root または指定されたユーザーにマップする

password
クライアントのパスワードを指定する

d. マスターサーバーを起動します

mfsmaster.cnf および mfsexports.cnf はデフォルト値のままです

[root@mfsmaster mfs]# /usr/local/mfs/sbin/mfsmaster start

[root@mfsmaster mfs]# ps -ef |grep mfs

/usr/local/mfs/sbin/mfsmaster [-vdu] [-t locktimeout] [-c cfgfile] [start|stop|restart|reload]

//マスターサービス操作、それマスターを強制終了せず、mfsmaster stop の実行を安全に停止するのが最善です。そうしないと、次回の起動時にmetadata.mfs.backによる問題が発生するため、バックアップを使用して復元する必要があります

$/usr/local/mfs/sbin/ mfscgiserv // WEBUI 監視サービスを開始します

スクリーンショット 監視の起動情報には次のことが表示されます: すべてのホストは、MFS システムを監視するために mfsmaster のポート 9425 にアクセスすることが許可されています

http://mfsmaster:9425 または http://192.168.0.20 にアクセスしてください:9425

B. Build MetaLogger Server

a. mfs をインストールします。この手順は、マスター サーバーを構築するインストール プロセス

b. 構成ファイル

[root@mfslogger ~]# cd /usr/local/mfs/etc/mfs/

[root @mfslogger mfs]# cp mfsmetalogger.cfg.dist mfsmetalogger.cfg

[root@mfslogger mfs]# vim mfsmetalogger.cfg

MASTER_HOST = mfsmaster

ドメイン名解決が設定されておらず、hosts ファイルにホスト名レコードがない場合は、代わりにそれを使用します。 mfsmaster ホストの IP アドレスを指定します

c. MetaLogger サーバーを起動します

[root@mfslogger mfs]# /usr/ local/mfs/sbin/mfsmetalogger start

[root@mfslogger mfs]# ps -ef |grep mfs

//[root@mfslogger mfs]# /usr/local/mfs/sbin/mfsmetalogger -s // MetaLogger を停止しますサーバー

C. Build チャンクサーバー

この場合、3 つのチャンクサーバー 構築する手順は同じです

a. mfs をインストールします

このインストールプロセスとインストールの間には 1 つだけ違いがあります。マスターサーバーの構築プロセス

//[root@mfsmaster mfs-1.6.27]#./configure --prefix= /usr/local/mfs --with-default-user=mfs --with-default-group= mfs --disable-mfschunkserver --disable-mfsmount

// これは mfsmaster ホストのインストール構成です

[root @mfsmaster mfs-1.6.27]#./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable -mfsmount

b. 構成ファイル

[root@chunk1 mfs]#

cp mfschunkserver。 cfg.dist mfschunkserver.cfg

[root@chunk1 mfs]#

cp mfshdd.cfg.dist mfshdd.cfg

[root@chunk1 mfs]# vim mfschunkserver.cfg

MASTER_HOST = mfsmaster

[root@chunk1 mfs]# vim mfshdd.cfg

/data // 行 /data を追加します。 /data は MFS のパーティションです。運用環境でこのディレクトリをマウントするには、独立したパーティションまたはディスクを使用することをお勧めします

[root @chunk1 mfs]# mkdir /data/

[root@chunk1 mfs]# chown -R mfs.mfs /data/

c. チャンクサーバーを起動します

[root@chunk1 mfs]# /usr/local/mfs/ sbin/mfschunkserver start

[root@chunk1 mfs]# ps -ef |grep mfs

4. mount MFS 分散ファイルシステム

MFS のクライアントとして php ホストを使用すると、phpホストは、他の 2 つの重要なソフトウェア、mfs とヒューズをインストールする必要があります

A. インストール fuse

a. インストール

[root@php ~]# yum -y install zlib-devel

[root@ php ~]# tar xvf furuse-2.9.2.tar.gz

[root@php ~]# cd furuse-2.9.2 /

[root@php furuse-2.9.2]# ./configure

[ root@php furuse-2.9.2]#make &&make install

b. 環境変数を設定します

[root@php furuse-2.9.2]#echo "export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH" >>/etc/profile

[root@php furuse-2.9.2]#source /etc/profile

B . Install mfs

[root@php ~ ]#cd

[root@php ~ ]#useradd mfs -s /sbin/nologin

[root@php ~ ]#tar xvf furuse-2.9. 4.tar.gz

[root@php ~ ]#cd mfs-1.6.27

[root@php mfs-1.6.27]#./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster - -disable-mfschunkserver --enable-mfsmount

[root@php mfs-1.6.27]#make &&make install

C Mount MFS

[root@php ~]#mkdir -p /var/www/html/webphp/uploads/photos

[root@php ~]#modprobe furuse

[root@php ~]#/usr/local/mfs/ bin/mfsmount /var/www/html/webphp/uploads/photos -H mfsmaster

[root@php ~]#echo "export PATH=/usr/local/mfs/bin:$PATH">>/etc /profile

[root@php ~]#source /etc/profile

[root@php ~]#df -TH // マウント状況を確認する

[root@php ~]#mfsgetgoal -r /var/www /html/webphp/uploads/photos/

5. 導入 SVN 管理環境

A. インストール svn

[root@sv n ~]# yum -y install subversion

[root@svn ~]# svnserve --version

B. PHP programmers repo

[root@svn ~]# mkdir -p /opt/ のウェアハウス ディレクトリを作成します。 svn /repo

// ディレクトリを作成します

[root@svn ~]# svnadmin create /opt/svn/repo/

// 新しいリポジトリを作成します

[root@svn ~]# ls !$

conf db フォーマット フック ロック README.txt

C. Adjustment SVN parameters

[root@svn ~]# vim /opt/svn/repo/conf/svnserve.conf

[general] / / 全体的な設定

anon-access = none

// 匿名ユーザーには権限がありません

auth-access = write

// 認証されたユーザーは書き込み権限を持っています

password-db = /opt/svn/repo/ conf/ passwd // ユーザーのパスワードファイル

authz-db = /opt/svn/repo/conf/authz // ユーザー情報ファイル、主に権限内容

D. Startup SVN Service

[root@svn ~]# svnserve -d -r /opt/svn/repo/

[root@svn ~]# netstat -tunpl|grep svnserve

//プロセスを強制終了して svnserve サービスを終了します (ps -ef) | grep svnユーザーパスワード

[root@svn ~]# vim /opt/svn/repo/conf/authz

[/] sysadmin = r // ルートディレクトリは /opt/svn/repo ディレクトリであり、sysadmin は読み取りを持っていますPermissions alpha = r //アルファユーザーはルートディレクトリに対する読み取り権限を持っています [/webphp]

sysadmin = r //運用保守エンジニアはデプロイメントの読み取り権限を持っています

alpha = rw //アルファユーザーユーザーは、このディレクトリに対する読み取りおよび書き込み権限を持っています

[root@svn ~]# cd /opt/svn/repo/ // 新しく作成された webphp ディレクトリをインポートするには、このディレクトリを入力する必要があります

[ root @svn repo]# mkdir webphp

[root@svn repo]# svn import webphp file:///opt/svn/repo/webphp -m "cjenlet" // webphp ディレクトリを初期化します

F. SVN ウェアハウス webphp サービスのマッピングディレクトリを Nginx および PHP サーバーの webphp サービス ディレクトリに移動します

Nginx ホスト:

[root@nginx ~]# cd /usr/local/nginx/html/

[root@nginx html]# ls

html Index.html

[root@nginx html]# svn co svn://192.168.0.172/webphp

PHP ホスト:

[root@php ~]# cd /var/www/html/

[root @ php html]# svn co svn://svn/webphp

// プロンプトに従って、まず php ホストのローカル root ユーザーのパスワードを入力し、権限に従って sysadmin でリポジトリ ウェアハウスにログインします。 sysadmin には読み取り権限しかありません。つまり、PHP プログラマです。 開発されたコードは中央リポジトリにアップロードされます。PHP ホストはコードをローカル ディレクトリにダウンロードできますが、ローカルで変更されたコードやその他のローカル ファイルをリポジトリに追加して更新することはできません。ファイルのバージョン。つまり、PHP 開発チームがコードを開発してウェアハウスにアップロードした後、PHP サーバーはローカル コードを更新してローカル phh コードを更新するだけで済みます。

6.

デプロイメント

MySQL

データベース、マスター/スレーブ レプリケーションをデプロイする

A. インストールとデプロイメントのプロセスについては、私の実験レポート「MySQL マスター/スレーブ レプリケーションと読み取り/書き込み分離」を参照してください。 "

B. PHP プログラマーがデータベースを呼び出すためのファイルを作成します

[root@master ~]#mysql -uroot -pabc123.

mysql>データベースを作成する cjenlet; mysql>cjenlet.* のすべての権限を php に付与します@'192.168.0.%' は 'abc123.' によって識別されました; // 独自の名前でデータベースを作成します。ここでは cjenlet です

// アカウントを作成します php。192.168.0 ネットワーク セグメント内のすべての利用可能なアドレスを介して cjenlet データベースにアクセスできます。権限は非常に大きいですが、 // ユーザーを作成して他のユーザーに権限を与える権限はありません。権限が利用可能です。

// この方法では、ユーザー名 php、パスワード、mysql IP アドレスを開発プログラマーに伝えるだけです。

4. 収穫の概要

この実験ケースを通じて:

1. LNMP、MySQL、MFS の環境知識を確認、確認し、統合することができます

2. 強力なファイル管理ツールである SVN にアクセスできます

3. LAMP ネットワーク サービス、MySQL クラスター、NFS および fastDFS 分散ファイル システム、SVN ネットワーク ファイル管理、バージョン管理など、より多くのネットワーク知識を拡張および深めることができます

4. MySQL データベースの root ユーザーなど、多くの問題を解決しますローカルでログインできないことや、それに伴う副次的な問題について学びました。

5. それにより、私の知識が広がり、強化されました。たとえば、MFS 分散ファイル システムにより、MySQL クラスターの重要性を認識することができました

6. 実験プロセス全体により、私は理解することができました。理解する ネットワークサービス全体の意識が新たなレベルに上がっており、統合状態を実現するためには新たな知識を習得することが急務となっています。

7. 実験全体には 4 日かかりました。MySQL のマスター/スレーブ レプリケーションと読み取り/書き込み分離はすべて自分で完了しました。将来的にはチームでのコラボレーションが可能になることを願っています。

8. 道は長くて長くて、上も下も探します。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!