php执行shell
需求
最近收到一个奇葩的需求:后台需要添加子站

主站是www.abc.com,后台需要添加huaji.abc.com,gaoxiao.abc.com等子站,内容基本一致,就是修改下网站的title,logo等信息
方案
php调用shell脚本,复制一个站点文件夹,并修改相应的网站配置和nginx配置,并重新加载nginx配置,域名手动解析
难点
linux权限问题
实现
服务器上新建一个shell脚本
cp.sh
1 | !/bin/sh |
php中调用该脚本
1 | $shell = "bash /web/html/www/cp.sh"; |
php-fpm的执行用户是apache
需要给apache用户相应文件夹的读写权限
增加apache的nginx脚本管理权限
1
2
3
4
5
6
7
81.设置sudo配置文件可写权限
chmod u+w /etc/sudoers
2.增加apache用户的nginx脚本管理权限
apache ALL=(root) NOPASSWD: /usr/sbin/nginx
3.关闭【强制控制台登录】执行
Defaults requiretty
4.还原配置文件权限
chmod u-w /etc/sudoers
备注
网站安全性有待提升