社交网站搭建详解
社交网站搭建是为了管理PHP程序员开发的代码,要求待见SVN服务器进行版本控制。社交网站第一个版本部署在LNMP平台之上,前端为Nginx服务器,通过fastcgi协议访问后端PHP服务器,为了保证数据安全,mysql数据库搭建主从复制。
社交网站项目包含用户相册功能,允许用户上传照片,上传照片需要使用共享存储来存放。共享存储可用的开源方案有很多,如NFS,MFS,FastDFS等。本文简化存储方案,使用NFS代替MFS的功能,现网根据公司要求进行相关搭建。
本案例拓扑:
案例环境:
主机 | 操作系统 | 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
四、搭建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
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到本地使用
若使用MFS分布式存储方式挂载请阅:https://blog.51cto.com/13760226/2286907
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。