linecookies的博客

云计算入门小白一枚

项目案例:部署社交网站(svn服务器)全面过程

案例需求:社交网站采用PHP语言开发,为了管理开发代码,搭建SVN服务器进行版本控制,社交网站的第一个版本部署在LNMP平台上,前端为nginx服务器,通过fastcgi协议访问后端的PHP服务器。这里实现动静分离,动态页面交给PHP服务器来处理,静态页面交给nginx服务器来处理。

案例环境:

主机

操作系统

IP地址

主要软件

功能

SVN服务器

Centos7.4

192.168.80.181

www.aa.com

subversion

PHP服务器创建repo目录的访问账户,通知PHP程序员可以导入代码

Nginx服务器

Centos7.4

192.168.80.182

www.ab.com

nginx-1.13.7.tar.gz

显示网站的静态页面

PHP服务器

Centos7.4

192.168.80.183

www.ac.com

php-7.1.10.tar.bz

显示网站的动态页面

实验步骤:

-----1.部署SVN服务器在181主机上,要公网环境-------

[www.aa.com@ ~]# service firewalld stop

[www.aa.com@ ~]# systemctl disable firewalld

[www.aa.com@ ~]# setenforce 0

 

[www.aa.com@ ~]# yum install -y subversion

[www.aa.com@ ~]# svnserve --version        //查看版本

[www.aa.com@ ~]# mkdir -p /opt/svn/repo

[www.aa.com@ ~]# svnadmin create /opt/svn/repo/   //php程序员创建仓库目录repo(用于统一存储开发数据)

[www.aa.com@ ~]# ls /opt/svn/repo/


如上图,当创建新仓库后,之前创建的/opt/svn/repo目录里就会多了一些目录及文件。

注:conf ——用户认证和权限配置文件

dd ——版本控制信息产生的数据

format ——当前代码库账号数据

----------调整SVN参数-------------

[www.aa.com@ ~]# cd /opt/svn/repo/

 

[www.aa.com@ repo]# vi conf/svnserve.conf      //修改以下几行

19 anon-access = none                       //匿名用户没有任何权限

20 auth-access = write                       //认证用户有写权限

27 password-db = /opt/svn/repo/conf/passwd   //用户的密码文件

34 authz-db = /opt/svn/repo/conf/authz       //用户的信息文件

[www.aa.com@ repo]# svnserve -d -r /opt/svn/repo/    //启动SVN服务(停止 svnservekillall -9  svnserve )

[www.aa.com@ repo]# netstat -anptu | grep svnserve  //3690端口监听

 

[www.aa.com@ repo]# vi conf/passwd       //创建账户密码文件

alpha = alphapass           //格式:用户名=用户密码,这里为php程序员alpha建立用户

sysadmin = sysadminpass

 

[www.aa.com@ repo]# vi conf/authz        //创建权限文件,新增以下内容

[/]

sysadmin = r

alpha = r

[/webphp]

sysadmin = r    //运维工程师账户具有读权限,用于部署

alpha = rw      //alpha用户对此目录有读写权限

 

[www.aa.com@ repo]# mkdir webphp          //建立用户存储开发数据的子目录webphp

[www.aa.com@ repo]# svn import webphp file:///opt/svn/repo/webphp/ -m "init web"   //初始化svn目录

 

可以在宿主机上安装SVN的Windows客户端,然后导入代码

svn co svn://192.168.80.181/webphp

 

---------以下内容为扩展-------------------

在win7上安装svn客户端软件:

 

输入svn服务器地址:

 

 

在win7上用记事本写一个网页文件test.html

 

然后把test.html和fruit.jpg文件拖到webphp文件夹中

 

在nginx服务器上进行同步:

[www.ab.com@ ~]# cd /usr/local/nginx/html/

[www.ab.com@ html]# yum install -y subversion-1.7.14-10.el7.x86_64

[www.ab.com@ html]# svn co svn://192.168.80.181/webphp

 

 

在php服务器上进行同步:

[www.ab.com@ ~]# cd /var/www/html/

[www.ab.com@ html]# yum install -y subversion-1.7.14-10.el7.x86_64

[www.ab.com@ html]# svn co svn://192.168.80.181/webphp

 

浏览器访问:http://192.168.80.182/test.html

 

注意:网站开发人员修改网页一般在Windows上操作,修改完成后通过SVN服务器上传nginx和PHP。

---------扩展内容结束-------------

-----2.部署nginx服务器在182主机上,要公网环境-------

[www.ab.com@ ~]# service firewalld stop

[www.ab.com@ ~]# systemctl disable firewalld

[www.ab.com@ ~]# setenforce 0

 

[www.ab.com@ ~]# yum -y install \

pcre-devel \

zlib-devel

 

[www.ab.com@ ~]# useradd -M -s /sbin/nologin nginx

[www.ab.com@ ~]# tar xzvf nginx-1.13.7.tar.gz -C /usr/src/

[www.ab.com@ ~]# cd /usr/src/nginx-1.13.7

 

[www.ab.com@ ~]# ./configure \

--prefix=/usr/local/nginx \

--user=nginx \

--group=nginx \

--with-http_stub_status_module


[www.ab.com@ ~]# make && make install

[www.ab.com@ ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

[www.ab.com@ ~]# nginx -t               //配置文件语法检查

[www.ab.com@ ~]# nginx                //启动服务

[www.ab.com@ ~]# killall -1 nginx         //安全重启

[www.ab.com@ ~]# killall -3 nginx         //停止服务

[www.ab.com@ ~]# vi /etc/init.d/nginx

#!/bin/bash

# chkconfig: 35 99 20

# description: Nginx Service Control Script

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 "Usage: $0 {start|stop|restart|reload}"

        exit 1

esac

exit 0

[www.ab.com@ ~]# chmod +x /etc/init.d/nginx

[www.ab.com@ ~]# chkconfig --add nginx

[www.ab.com@ ~]# vi /usr/local/nginx/conf/nginx.conf   //配置后端php程序的fastcgi访问接口

user  nginx nginx;

worker_processes  1;

events {

    worker_connections  1024;

}

http {

    include       mime.types;

    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    server {

        listen       80;

        server_name  localhost;

        location / {

            root   html/webphp;

            index  index.html index.htm;

        }

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }

        location ~ \.php$ {              //动态请求给PHP服务器183

            root           /var/www/html/webphp;

            fastcgi_pass   192.168.80.183:9000;

            fastcgi_index  index.php;

            fastcgi_param  SCRIPT_FILENAME  /var/www/html/webphp$fastcgi_script_name;

            include        fastcgi_params;

        }

    }

}

--------编写一个静态页面用于测试---------

[www.ab.com@ ~]# mkdir -p /usr/local/nginx/html/webphp

[www.ab.com@ ~]# vi /usr/local/nginx/html/webphp/index.html

hello! this is nginx provides static pages!

浏览器访问静态页面http://192.168.80.182/index.html

 

-----3.部署PHP服务器在183主机上,要公网环境-------

[www.ac.com@ ~]# yum -y install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel curl curl-devel openssl openssl-devel

[www.ac.com@ ~]# tar xjvf php-7.1.10.tar.bz2

[www.ac.com@ ~]# cd php-7.1.10

[www.ac.com@ ~]# ./configure \

--prefix=/usr/local/php \

--with-mysql-sock=/usr/local/mysql/mysql.sock \

--with-mysqli \

--with-zlib \

--with-curl \

--with-gd \

--enable-fpm \

--with-jpeg-dir \

--with-png-dir \

--with-freetype-dir \

--with-openssl \

--enable-mbstring \

--enable-xml \

--enable-session \

--enable-ftp \

--enable-pdo \

--enable-tokenizer \

--enable-zip

 

[www.ac.com@ ~]# make && make install

[www.ac.com@ ~]# cp php.ini-development /usr/local/php/lib/php.ini

[www.ac.com@ ~]# vi /usr/local/php/lib/php.ini

mysqli.default_socket = /usr/local/mysql/mysql.sock

date.timezone = Asia/Shanghai

[www.ac.com@ ~]# /usr/local/php/bin/php -m                 //验证安装的模块

-----------配置及优化FPM模块--------

[www.ac.com@ ~]# cd /usr/local/php/etc/

[www.ac.com@ ~]# cp  php-fpm.conf.default php-fpm.conf

[www.ac.com@ ~]# cd /usr/local/php/etc/php-fpm.d/

[www.ac.com@ ~]# cp www.conf.default www.conf

[www.ac.com@ ~]# vi www.conf

192.168.80.183:9000

[www.ac.com@ ~]# cd /usr/local/php/etc/

[www.ac.com@ ~]# vi php-fpm.conf

pid = run/php-fpm.pid

[www.ac.com@ ~]# /usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini   //启动php-fpm模块

[www.ac.com@ ~]# netstat -anpt | grep 9000

 

[www.ac.com@ ~]# ln -s /usr/local/php/bin/* /usr/local/bin/

[www.ac.com@ ~]# ps aux | grep -c "php-fpm"  //结果

 

-------编写一个动态页面用于测试---------

[www.ac.com@ ~]# mkdir -p /var/www/html/webphp

[www.ac.com@ ~]# vi /var/www/html/webphp/index.php

<?php

phpinfo();

?>

在浏览器里输入nginx服务器的IP 可以访问动态PHP页面

http://192.168.80.182/index.php

 

说明静态网页有nginx服务器处理,动态网页由php服务器处理,实现了动静分离。

 

4.部署MYSQL数据库

PHP程序员需求在MySQL主服务器上新建一个数据库,并使创建PHP程序的用户对数据库有读写权限

 

 

 

 

 

 


阅读更多
个人分类: 系统运维 云计算
上一篇centos7.4下Dockerfile创建nginx镜像并生成容器这样做解决所有错误!!!
下一篇RabbitMQ集群的架构搭建全过程及JMeter压测软件安装使用
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭