书接上一回,小白和老菜聊到代码的版本控制和接口文档

  小白:为什么要做版本控制,我不弄版本控制不也完成了项目了吗?要做版本控制不是很麻烦,又要安装服务又要提交代码,代码又不是多人用开发,还要写文档......

  老菜:这就是你这些小白的思维,只看眼前不思长远。对于任何一个项目,你都不可能绝对的说它永远都是一个小项目;而项目完成后,同时也面临着不停的变更与修改,你不可能永远记得这个项目任何细节,随着时间的流逝,很多关键点与细节在你的记忆中就会变得越来越模糊,到时要重新修改时你就头大了。我之前有位同事,一开始也是这样想,没文档没代码版本管理,而软件的功能相对也比较复杂,项目完成上线几个月后,想要大改时作为开发人员却无法动手,自己都看不懂自己写的代码了。另外,有可能你写了一些功能,进行修改后想要回滚时却发现没有旧版本,只能重写。

  养成良好的文档编写习惯,对于一个程序员来说也是非常重要的,你不可能永远呆在只有一个开发人员的公司里,在与人合作时,特别是前后端开发人员配合时,如果没有文档交流起来是一件非常麻烦的事情,人越多浪费在沟通的时间就越多。而且随着项目开发时间越长,接口越多,项目维护起来也会越复杂。没有清晰的文档,会给项目的增加各种不应该出现的不稳定性。况且写一个接口文档也就一两分钟的事情,举手之劳,何乐而不为呢?

  养成良好的代码管理与文档编写习惯,对于一位程序员素质修养来说,也是非常必要的,同样两位水平相当的程序员去面试,代码编写规范,懂得代码管理和熟练编写文档的肯定占优。

  代码版本控制大家常用的有git或svn,对于能开源的代码来说,直接放在github上就可以了,其他的话,就需要自己搭建svn服务器。(python服务器环境搭建(2)——安装相关软件 与 python服务器环境搭建(3)——参数配置 有svn服务器创建与发布的说明)

  而接口文档管理,也有不少开源的系统存在,比如wiki、shodoc等系统。

  小白:好的,我回去安装配置一下,尽量让自己规范起来。

  小白回去家后,就开始忙碌了起来,之前已安装好虚拟服务器了,所以可以按网上教程直接配置svn。

  配置SVN

  进入svn管理目录:cd /data/svn

  创建svn项:svnadmin create simple

  进入刚创建的svn项:cd /data/svn/simple/conf

  修改/data/svn/simple/conf文件夹下的配置文件

  将authz文件替换成下面内容:

[simple:/]

admin = rw

  simple是svn当前仓库项的模块名称,每个svn的这个名称都是唯一的,不然可能无法登录使用,admin是我们创建的svn登录账号

  将password文件替换成下面内容:

[users]
admin = 123456

  这里设置账号对应的密码

  将svnserve.conf文件替换成下面内容:

[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz

  如果你的svn服务未启动,可以输入下面命令:/usr/bin/svnserve -d -r /data/svn (有时连不上,kill掉svn进程重新启动就可以了)

  svn服务器端的操作就完成了。

  下面来进行本地操作截图:(可以下载TortoiseSVN-1.9.4.27285-x64-svn-1.9.4.msi进行使用)

  

  安装完svn客户端工具后,右键菜单会出现SVN Checkout项,可以进行检出svn

  

  输入虚拟服务器地址,点击OK进行检出操作

  

  输入前面设置好的账号与密码,完成检出操作

  然后将源码放到该文件夹中(或者直接检出到你的源码文件夹也行)

  

  在刚检出的源码文件夹中点击右键,选择提交代码

  

  全选所有文件,并填写好说明(在做源码版本控制管理时,最好养成编写说明的习惯,方便以后有问题时进行查询,不然版本多时要一个个对比查找是一件非常麻烦的事情)

  

  整个SVN源码管理就操作完成了。

  安装ShowDoc接口文档管理系统

  showdoc接口文档是PHP开发的,所以需要安装php环境

  php环境大家可以直接使用官方的安装方法,直接使用yum进行安装,方法也比较简单:https://www.showdoc.cc/php?page_id=14595

  当然也可以使用下面编译方式进行安装,我在CentOS7.0使用下面编译方式安装时会遇到 --enable-opcache=no 问题,估计是操作系统版本与php兼容问题引起的,得升级系统,或使用官方方法安装就好

  安装PHP相关包

yum install -y libxml2 libxml2-devel openssl openssl-devel curl-devel libjpeg-devel libpng-devel freetype-devel autoconf gcc gcc-c++

  进入源码包存储路径(cd /usr/local/src/),并下载相关源码安装包

cd /usr/local/src/
wget http://cn2.php.net/distributions/php-5.6.36.tar.gz
wget https://jaist.dl.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz
wget https://jaist.dl.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.gz
wget https://jaist.dl.sourceforge.net/project/mcrypt/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz

  编译安装libmcrypt

cd /usr/local/src/
tar -zxvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure --prefix=/usr/local/related/libmcrypt
make && make install

  编译安装mhash

cd /usr/local/src/
tar -zxvf mhash-0.9.9.9.tar.gz
cd mhash-0.9.9.9
./configure --prefix=/usr/local/related/mhash
make && make install

  设置编译mcrypt所需环境变量(下面命令要一条条执行)

export LD_LIBRARY_PATH=/usr/local/related/libmcrypt/lib:/usr/local/related/mhash/lib
export LDFLAGS="-L/usr/local/related/mhash/lib -I/usr/local/related/mhash/include/"
export CFLAGS="-I/usr/local/related/mhash/include/"

  编译安装mcrypt

cd /usr/local/src/
tar -zxvf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8
./configure --prefix=/usr/local/related/mcrypt --with-libmcrypt-prefix=/usr/local/related/libmcrypt
make && make install

  编译安装php

cd /usr/local/src/
tar -zxvf php-5.6.36.tar.gz
cd php-5.6.36
./buildconf --force
./configure --prefix=/usr/local/php --exec-prefix=/usr/local/php --bindir=/usr/local/php/bin --sbindir=/usr/local/php/sbin --includedir=/usr/local/php/include --libdir=/usr/local/php/lib/php --mandir=/usr/local/php/php/man --with-config-file-path=/usr/local/php/etc --with-mysql-sock=/var/lib/mysql/mysql.sock --with-mcrypt=/usr/include --with-mhash --with-openssl --enable-mysqlnd --with-mysqli=shared,mysqlnd --with-mysql=shared,mysqlnd --with-pdo-mysql=shared,mysqlnd --with-gd --with-iconv --with-zlib --enable-zip --enable-inline-optimization --disable-debug --disable-rpath --enable-shared --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-mbregex --enable-mbstring --enable-ftp --enable-gd-native-ttf --enable-pcntl --enable-sockets --with-xmlrpc --enable-soap --without-pear --with-gettext --enable-session --with-curl --with-jpeg-dir --with-freetype-dir --enable-opcache --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --without-gdbm --with-mcrypt=/usr/local/related/libmcrypt --disable-fileinfo
make clean && make && make install

  复制相关配置文件与启动文件

cp php.ini-production /usr/local/php/etc/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

  创建运行php用户和组

groupadd -r php && useradd -r -g php -s /bin/false -d /usr/local/php -M php

  设置PHP日志目录和php-fpm的运行进程ID文件(php-fpm.sock)目录

groupadd -r nginx && useradd -r -g nginx -s /bin/false -M nginx
mkdir -p /var/log/php-fpm/ && mkdir -p /var/run/php-fpm && cd /var/run/ && chown -R nginx:nginx php-fpm

  修改session的目录配置

mkdir -p /var/lib/php/session
chown -R nginx:nginx /var/lib/php

  设置PHP开机启动

chmod +x /etc/init.d/php-fpm
chkconfig --add php-fpm
chkconfig php-fpm on

  启动php服务

service php-fpm start

  shosdoc的安装可以根据官方文档说明(http://www.showdoc.cc/web/#/help?page_id=32238)进行安装

  登录https://github.com/star7th/showdoc 下载源码包

  然后将源码包上传到 /data/www/ 目录并解压到当前目录

  添加nginx配置:showdoc.conf

cd /usr/local/nginx/conf/vhost/
vi showdoc.conf

  在vi编辑器中添加下面代码

server {
listen 8080;
charset utf-8;
server_name 127.0.0.1;
root /data/www/showdoc-master; location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
} location / {
index index.php index.html;
client_max_body_size 1000m;
}
access_log /data/logs/nginx/showdoc_access.log main;
}

  重启nginx:/usr/local/nginx/sbin/nginx -s reload

  在浏览器中输入:http://xxx:8080/ 就可以访问showdoc了

  

  点击OK进行安装

  

  

  点击右上角注册账号

  

  

  注册完账号,就可以创建项目进行接口文档管理了

  

  

  

  进入项目后,点击左上角的+ 创建接口文档

  

  填写完标题,点击插入API接口模板,就有现成的模板模式出来,简单修改一下一份完整的接口文档就写好了,快的话写一个接口文档也就不到一分钟时间。我们也可以根据自己的需要创建自己的接口文档模板。

  

  保存后就可以看到简洁又漂亮的接口文档了

版权声明:本文原创发表于 博客园,作者为 AllEmpty 本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。

python开发QQ群:669058475(本群已满)、733466321(可以加2群)    作者博客:http://www.cnblogs.com/EmptyFS/

我的第一个python web开发框架(23)——代码版本控制管理与接口文档的更多相关文章

  1. 我的第一个python web开发框架(41)——总结

    我的第一个python web开发框架系列博文从17年6.7月份开始写(存了近十章稿留到9月份才开始发布),到今天结束,一年多时间,想想真不容易啊. 整个过程断断续续,中间有段时间由于工作繁忙停了好长 ...

  2. 我的第一个python web开发框架(14)——后台管理系统登录功能

    接下来正式进入网站的功能开发.要完成后台管理系统登录功能,通过查看登录页面,我们可以了解到,我们需要编写验证码图片获取接口和登录处理接口,然后在登录页面的HTML上编写AJAX. 在进行接口开发之前, ...

  3. 我的第一个python web开发框架(21)——小结

    这个小网站终于成功上线,小白除了收获一笔不多的费用外,还得到女神小美的赞赏,心中满满的成就感.这一天下班后,他请老菜一起下馆子,兑现请吃饭的承诺,顺便让老菜点评一下. 小白:老大,在你的指导下终于完成 ...

  4. 我的第一个python web开发框架(22)——一个安全小事故

    在周末的一个早上,小白还在做着美梦,就收到了小美的连环追魂call,电话一直响个不停. 小白打着哈欠拿起电话:早上好美女. 小美:出事了出事了,我们公司网站一早访问是一片空白,什么内容都没有了,你赶急 ...

  5. 我的第一个python web开发框架(5)——开发前准备工作(了解编码前需要知道的一些常识)

    中午吃饭时间到了,小白赶紧向老菜坐的位置走过去. 小白:老大,中午请你吃饭. 老菜:哈哈...又遇到问题了吧,这次得狠狠宰你一顿才行. 小白:行行行,只要您赏脸,米饭任吃,嘻嘻,我们边走边聊. ... ...

  6. 我的第一个python web开发框架(24)——系统重构与ORM

    小白弄完代码版本管理和接口文档后,兴奋的找到老菜. 小白:老大,我已经按你讲的要求,将代码版本管理和接口文档都搞好了.从项目开始到现在,除了代码编写,感觉学会好多东西啊. 老菜:嗯嗯,实战确实需要掌握 ...

  7. 我的第一个python web开发框架(1)——前言

    由于之前经验不是很丰富,写的C#系统太过复杂,所以一直想重写,但学的越多越觉得自己懂的越少,越觉的底气不足.所以一直不敢动手,在内心深处对自己讲,要静下心来认真学习,继续沉淀沉淀.这两年多以来找各种机 ...

  8. 我的第一个python web开发框架(3)——怎么开始?

    小白与小美公司经过几次接触商谈,好不容易将外包签订了下来,准备开始大干一场.不过小白由于没有太多的项目经验,学过python懂得python的基本语法,在公司跟着大家做过简单功能,另外还会一些HTML ...

  9. 我的第一个python web开发框架(2)——一个简单的小外包

    第一部分说明 第一部分大概有20来章,主要讲的是一些开发常识.开发前中后期准备内容.开发环境与服务器部署环境安装设置.python基础框架结构与功能等内容,代码会比较简单. 本系列会以故事的方式,向大 ...

随机推荐

  1. NDK开发入门终极教程

    0 前言 同NDK技术的渊源始于3年前,使用so文件的时候了解到NDK技术,并且C语言一直是强项,就鼓捣起NDK开发.在AndroidStduio还没推广的年代,基于eclipse搭建NDK开发环境需 ...

  2. 动手实现一个 LRU cache

    前言 LRU 是 Least Recently Used 的简写,字面意思则是最近最少使用. 通常用于缓存的淘汰策略实现,由于缓存的内存非常宝贵,所以需要根据某种规则来剔除数据保证内存不被撑满. 如常 ...

  3. [我的理解]Javascript的原型与原型链

    一.原型与原型链的定义 原型:为其他对象提供共享属性的对象 注:当构造器创建一个对象,为了解决对象的属性引用,该对象会隐式引用构造器的"prototype"属性.程序通过const ...

  4. .net core使用EasyNetQ做EventBus

    随着SOA.微服务.CQRS的盛行,EventBus越来越流行,上GitHub搜了一下,还是有蛮多的这类实现,老牌的有NServiceBus(收费).MassTransit,最近的有CAP(国人写的, ...

  5. js反爬-从入门到精通webdriver

    学习JS反爬 地址:http://openlaw.cn/login.jsp 想在指导案例中抓些内容,需要登陆 账号密码发送会以下面方式发送 所以需要找到_csrf和加密后的password,_csrf ...

  6. 开发函数计算的正确姿势 —— 使用 Fun Local 本地运行与调试

    前言 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传.函数计算 ...

  7. Nagios 监控系统架构

    Nagios 监控系统架设全攻略 简介: Nagios 全名为(Nagios Ain’t Goona Insist on Saintood),最初项目名字是 NetSaint.它是一款免费的开源 IT ...

  8. [Vue] vue跳转外部链接

    问题 vue 跳转外部链接问题,当跳转的时候会添加在当前地址后面 var url = 'www.baidu.com' //跳转1 window.localtion.href = url //跳转2 w ...

  9. 安装VS时,双击setup.exe后界面一闪而过的问题

    问题:安装VS时,双击setup.exe界面一闪而过的问题 解决: 百度后说需要到"控制面板/添加和管理程序"关闭系统自带的netframework3.x及以上版本. 1.查看所有 ...

  10. [Go] golang连接redis测试

    go-redis的使用1.下载代码到GOPATH环境变量指定的目录比如我的是进入目录D:\golang\code\src\github.com\go-redis , 执行git clone https ...