[关闭]
@lgh-dev 2017-12-06T03:52:47.000000Z 字数 8342 阅读 738

现代化PHP编程语言学习-部署、测试、调优

PHP


主机

ssh密钥对认证

  • ssh-keygen 创建秘钥对:
    1、~/.ssh/id_rsa.pub(公钥), ~/.ssh/id_ras 私钥
    2、scp ~/.ssh/id_ras.pub user@IP地址:,末尾加上:符号,复制到用户的家目录。
    3、创建~/.ssh目录,mkdir ~/.ssh
    4、touch ~/.ssh/authorized_keys 创建这个文件存放一系列允许登陆这台服务器的公钥。
    5、cat ~/id_rsa.pub >> ~/.ssh/authorized_keys 把公钥添加到authorized_keys文件中
    6、最后更改几个目录和文件的访问权限,只让用户访问~/.ssh目录和~/.ssh/authorized_keys文件: chown -R user:usergroup ~/.ssh chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys;

禁用密码,禁止根用户登陆

1、部署

1、PHP-FPM 安装 -centos7.3

全局配置信息

配置进程池

2、nginx安装

  1. server{
  2. listen:80;
  3. server_name test.knowshare.com;
  4. index index.php;
  5. client_max_body_size 50M;
  6. error_log /home/liguanh/apps/logs/knowshare.error.log;
  7. access_log /home/liguanh/apps/logs/knowshare.access.log;
  8. root /home/liguanh/apps/www.knowshare.com/public;
  9. location / {
  10. try_files $uri $uri/ /index.php$is_args$args
  11. }
  12. location ~ \.php {
  13. try_files $uri = 404;
  14. fastcgi_split_path_info ^(.+\.php)(/.+)$;
  15. include fastcgi_params;
  16. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  17. fastcgi_param SCRIPT_NAME $fastcgi_script_name;
  18. fastcgi_index index.php;
  19. fastcgi_pass 127.0.0.1:9000
  20. }
  21. }

2、调优

php调优

Zend OPcache 操作码缓存

处理会话

缓冲输出

真实路径缓存

部署

1、版本控制
版本控制能记录代码基的变化,可以把一个时间点的代码标记为发布版,可以回滚到之前的状态,还可以在单独的分支中开发新功能,不影响生产环境的代码。
2、自动部署,简单部署,部署结果可知,部署可逆。
3、Capistrano(http://capistranorb.com)用于自动部署应用,运行在本地设备,通过ssh与远程服务器通信。
4、Capistrano会在远程服务器保存之前部署的应用,而且每次部署的版本放在各自的目录中。可以维护5个或更多之前的部署的应用,防止要回滚。创建一个current/目录,通过符号链接指向当前部署的应用所在的目录。部署代码时,Capistrano首先从应用的git仓库获取最新代码,然后把应用的代码放到releases/目录中的一个新目录,最后把current/符号链接指向这个目录。回滚版本时,Capistrano会把current/目录的符号链接指向releases/目录中存放之前版本的子目录。
5、 OS X系统使用gem install capistrano命令安装,在项目的最顶层目录使用cap install命令;
6、cap production deploy 部署应用 ,cap production deploy:rollback 回滚应用。

3、测试

1、测试很重要,开发之前,开发的过程中,和开发完成之后都要关注测试。
2、在开发的过程中测试能增强自信,写出稳定的代码,而且还能帮助我们快速找出并重构破坏现有功能的新代码。
3、我们应该测试应用的最小组成部分。

  • 从微观角度来看,应用由PHP类,方法,和函数组成。因此,我们应该隔离测试每个公开的类,方法和函数,确保表现符合预期。如果我们知道各个部分能单独正常运行,可以确信集成在一起组成整个应用时也能正常运行,这种测试叫做单元测试。
  • 可是单独测试每个部分,不能保证各个部分在整个应用中正常运行。因此我们还要使用自动化测试从宏观上验证应用的整体行为。这种测试叫功能测试。

4、 单元测试,大多数流行的PHP框架都使用PHPunit测试。
测试驱动开发(TDD):测试驱动开发的意思是在编写应用代码之前先写测试。我们故意让测试失败,一次描述应用应该具有怎样的表现。开发好应用的功能后,最终测试会成功通过。TDD能帮助我们按照目标开发应用。TDD是一种迭代开发方式,小步向前,知道开发完成整个应用。
行为驱动开发(BDD): 行为驱动开发的意思是编写故事,描述应用的表现;分两种类型:SpecBDD和StoryBDD。
SpecBDD是一种单元测试,使用人类能读懂的流畅语言描述应用的实现方式。StoryBDD更多的是关注整体行为,描述业务的逻辑,而不是底层实现。StoryBDD测试类似于项目经理的需求(生成测试报告,发送电子邮件),而SpecBDD类似于开发者的需求(例如类方法接收一个数据数组,把数据写入PDF文件).他们不是互斥的,常常需要结合使用,编写更全面的测试。
5、PHPUnit在一起组成测试用例,测试用例在一起组成测试组件。测试运行程序的作用是PHPUnit运行测试组件并输出结果的工具。
6、一个测试用例是一个PHP类,这个类扩展自PHPUnit_Framework_TestCase类。测试用例有一些以test开头的公开方法,一个方法是一个测试,在方法中我们断言会发生特定的事情。断言可能通过,也可能失败。我们的目标是让所有的断言都通过。测试用例的类名必须以Test结尾,而且所在的文件名必须Test.php结尾。
7、PHPUnit的网站(http://bit.ly/php-unit)中列出了一些断言。有些断言没有文档,我们可以在gitHub中查看源代码(http://bit.ly/phpu-gh),找到所有可用的断言。
8、phpUnit提供的断言方法assertAttributeEquals()接收。第一个是期望值,第二个是参数的属性,第三个是要检查的对象。他可以使用PHP的反射功能检查并验证受保护的属性。这个断言方法能检查某个对象的内部状态,而且不用依赖某个未测试的方法。

Travis CI持续测试

1、每次把代码推送到gitHub仓库中,Travis都会自动运行应用的测试,而且会通过电子邮件把测试结果发给你。详细配置PHP的Travis CI环境,详细信息参见Travis CI的网站(http://bit.ly/build-php).
2、延伸学习PHP的链接

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注