个人原文:www.hijerry.cn/p/46865.htm…php
这一次的总结内容范围比较广,主要对代码管理到系统发布、系统维护和其中中可能会出现的一些安全问题进行总结。html
在一个项目开始以前,首先要选择一款代码管理工具,目前流行是 GIT
和 SVN
,若是没有历史问题,建议都使用 GIT
进行代码管理。mysql
选好了管理工具后,须要选择托管平台,目前国内有 码云
、Coding.net
等,国外有 GitHub
、GitLab
。须要注意的是代码仓库的私有性, GitHub
的私有项目是须要收费的。我我的喜欢把私有项目托管在 码云
,把公开项目托管在 GitHub
。linux
新建一个仓库后,我每每喜欢新建一个 dev
分支做为开发, docs
分支用于存放文档、设计图,并把 master
分支空出来。在 dev
分支上完成一次版本开发后,再合并到 master
分支上去。因此 master
分支上存放的一直是可用的、稳定的版本。nginx
在进行二次开发时,我喜欢从 dev
拉出新分支,用做二次开发,完成后再考虑合并回去。git
通常什么状况下须要拉分支呢?redis
一次完整版本的发布,都须要保存为一个分支,用于进行回退操做。sql
何时进行一次 git commit
?其实何时均可以,可是为了更好的管理,更方便回退操做,一次提交知足如下几点是比较好的:数据库
在一次 commit 中,必须注明本次commit作了什么工做。npm
目前云服务器盛行,腾讯云、阿里云都有学生机,通常都是1核 1G 1M + 40G云硬盘的配置。这样的配置下,尽可能选择 linux
做为操做系统,能够榨到比较好的性能。
系统的发布步骤是:部署软件环境、部署代码、部署数据库、部署脚本文件、调试。
若是是在实机上部署,那须要检查如下几点:
具体来讲,须要使用操做系统自带命令如 yum
、 apt-get
安装符合Web网站的软件如 php
、 nginx
、mysql
等,并检查这些软件的扩展功能是否打开。
若是是在虚机部署(好比使用Docker),则只须要部署好容器便可完成上述操做了。
若是是托管在代码仓库里的,能够用 git
和 svn
命令进行部署。
若是没有托管,则须要压缩源代码,使用 rz
或 scp
等命令上传到服务器。
这里须要注意的是, npm
包、composer
包不要打包上去,而是在服务器上使用 npm install
和 composer install
命令进行安装。由于这些文件每每不少很大,使用命令安装比较快。
用户上传的资源也不要打包部署到服务器上。由于发布操做尽可能部署纯净的源代码文件,尽可能少一些数据文件。
使用 mysqldump
导出数据库表结构
,数据不导出的缘由是为了保持发布的网站的纯净性,因此本地的测试数据就不要部署到线上系统了。
一些本身编写的系统辅助工具,好比用于检测服务器状态的脚本、用于转码视频文件的脚本服务,须要一块儿部署上去。
先进行冒烟测试,再进行单元测试便可。
首先是隐藏错误信息,线上环境下产生的异常信息,必定不能显露给用户看到,而且须要把错误信息记录到日志中方便查阅。PHP中设置 error_reporting(0)
便可隐藏全部错误。
如下是一些经验性原则:
80
、443
和 ssh对应的端口。ssh
、mysql
、redis
等软件尽可能不使用默认端口 22
、3306
、6379
等。如下是针对mysql的一些原则:
mysql
数据库的root禁止远程登陆。mysql
开启bin log日志,用于恢复数据库。(也就是开启备份)select
、update
、delete
、insert
权限。