虽然说是无侵入的部署工具,但是还是需要我们来做一些微小的配置的,因为出于安全考虑,我们一般不会开发 root 用户的 SSH 登录,而是使用其它用户,比如 Ubuntu 默认的 ubuntu 用户。
我们 Deployer 是用来部署 web 应用的,所以我们也专门创建一个用户来做这件事情比较好:

$ sudo adduser deployer
# 密码什么的,按提示操作即可

我们的 web 项目通常需要一些上传,或者缓存写入这样的操作,所以 deployer 还需要有权限对目录进行修改,比如 Laravel 的 storage 目录需要可写权限,这里以 nginx 默认的用户组 www-data 举例,如果你修改过用户或者组名请对应修改下面的命令里的 www 用户组:

$ sudo usermod -aG www-data deployer

我们通常需要将deployer 用户权限分别设置为创建文件 644 与目录 755,这样一来,deployer 用户可以读写,但是组与其它用户只能读:

$ su deployer # 切换到 deployer 用户
$ echo "umask 022" >> ~/.bashrc
$ exit # 退出

我们需要将 depoloyer 用户加到 sudoers 中:

$ vim /etc/sudoers
# 在最后加入
deployer ALL=(ALL) NOPASSWD: ALL
# 保存并退出

接下来要对我们的 web 根目录授权,假设我们的 web 服务的根目录在 /var/www/ 下,那么需要将这个目录的用户设置为 deployer ,组设置为 www 用户 www-data:

$ sudo chown deployer:www-data /var/www/html # 最后这里不要加斜线哦

为了让 deployer 用户在 /var/www/html 下创建的文件与目录集成根目录的权限设定(用户:deployer,组:www-data),我们还需要一步操作:

$ sudo chmod g+s /var/www/html

OK,Deployer 的用户操作就结束了,接着你需要检查以下配置:

  1. 确认 php 的可执行文件在全局 PATH 中,或者你手动添加到 deployer 用户目录的 .bash_profile PATH 中也可,使用命令确认(登录用户 deployer 后执行):php -v,如果报错的话,一般建议是将 php 的 bin 文件软链接到 /usr/local/bin/(推荐) 或者/usr/bin/ 下。
  2. 同样检查你的 Deployer 任务清单所需要用到的其它命令,比如 npm,nginx,composer 都在 deployer 用户下可以使用,否则在部署的时候会出错。

最新文章

  1. ios 图片点击两次禁止保存或拷贝
  2. easyUI学习笔记之tab组件的鼠标事件
  3. Rime 鼠须管 配色方案
  4. Android窗口管理服务WindowManagerService切换Activity窗口(App Transition)的过程分析
  5. 理解ThreadLocal(二)
  6. CSS——盒模型
  7. C# 读取PDF多级书签
  8. Java面试3
  9. osx安装sass
  10. javasrcipt的作用域和闭包(二)续篇之:函数内部提升机制与Variable Object
  11. Linux ISO镜像挂载
  12. 什么是位、字节、字、KB、MB (转)
  13. Ural 1297 Palindrome(后缀数组+最长回文子串)
  14. 面试:C++二叉树遍历(递归/非递归)
  15. STM32F4 SPI with DMA
  16. python16_day24【restful、crm表构、认证】
  17. go语言学习(一):数组/切片
  18. 【BZOJ】4430: [Nwerc2015]Guessing Camels赌骆驼
  19. Chubby lock service for distributed system
  20. CentOS 5.6怎么安装MongoDB数据库?

热门文章

  1. Jmeter引用外部jar包的几种方法
  2. JVM的整体结构
  3. Shell学习(五)Shell输出命令
  4. dubbo学习(六)dubbo管理控制台
  5. Apollo系列(二):Apollo在ASP.NET Core 3.1中使用
  6. 实用向—总结一些唯一ID生成方式
  7. Python+selenium+unittest实现网址登陆及页面跳转校验
  8. mysql 空值(null)和空字符('')的区别
  9. Java 多线程并发编程
  10. [Java 开源项目]一款无需写任何代码,即可一键生成前后端代码的工具