标签:medium php语言 创建仓库 local bfd png linux 技术分享 地址
概述:社交网站的第一个版本部署在LNMP平台之上,前段为Nginx服务器,通过fastcgi协议访问后端的PHP服务器。为了保证数据安全,要求搭建MySQL数据库主从集群。
本项目案例结合SVN、LNMP和MySQL三种环境,部署一个社交网站,本社交网站采用PHP语言开发,搭建SVN服务器进行版本控制和集中管理PHP程序员开发的代码,以Nginx作为前端服务器,通过fastcgi协议访问后端的PHP服务器,调用PHP页面;为保证数据安全,搭建MySQL主从复制环境存储用户重要数据;另外搭建MFS分布式文件系统来存储用户照片。
* 部署SVN服务器,为PHP程序员创建repo目录的访问账户,通知程序员可以导入代码。
* 部署MySQL主从服务器,根据PHP程序员的要求创建数据库与表。
* 部署Nginx服务器。
* 部署PHP服务器。
* 部署MFS,将MFS文件系统挂载在前端PHP服务器的相关目录下。
* 通知上线部署人员可以发布上线。
* 保证数据库服务、PHP服务、Nginx服务依次启动,并通知测试人员开始测试,网站维护人员检查Nginx、PHP与数据库服务器是否正常工作。
主机 | 操作系统 | IP地址 | 主要软件 |
---|---|---|---|
Nginx | CentOS7.5 x86_64 | 172.20.10.9 | nginx-1.12.0.tar.gz |
PHP | CentOS7.5 x86_64 | 172.20.10.10 | php-5.6.11.tar.bz2/ mfs-1.6.27-5.tar.gz/fuse-2.9.2.tar.gz |
MySQL Master | CentOS7.5 x86_64 | 172.20.10.11 | mysql-5.5.24.tar.gz |
MySQL Slave | CentOS7.5 x86_64 | 172.20.10.12 | mysql-5.5.24.tar.gz |
Master Server | CentOS7.5 x86_64 | 172.20.10.13 | mfs-1.6.27-5.tar.gz |
MetaLogger | CentOS7.5 x86_64 | 172.20.10.14 | mfs-1.6.27-5.tar.gz |
Chunk Server01 | CentOS7.5 x86_64 | 172.20.10.2 | mfs-1.6.27-5.tar.gz |
Chunk Server02 | CentOS7.5 x86_64 | 172.20.10.3 | mfs-1.6.27-5.tar.gz |
SVN | CentOS7.5 x86_64 | 172.20.10.4 | subversion 1.7.14 |
安装SVN:
* systemctl stop firewalld.service
* setenforce 0
* yum install -y subversion #安装SVN
* svnserve --version #查看版本
为PHP程序员创建仓库 目录repo:
* mkdir -p /opt/svn/repo/ #创建目录
* svnadmin create /opt/svn/repo/ #创建一个新的仓库
调整SVN参数:
* [general] #总体配置
* vim /opt/svn/repo/conf/svnserve.conf # 修改配置
* anon-access = none #匿名用户没有任何权限
* auth-access = write #认证用户具有写权限
* password-db = /opt/svn/repo/conf/passwd #用户的密码文件
* authz-db = /opt/svn/repo/conf/authz #用户信息文件,主要是权限内容
* svnserve -d -r /opt/svn/repo/
* netstat -tunlp | grep svnserve
#监听端口3690
接下来为PHP程序员创建账户并赋权:
* vim /opt/svn/repo/conf/passwd
* [users]
* zhangsan = abc123 #格式:用户名=用户密码
* sysadmin = abc123
* vim /conf/authz
* [/]
* zhangsan = r #根目录即/opt/svn/repo目录下,zhangsan和sysadmin具有读的权限
* sysadmin = r
* [/webphp]
* zhangsan = rw #zhangsan和sysadmin用户对此目录有读写的权限,用户导入PHP代码
* sysadmin = rw
* mkdir /opt/svn/repo/webphp
* svn import webphp/ file:///opt/svn/repo/webphp -m "初始化svn目录"
部署MySQL主从服务器:
这里安装两台MySQL服务器直接用如下写好的shell脚本执行自动安装启动:
#!/bin/bash
yum -y install ncurses-devel cmake gcc gcc-c++ ncurses bison libaio-devel
cd ~/
tar xzvf mysql-5.5.24.tar.gz
cd mysql-5.5.24/
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/ -DWITH_MYISAM_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
\cp support-files/my-medium.cnf /etc/my.cnf
cp support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --level 35 mysqld on
echo "PATH=$PATH:/usr/local/mysql/bin/" >> /etc/profile
source /etc/profile
useradd -s /sbin/nologin mysql
chown -R mysql.mysql /usr/local/mysql
/usr/local/mysql/scripts/mysql_install_db --user=mysql --ldata=/var/lib/mysql --basedir=/usr/local/mysql --datadir=/home/mysql
sed -i ‘46c basedir=/usr/local/mysql‘ /etc/init.d/mysqld
sed -i ‘47c datadir=/home/mysql‘ /etc/init.d/mysqld
service mysqld start
netstat -anpt | grep 3306
执行脚本安装完成、启动之后查看监听端口:
修改MySQL主服务器配置文件:
登录MySQL程序,给从服务器授权:
主服务器上给PHP授权:
接下来修改MySQL从服务器配置文件:
启动从服务器之后查看监听端口:
登录MySQL从服务器配置同步:
在从服务器中可以验证,可以查看到从主服务器上同步过来的库daima:
部署Nginx服务器:
这里安装Nginx服务器直接用如下写好的shell脚本执行自动安装启动:
#!/bin/bash
yum -y install pcre-devel zlib-devel gcc gcc-c++ make
useradd -M -s /sbin/nologin nginx
tar xzvf nginx-1.12.0.tar.gz -C /opt
cd /opt/nginx-1.12.0/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
make && make install
ln -s /usr/local/nginx/sbin/* /usr/local/sbin/
nginx
netstat -antp | grep nginx
安装完成之后修改nginx配置文件:
这里安装配置PHP服务器直接用如下写好的shell脚本执行自动安装启动:
#!/bin/bash
yum -y install gd libxml2-devel libjpeg-devel libpng-devel zlib-devel fontconfig-devel openssl-devel bzip2-devel
cd ~/
tar xjvf php-5.6.11.tar.bz2
cd php-5.6.11/
./configure --prefix=/usr/local/php5 --with-gd --with-zlib -with-config-file-path=/usr/local/php5 --enable-mbstring --with-jpeg-dir=/usr/lib --with-openssl --disable-ipv6 --enable-fpm
make && make install
cp php.ini-development /usr/local/php5/php.ini
ln -s /usr/local/php5/bin/* /usr/local/bin/
ln -s /usr/local/php5/sbin/* /usr/local/sbin/
#配置php识别加速器
cd ~/
tar xzvf ZendGuardLoader-php-5.3-linux-glibc23-i386.tar.gz
cd ZendGuardLoader-php-5.3-linux-glibc23-i386/php-5.3.x
cp ZendGuardLoader.so /usr/local/php5/lib/php
sed -i ‘$a [Zend Guard Loader]\nzend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so\nzend_loader.enable=1‘ /usr/local/php5/php.ini
#开启nginx的php支持
cd /usr/local/php5/etc/
cp php-fpm.conf.default php-fpm.conf
useradd -M -s /sbin/nologin php
sed -i ‘25s/;//g‘ /usr/local/php5/etc/php-fpm.conf
sed -i ‘149,150s/nobody/php/g‘ /usr/local/php5/etc/php-fpm.conf
sed -i ‘235s/5/50/g‘ /usr/local/php5/etc/php-fpm.conf
sed -i ‘240s/2/20/g‘ /usr/local/php5/etc/php-fpm.conf
sed -i ‘245s/1/5/g‘ /usr/local/php5/etc/php-fpm.conf
sed -i ‘250s/3/35/g‘ /usr/local/php5/etc/php-fpm.conf
sed -i ‘/^listen/c listen = 0.0.0.0:9000‘ /usr/local/php5/etc/php-fpm.conf
/usr/local/sbin/php-fpm
netstat -tnal | grep 9000
mkdir -p /var/www/html
提示:安装完成之后shell脚本执行已经改好了配置,我们可以通过以下图示看一下:
配置加速器:
启动PHP-fpm进程 /usr/local/php/sbin/php-fpm 然后查看监听端口:
* 安装环境包:
* yum install -y zlib-devel gcc gcc-c++ #安装所需的环境包
* useradd mfs -s /sbin/nologin #创建用户mfs
* 解压下载好的软件包并进行手工编译安装:
* * tar zxvf mfs-1.6.27-5.tar.gz -C /opt/
* cd mfs-1.6.27 #切换到opt/mfs-1.6.27下插入如下配置
* ./configure --prefix=/usr/local/mfs --with-default-user=mfs \
--with-default-group=mfs --disable-mfschunkserver --disable-mfsmount
* make && make install
* 切换到配置文件下复制并去掉模板的dist后缀,开启配置文件:
* cd /usr/local/mfs/etc/mfs/
cp mfsmaster.cfg.dist mfsmaster.cfg
cp mfsexports.cfg.dist mfsexports.cfg
cp mfstopology.cfg.dist mfstopology.cfg
* cd /usr/local/mfs/var/mfs/
cp metadata.mfs.empty metadata.mfs
* 关闭防火墙、关闭增强性安全功能:
* systemctl stop firewalld.service
* setenforce 0
* /usr/local/mfs/sbin/mfsmaster start #开启服务
* ps -ef | grep mfs #查看监听状态
* /usr/local/mfs/sbin/mfsmaster -s #停止
到此master server已经搭建完成,接下来搭建metalogger server:
* 安装编译环境、关闭防火墙、关闭增强性安全功能:
* yum install -y zlib-devel gcc gcc-c++
* systemctl stop firewalld.service
* setenforce 0
创建mfs用户,解压软件包进行手工编译:
* useradd -s /sbin/nologin mfs
* tar xzvf mfs-1.6.27-5.tar.gz -C /opt/
* cd mfs-1.6.27
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount
* make && make install
切换到配置文件下复制并去掉模板的dist后缀,开启配置文件:
* cd /usr/local/mfs/etc/mfs/
cp mfsmaster.cfg.dist mfsmaster.cfg
cp mfsexports.cfg.dist mfsexports.cfg
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
* vim mfsmetalogger.cfg
MASTER_HOST = 172.20.10.13 去掉#注释 添加主机地址
* cd /usr/local/mfs/var/mfs
mv metadata.mfs.empty metadata.mfs
* /usr/local/mfs/sbin/mfsmetalogger start #开启服务
到此metalogger server已经搭建完成,接下来搭建两台节点服务器 chunk server
先搭建第一台chunk server:
* systemctl stop firewalld.service
* setenforce 0
* yum install -y zlib-devel gcc gcc-c++
* useradd -s /sbin/nologin mfs
* tar xzvf mfs-1.6.27-5.tar.gz -C /opt/
* cd /opt/mfs-1.6.27
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfsmount
* make && make install
* cd /usr/local/mfs/etc/mfs/
cp mfschunkserver.cfg.dist mfschunkserver.cfg
cp mfshdd.cfg.dist mfshdd.cfg
* vim mfschunkserver.cfg
MASTER_HOST = 172.20.10.13 去掉#注释 添加主机地址
* vim mfshdd.cfg
/data #末尾添加`` 提供存储空间
* mkdir /data
* chown -R mfs:mfs /data
* /usr/local/mfs/sbin/mfschunkserver start
* netstat -ntap
* 提示: 第一台 chunk server搭建完成,第二台和第一台安装配置是一样的,这里就不再写了。
接下来配置PHP客户端:
* systemctl stop firewalld.service
* setenforce 0
* yum install -y zlib-devel
* tar xzvf fuse-2.9.2.tar.gz -C /opt/
* cd /opt/fuse-2.9.2
./configure
* make && make install
* vim /etc/profile
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH #末尾插入
* source /etc/profile
* 安装mfs客户端:
* useradd mfs -s /sbin/nologin
* tar zxvf mfs-1.6.27-5.tar.gz -C /opt/
* cd /opt/mfs-1.6.27
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfschunkserver --enable-mfsmount
* make && make install
* mkdir /opt/mfs
* modprobe fuse #加载fuse模块到内核
* /usr/local/mfs/bin/mfsmount /opt/mfs -H 172.20.10.13 #指向master主机
* df -hT #查看挂载
* 优化客户端:
* vim /etc/profile
* export PATH=/usr/local/mfs/bin:$PATH #设置环境变量 在末尾插入
* cd /opt/mfs(可在mfs里写入内容进行验证:echo "this is test" > test.txt)
* source /etc/profile #重新加载
* mfsgetgoal -r 2 /opt/mfs/ #复制2份文件
最后一步在master server启动监控程序:
* /usr/local/mfs/sbin/mfscgiserv
* http://172.20.10.13:9425 #客户端浏览器上进行访问测试
Nginxf服务器上:
PHP服务器上:
测试PHP、解析MySQL:
标签:medium php语言 创建仓库 local bfd png linux 技术分享 地址
原文地址:http://blog.51cto.com/13721050/2288064