博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
部署社交网站
阅读量:6435 次
发布时间:2019-06-23

本文共 11758 字,大约阅读时间需要 39 分钟。

部署社交网站

案例概述

公司的社交网站采用PHP语言开发,为了管理PHP程序员开发的代码,上级领导要求搭建SVN服务器进行版本控制。社交网站的第一个版本部署在LNMP平台上,前端为Nginx,通过fastcgi协议访问后端的PHP服务器。为了保证数据安全,要求搭建MySQL数据库主从集群。

社交网站包含用户的相册功能,允许用户上传照片,上传照片需要使用共享存储来存放。公司决定使用MFS分布式文件系统,并将MFS挂载到PHP服务器的相关目录下。

案例环境

案例环境要求见下表

主机 操作系统 IP地址 主要软件
Nginx CentOS 7 x86_64 192.168.58.134 nginx
PHP CentOS 7 x86_64 192.168.58.132 php
MySQL Master CentOS 7 x86_64 192.168.58.130 mysql-5.5.24
MySQL Slave CentOS 7 x86_64 192.168.58.138 mysql-5.5.24
SVN CentOS 7 x86_64 192.168.58.140 subversion

搭建LNMP服务器

部署Nginx服务器

首先安装环境包,依赖包。

[root@localhost opt]# yum -y install pcre-devel zlib-devel[root@localhost opt]# useradd -M -s /sbin/nologin nginx    #添加管理nginx的用户和组[root@localhost mnt]# tar xf nginx-1.6.0.tar.gz -C /opt/   #将软件包解压到指定目录[root@localhost opt]# cd nginx-1.6.0/                      #到解压目录中[root@localhost nginx-1.6.0]#  ./configure \               #开始配置> --prefix=/usr/local/nginx \                              #指定安装目录> --user=nginx \                                           #指定管理用户> --group=nginx \                                          #指定管理组> --with-http_stub_status_module                           #开启stub_status状态统计模块[root@localhost nginx-1.6.0]# make && make install         #开始编译和安装[root@localhost nginx-1.6.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/[root@localhost nginx-1.6.0]# nginx                        #开启nginx服务#建立软链接,使系统识别nginx命令

到宿主机上访问192.168.58.134,查看访问成功。

修改Nginx配置

这里需要修改nginx配置文件中的fastcgi访问接口,这样才能访问PHP页面。

[root@localhost nginx-1.6.0]# vim /usr/local/nginx/conf/nginx.conf        location ~ \.php$ {            root           /var/www/html/webphp;   #指定PHP服务器站点家目录            fastcgi_pass   192.168.58.132:9000;    #指定PHP服务器地址及端口            fastcgi_index  index.php;            include        fastcgi.conf;        }

重启Nginx服务

部署社交网站

部署PHP服务器

安装PHP,并且通过配置php-fpm进程监听9000端口来接受Nginx的请求。首先安装环境包和依赖包。

[root@localhost ~]# yum -y install \> gd \> libxml2-devel \> libjpeg-devel \> libpng-devel \> zlib-devel \> fontconfig-devel \> openssl-devel \> bzip2-devel

添加php管理进程用户

useradd -M -s /sbin/nologin php

将php-5.4.5软件包解压到指定目录。

[root@localhost mnt]# tar xf php-5.4.5.tar.bz2 -C /opt/

切换至php-5.4.5解压包目录下,进行配置。

[root@localhost mnt]# cd /opt/php-5.4.5./configure \--prefix=/usr/local/php5 \                    #指定安装路径--with-gd \#打开gd库的支持--with-zlib \#开启zlib库的支持--with-config-file-path=/usr/local/php5 \#指定php配置文件所在路径--enable-mbstring \#多字节,字符串的支持--with-jpeg-dir \#开启对jpeg图片的支持--with-openssl \#openssl的支持,加密传输会用到--disable-ipv6 \#关闭ipv6功能--with-mysql \#最后几项都是让php支持mysql模块--with-mysqli \--with-pdo-mysq \--enable-fpm#启用fpm进程[root@localhost php-5.4.5]# make      #进行编译

不过在编译过程中出现一个错误,如下图,经过研究找到了解决办法。

/opt/php-5.4.5/ext/dom/node.c: 在函数‘dom_canonicalization’中:/opt/php-5.4.5/ext/dom/node.c:1898:21: 错误:提领指向不完全类型的指针

下面是解决办法,需要打一个patch包。

[root@localhost opt]# curl -o php-5.2.17.patch https://mail.gnome.org/archives/xml/2012-August/txtbgxGXAvz4N.txt#下载patch包[root@localhost opt]# lsphp-5.2.17.patch  php-5.4.5  rh[root@localhost opt]# cd php-5.4.5/[root@localhost php-5.4.5]# patch -p0 -b <../php-5.2.17.patch  #将patch导入到php软件包中。patching file ext/dom/node.cpatching file ext/dom/documenttype.cpatching file ext/simplexml/simplexml.c#显示导入成功[root@localhost php-5.4.5]# make && make install #重新编译和安装

编译安装成功后,开始修改配置文件和进行一些优化。

[root@localhost php-5.4.5]# cp php.ini-development /usr/local/php5/php.ini#将配置文件模版复制出来[root@localhost php-5.4.5]# ln -s /usr/local/php5/bin/* /usr/local/bin/[root@localhost php-5.4.5]# ln -s /usr/local/php5/sbin/* /usr/local/sbin/#以上两项都是让系统能够识别php相关命令

为PHP安装加速器。

[root@localhost php-5.4.5]# tar xf /mnt/ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz -C /opt/#将加速器解压到指定目录下[root@localhost php-5.4.5]# cd /opt/ZendGuardLoader-php-5.3-linux-glibc23-x86_64/[root@localhost ZendGuardLoader-php-5.3-linux-glibc23-x86_64]# cd php-5.3.x/[root@localhost php-5.3.x]# cp ZendGuardLoader.so /usr/local/php5/lib/php#将加速器模块放在能够识别的路径下[root@localhost php-5.3.x]#

配置PHP识别加速器。

[root@localhost php-5.3.x]# vim /usr/local/php5/php.ini[Zend Guard Loader]zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.sozend_loader.enable=1#将这段话加入到php.ini配置文件中

开启nginx的php-fpm支持。

[root@localhost php-5.3.x]# cd /usr/local/php5/etc/[root@localhost etc]# cp  php-fpm.conf.default php-fpm.conf[root@localhost etc]# vim php-fpm.conf  #修改配置文件的相关参数pid = run/php-fpm.piduser = phpgroup = phppm.max_children=50pm.start_servers = 20pm.min_spare_servers = 5pm.max_spare_servers = 35listen = 0.0.0.0:9000#监听端口修改下,监听所有ip,如果只是127.0.0.1,那么php服务器无法监听到nginx服务器

启动php-fpm进程,查看9000端口开启。

[root@localhost etc]# /usr/local/sbin/php-fpm[root@localhost etc]# netstat -ntap | grep 9000    #9000端口已经开启tcp        0      0 0.0.0.0:9000            0.0.0.0:*               LISTEN      38234/php-fpm: mast

刚才我们在nginx配置文件中,配置的php服务器站点,我们需要去创建站点目录即index.php。

[root@localhost etc]# mkdir -p /var/www/html/webphp#创建站点目录[root@localhost etc]# cd /var/www/html/webphp/[root@localhost webphp]# echo "123">index.php#创建站点首页

测试,访问192.168.58.134/index.php,可以看到php站点首页。

部署社交网站

部署MySQL服务器

安装MySQL依赖包和环境包。

[root@localhost ~]# yum -y install ncurses-devel cmake#ncurses是字符终端下屏幕控制的基本库

将软件包解压到指定目录并配置

[root@localhost ~]# cd /mnt/[root@localhost mnt]# tar xf mysql-5.5.24.tar.gz -C /opt/[root@localhost mnt]# cd /opt/mysql-5.5.24/[root@localhost 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/ \> -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[root@localhost mysql-5.5.24]# make && make install#编译后安装

编译安装完后进行优化。

[root@localhost mysql-5.5.24]# cp support-files/my-medium.cnf /etc/my.cnf#复制配置文件到/etc中cp:是否覆盖"/etc/my.cnf"? y[root@localhost mysql-5.5.24]# cp support-files/mysql.server /etc/init.d/mysqld#方便mysqld被service服务管理[root@localhost mysql-5.5.24]# echo "PATH=$PATH:/usr/local/mysql/bin/" >> /etc/profile#更改环境变量[root@localhost mysql-5.5.24]# source /etc/profile#使环境变量文件刷新生效[root@localhost mysql-5.5.24]# useradd -s /sbin/nologin mysql#添加mysql服务用户[root@localhost mysql-5.5.24]# chown -R mysql.mysql /usr/local/mysql#更改主文件夹的属主和属组

初始化mysql。

[root@localhost mysql-5.5.24]# /usr/local/mysql/scripts/mysql_install_db \> --user=mysql \> --ldata=/var/lib/mysql \> --basedir=/usr/local/mysql

将mysql.sock文件建立软链接

[root@localhost mysql-5.5.24]# ln -s /var/lib/mysql/mysql.sock  /home/mysql/mysql.sock

修改mysql启动脚本文件。

[root@localhost mysql-5.5.24]# vim /etc/init.d/mysqldbasedir=/usr/local/mysqldatadir=/home/mysql[root@localhost mysql-5.5.24]# chmod +x /etc/init.d/mysqld [root@localhost mysql-5.5.24]# service mysqld startStarting MySQL.. SUCCESS! [root@localhost mysql-5.5.24]# netstat -ntap | grep 3306tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      13702/mysqld#启动成功

创建mysql的root用户。

[root@localhost mysql-5.5.24]# mysqladmin -u root -p password 'abc123'[root@localhost mysql-5.5.24]# mysql -u root -pEnter password: Welcome to the MariaDB monitor.  Commands end with ; or \g.Your MySQL connection id is 2Server version: 5.5.24 Source distributionCopyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.#登录成功

部署MySQL主从数据库

修改MySQL主服务器(192.168.58.130)配置文件。

[root@localhost mysql-5.5.24]# vim /etc/my.cnfserver-id       = 11#server-id主从服务器不能一样log-bin=master-bin                         #主服务器日志文件log-slave-updates=true                     #从服务器更新二进制日志[root@localhost mysql-5.5.24]# service mysqld restartShutting down MySQL. SUCCESS! Starting MySQL.. SUCCESS! #重启数据库[root@localhost mysql-5.5.24]# mysql -u root -pEnter password: #登录数据库MySQL [(none)]> GRANT REPLICATION SLAVE ON *.* TO 'myslave'@'192.168.58.%' IDENTIFIED BY '123456';Query OK, 0 rows affected (0.06 sec)#授权给192.168.58.0网段的服务器同步权限MySQL [(none)]> flush privileges;Query OK, 0 rows affected (0.00 sec)#刷新权限MySQL [(none)]> show master status;+-------------------+----------+--------------+------------------+| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |+-------------------+----------+--------------+------------------+| master-bin.000001 |      338 |              |                  |+-------------------+----------+--------------+------------------+1 row in set (0.00 sec)#这两个值很重要,下面要用到

修改MySQL从服务器配置文件

[root@localhost ~]# vim /etc/my.cnfserver-id = 12relay-log=relay-log-binrelay-log-index=slave-relay-bin.index[root@localhost ~]# service mysqld restart ERROR! MySQL server process #62735 is not running!Starting MySQL........ SUCCESS! #重启数据库[root@localhost ~]# mysql -u root -pEnter password: mysql>  change master to master_host='192.168.58.130',master_user='myslave',master_password='123456',master_log_file='master-bin.000001',master_log_pos=338#指定主服务器,登录账号和密码,同步文件和文件偏移量mysql> start slave;Query OK, 0 rows affected (0.28 sec)#开启slave同步功能mysql> show slave status\G;

可以看到主从同步成功,做个验证在主数据库上创建friend数据库,在从数据库上也自动生成。

部署社交网站部署社交网站

部署SVN服务器

安装SVN服务

[root@localhost ~]# yum install subversion -y   #通过yum仓库安装[root@localhost ~]# svnserve --version    #查看版本信息svnserve,版本 1.7.14 (r1542130)   编译于 Apr 11 2018,02:40:28

创建仓库目录repo

[root@localhost ~]# mkdir -p /opt/svn/repo             #创建一个目录[root@localhost ~]# svnadmin create /opt/svn/repo/     #将这个目录作为仓库[root@localhost ~]# cd /opt/svn/repo/[root@localhost repo]# ls                              #查看仓库目录下的文件conf  db  format  hooks  locks  README.txt

配置svnserve.conf文件

[root@localhost repo]# vim /opt/svn/repo/conf/svnserve.conf anon-access = none                              #匿名用户u没有任何权限                  auth-access = write                             #认证用户具有写的权限password-db =/opt/svn/repo/conf/passwd          #用户的密码文件authz-db =/opt/svn/repo/conf/authz              #用户的信息文件

配置passwd文件

[root@localhost repo]# vim /opt/svn/repo/conf/passwd [users]# harry = harryssecret# sally = sallyssecretalpha=abc123      #格式:用户名=密码

配置authz文件

[root@localhost repo]# vim /opt/svn/repo/conf/authz [/]alpha = r                       #在/opt/svn/repo目录下有读取权限[/webphp]alpha = rw                      #对于webphp木有有读写权限,用于上传下载代码

启动SVN服务

[root@localhost repo]# svnserve -d -r /opt/svn/repo/  #关闭通过kill‘进程[root@localhost repo]# netstat -ntap | grep svn*tcp        0      0 0.0.0.0:3690            0.0.0.0:*               LISTEN      3566/svnserve

导入webphp文件夹

[root@localhost repo]# cd webphp/[root@localhost webphp]# ls[root@localhost webphp]# touch 123.txt 234.txt[root@localhost webphp]# svn import webphp file:///opt/svn/repo/webphp -m "initial"#初始化webphp目录

测试svn服务

这时候我们切换到nginx服务器的/usr/local/nginx/html/webphp目录下将svn服务器中更新内容下载下来[root@localhost ~]# yum install subversion -y   #安装subversion[root@localhost html]# svn co svn://192.168.58.140/webphp   #将svn服务器的webphp目录下载下来认证领域: 
07d793c7-c030-4485-8f7a-f531171e80ca“root”的密码: 认证领域:
07d793c7-c030-4485-8f7a-f531171e80ca用户名: alpha“alpha”的密码: -----------------------------------------------------------------------注意! 你的密码,对于认证域:
07d793c7-c030-4485-8f7a-f531171e80ca只能明文保存在磁盘上! 如果可能的话,请考虑配置你的系统,让 Subversion可以保存加密后的密码。请参阅文档以获得详细信息。你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,来避免再次出现此警告。-----------------------------------------------------------------------保存未加密的密码(yes/no)?yesA webphp/555.txtA webphp/1A webphp/2A webphp/3A webphp/123.txtA webphp/4A webphp/234.txt取出版本 4。[root@localhost html]# ls50x.html index.html webphp[root@localhost html]# cd webphp/[root@localhost webphp]# ls1 123.txt 2 234.txt 3 4 555.txt

可以看到将webphp仓库中的内容都同步到nginx服务器的指定路径下了。

转载于:https://blog.51cto.com/13625810/2152989

你可能感兴趣的文章
SpringBoot 中 @RequestBody的正确使用方法
查看>>
ADO.NET .net core2.0添加json文件并转化成类注入控制器使用 简单了解 iTextSharp实现HTML to PDF ASP.NET MVC 中 Au...
查看>>
zabbix触发的多条件判断表达式
查看>>
解决JBoss只能通过localhost访问不能通过IP的问题
查看>>
Windows下Oracle的下载与安装
查看>>
AjaxControlToolkit学习系列(1) DragPanelExtender
查看>>
Tmux : GNU Screen 的替代品
查看>>
SQL 备份还原单个表
查看>>
二分求幂,快速求解a的b次幂
查看>>
增强for循环、Map接口遍历、可变參数方法
查看>>
提高ipad浏览器下大尺寸xml文件解析的性能
查看>>
求【javascript设计模式】【高性能网站建设指南】PDF!哪位有给下啊!!!
查看>>
SCons: A software construction tool
查看>>
MySQL Workbench的使用教程 (初级入门版)
查看>>
学习新 api 的思考过程 4.18
查看>>
想要设计自己的微服务?看这篇文章就对了
查看>>
[XSS神器]XssEncode chrome插件 - 0x_Jin
查看>>
Android角落 不妨再看LinearLayout
查看>>
一起撸个朋友圈吧(step5) - 控件篇【评论控件优化】
查看>>
一起撸个朋友圈吧 图片浏览(上)【图片点击前景色】
查看>>