社交网站搭建详解

    社交网站搭建是为了管理PHP程序员开发的代码,要求待见SVN服务器进行版本控制。社交网站第一个版本部署在LNMP平台之上,前端为Nginx服务器,通过fastcgi协议访问后端PHP服务器,为了保证数据安全,mysql数据库搭建主从复制。

   社交网站项目包含用户相册功能,允许用户上传照片,上传照片需要使用共享存储来存放。共享存储可用的开源方案有很多,如NFS,MFS,FastDFS等。本文简化存储方案,使用NFS代替MFS的功能,现网根据公司要求进行相关搭建。


本案例拓扑:

          社交网站搭建LNMP+SVN+NFS_第1张图片

案例环境:

主机 操作系统 IP地址 主要软件
Nginx CentOS 7 192.168.88.128 nginx-1.14.0.tar.gz
PHP CentOS 7 192.168.88.129

php-5.6.38.tar.gz

MYSQL Master CentOS 7 192.168.88.130 mysql-5.6.41.tar.gz
MYSQL Slave CentOS 7 192.168.88.131 mysql-5.6.41.tar.gz
SVN CentOS 7 192.168.88.132 yum安装
NFS Redhat 6 192.168.88.133 yum安装

本文所有软件使用wget和yum安装。


                                                   一、搭建Nginx

1、安装环境包

yum install gcc gcc-c++ pcre pcre-devel zlib-devel -y

2、创建Nginx用户

useradd -M -s /sbin/nologin nginx

3、下载nginx

cd /opt/         #下载到opt目录下

wget http://nginx.org/download/nginx-1.14.0.tar.gz    #下载nginx

4、解压编译安装

tar zxf nginx-1.14.0.tar.gz   #解压

cd nginx-1.14.0/   

./configure \

--prefix=/usr/local/nginx \     #指定安装路径

--user=nginx \                        #指定用户

--group=nginx \                     #指定组

--with-http_stub_status_module  #开启统计模块

make && make install           #安装

5、优化

ln -s /usr/local/nginx/sbin/* /usr/local/sbin/     #软链接优化


vim /etc/init.d/nginx           #添加启动脚本

#!/bin/bash

#chkconfig: - 99 20

#this is nginx init

PROG="/usr/local/nginx/sbin/nginx"

PIDF="/usr/local/nginx/logs/nginx.pid"

case "$1" in

  start)

    $PROG

     ;;

  stop)

    kill -s QUIT $(cat $PIDF)

     ;;

  restart)

     $0 stop

     $0 start

     ;;

  reload)

     kill -s HUP $(cat $PIDF)

     ;;

   *)

     echo "please use: {start|stop|restart|reload}"

     exit 1

esac

exit 0

#kill -s QUIT $(cat $PIDF)表示根据PID终止Nginx进程

#kill -s HUP  $(cat $PIDF)表示根据进程号重载配置

6、修改配置文件中的fastcgi访问接口,才能访问PHP页面。

vim /usr/local/nginx/conf/nginx.conf      #修改配置文件

location ~ \.php$ {

            root     /var/www/html/webphp;

            fastcgi_pass 192.168.88.131:9000;

            fastcgi_index  index.php;

            include        fastcgi.conf;

}


                                                 二、搭建MYSQL主从服务器

1、安装环境包

yum install gcc gcc-c++  make cmake  ncurses-devel bison libaio-devel autoconf -y 

2、下载mysql5.6

cd /opt/       #下载到opt目录下

wget https://cdn.mysql.com//Downloads/MySQL-5.6/mysql-5.6.41.tar.gz        #wget命令下载

3、创建mysql用户

useradd  -s /sbin/nologin mysql

4、编译安装

cd mysql-5.6.41/

cmake  \

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DWITH_EXTRA_CHARSETS=all \

-DSYSCONFDIR=/etc \

-DMYSQL_DATADIR=/home/mysql/ \

-DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock \

-DWITH_MYISAM_STORAGE_ENGINE=1 \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_ARCHIVE_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

-DENABLED_LOCAL_INFILE=1 \

-DWITH_SSL=system \

-DMYSQL_TCP_PORT=3306 \

-DENABLE_DOWNLOADS=1 \

-DWITH_SSL=bundled

make && make install    #安装

5、优化

cp support-files/my-default.cnf  /etc/my.cnf        # 复制配置文件

cp support-files/mysql.server /etc/init.d/mysqld  # 复制启动脚本

vim /etc/init.d/mysqld        #修改启动脚本

basedir=/usr/local/mysql

datadir=/home/mysql

chmod +x /etc/init.d/mysqld       #添加执行权限

chkconfig --add mysqld              #添加至启动项

chkconfig --level 35 mysqld on       #35 模式启动

echo "PATH=$PATH:/usr/local/mysql/bin/" >> /etc/profile       #添加环境变量

source /etc/profile      #刷新环境变量      

chown -R mysql.mysql /usr/local/mysql     #改mysql安装目录的属主属组

6、初始化数据库

/usr/local/mysql/scripts/mysql_install_db \

--user=mysql \

--ldata=/var/lib/mysql \

--basedir=/usr/local/mysql \

--datadir=/home/mysql 

ln -s /var/lib/mysql/mysql.sock  /home/mysql/mysql.sock    #建立sock文件软链接

7、启动两台mysql服务器

service mysql start

8、修改主从服务器配置文件

主服务器)

vim /etc/my.cnf

[mysqld]       #mysqld模块下添加

server-id = 11

log-bin=/usr/local/mysql/data/master-bin      #指定日志文件位置

log-slave-updates=true                                   #从服务器可以读取主服务器内容

service mysqld restart                                      #重启mysql

从服务器)

vim /etc/my.cnf   

[mysqld]      #mysqld模块下添加

server-id = 22

log-bin=/usr/local/mysql/data/slave-bin

relay-log=realy-log-bin

relay-log-index=slave-relay-bin.index

service mysqld restart                               #重启mysql

9、建立mysql主从关系

主服务器)

mysql> grant replication slave on *.* to 'myslave'@'192.168.88.%' identified by '123123';    #提权

mysql> show master status;             #查看主服务器master状态

+-------------------+----------+--------------+------------------+-------------------+

| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+-------------------+----------+--------------+------------------+-------------------+

| master-bin.000001 |      411 |              |                  |                   |

+-------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

从服务器)

mysql> change master to master_host='192.168.88.129',master_user='myslave',master_password=='123123',

master_log_file='master-bin.000001',master_log_pos=411

mysql> start slave;              #开始slave

Query OK, 0 rows affected (0.04 sec)

mysql> show slave status\G;    #查看主从状态,查看下面两行为yes主从同步成功

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

                                       三、搭建PHP服务器

1、安装环境包

yum -y install gd libxml2-devel libjpeg-devel libpng-devel zlib-devel fontconfig-devel openssl-devel  bzip2-devel  gcc gcc-c++ -y

2、下载php

wget http://101.96.10.64/cn2.php.net/distributions/php-5.6.38.tar.gz   #wget命令下载

3、编译安装

./configure --prefix=/usr/local/php-fpm \

--enable-fpm --with-zlib \

--with-pdo-mysql \

--enable-mbstring \

--with-gd --with-png-dir=/usr/lib64 \

--with-jpeg-dir=/usr/lib64 \

--with-freetype-dir=/usr/lib64

make && make install           #安装

4、优化

cp php.ini-development /usr/local/php-fpm/php.ini        #复制配置文件

ln -s /usr/local/php-fpm/bin/* /usr/local/bin/                  #php命令文件软链接

ln -s /usr/local/php-fpm/sbin/* /usr/local/sbin/               #php命令文件软链接

5、为php安装加速器

tar zxf ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz -C /opt/

cd ZendGuardLoader-php-5.3-linux-glibc23-i386/php-5.3.x        

cp ZendGuardLoader.so /usr/local/php-fpm/lib/php       #拷贝加速器模块到php目录下

6、php识别加速器

vim /usr/local/php-fpm/php.ini              #修改配置文件,添加如下三行

[Zend Guard Loader]

zend_extension=/usr/local/php-fpm/lib/php/ZendGuardLoader.so

zend_loader.enable=1

7、开启Nginx的php支持

cd /usr/local/php-fpm/etc

cp php-fpm.conf.default php-fpm.conf     #复制配置文件模板

vi php-fpm.conf               #修改如下内容

pid = run/php-fpm.pid

user = php

group = php

pm.max_children=50

pm.start_servers = 20

pm.min_spare_servers = 5

pm.max_spare_servers = 35

listen = 0.0.0.0:9000          #监听所有端口

8、创建php用户,启动服务

useradd -M -s /sbin/nologin php        #创建php用户

/usr/local/sbin/php-fpm          #启动服务

[root@localhost etc]# netstat -ntap | grep php        #查看9000端口

tcp        0      0 0.0.0.0:9000            0.0.0.0:*               LISTEN      15183/php-fpm: mast 

9、建立php站点

mkdir -p /var/www/html/webphp

cd  /var/www/html/webphp

echo "THIS IS PHP-NGINX TEST" >index.php        #创建站点首页

10、测试,访问http://192.168.88.128/index.php

社交网站搭建LNMP+SVN+NFS_第2张图片

                                                            四、搭建SVN服务器


1、安装SVN

yum install subversion -y          #安装SVN

[root@localhost ~]# svnserve --version    #查看版本信息

svnserve,版本 1.7.14 (r1542130)

   编译于 Apr 11 2018,02:40:28

版权所有 (C) 2013 Apache 软件基金会。

此软件包含了许多人的贡献,请查看文件 NOTICE 以获得更多信息。

Subversion 是开放源代码软件,请参阅 http://subversion.apache.org/ 站点。

2、创建SVN仓库

mkdir -p /opt/svn/         #先创建svn目录

svnadmin create /opt/svn    #svnadmin命令将该目录作为仓库

[root@localhost ~]# ls /opt/svn/     #查看svn仓库

conf  db  format  hooks  locks  README.txt

3、SVN配置文件设置

vim /opt/svn/conf/svnserve.conf         #修改配置文件

anon-access = none

auth-access = write

password-db = /opt/svn/conf/passwd 

authz-db = /opt/svn/conf/authz

4、配置passwd和authz文件

vim /opt/svn/conf/passwd

[users]

# harry = harryssecret

# sally = sallyssecret

phpuser = 123123                #添加用户和密码


vim /opt/svn/conf/authz      #末行添加如下内容

[/]

phpuser = r                          #在/opt/svn目录下有读取权限

[/webphp]              

phpuser = rw                       #对webphp有读写权限,用于上传下载

5、开启SVN服务

[root@localhost svn]#  svnserve -d -r /opt/svn            #关闭svn使用kill命令杀死进程

[root@localhost svn]# netstat -ntap | grep svn            #查看端口

tcp        0      0 0.0.0.0:3690            0.0.0.0:*               LISTEN      39725svnserve      

6、创建webphp目录,初始化webphp目录

cd /opt/svn               #在/opt/svn下创建

mkdir webphp          #创建webphp目录

[root@localhost svn]# cd webphp/

[root@localhost webphp]# touch test.txt         #webphp下写入内容

[root@localhost webphp]# ls                            #查看文件

test.txt

[root@localhost svn]# svn import webphp file:///opt/svn/repo/webphp -m "初始化"         #初始化webphp目录

正在增加       webphp/test.txt

提交后的版本为 1。

7、测试SVN

yum install subversion -y       #先安装svn

切换到nginx服务器,在/usr/local/nginx/html下

svn cp svn://192.168.88.132/webphp

社交网站搭建LNMP+SVN+NFS_第3张图片

SVN测试成功

                                               五、 搭建NFS服务器

1、开启rpcbind和nfs服务

service rpcbind start

service nfs start

2、修改配置文件

vim /etc/exports

/opt/php * (rw,sync)     #所有主机可挂载/opt/php目录且拥有读写权限

3、创建目录,发布共享

mkdir /opt/php

exportfs -rv         #发布共享

4、客户机查看

[root@localhost html]# showmount -e 192.168.88.133

Export list for 192.168.88.133:

/opt/php *

5、挂载

mount.nfs 192.168.88.133:/opt/php /var/www/html/webphp/      #挂载nfs到本地使用

社交网站搭建LNMP+SVN+NFS_第4张图片

若使用MFS分布式存储方式挂载请阅:https://blog.51cto.com/13760226/2286907