ソーシャル ネットワーキング サイトを展開する
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<
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.confC
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.
BuildMaster 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 installb. 関連する設定ファイルをコピーします
[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)
注:
#
でコメントアウトされた変数はデフォルト値を使用します
変更
指定されたディレクトリには権限が必要です mfs ,
chown -R mfs:mfs /usr/local/mfs/var/mfsmfsexports 古いものへのアクセス制御 クライアントは役に立たない 開封に注意してくださいデータのセキュリティを確保するには、ポートを変更してください: mfsexports.cnf パラメータ:
IP
マウントを許可するディレクトリ
/ MFS のルートを識別します
. MFSMETA ファイル システムを識別します アドレスを指定できる形式:
IP 形式
説明
*
すべての IP アドレス |
| n.n.n.n
単一 IP アドレス |
| n.n.n.n/b
IPネットワークアドレス/ビットマスク |
| n.n.n.n/m.m.m.m
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. 道は長くて長くて、上も下も探します。 |