在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1、为了给同一个应用项目动态配置多个域名访问,把apache服务器换成了nginx,在/etc/nginx/conf.d/下配置域名命名的配置文件 #所有访问80端口的请求都重写到443 2、php动态上传证书文件完毕的时候,生成域名命名的配置文件,需注意配置文件带$符号的字符串保持原样 $cmd = "echo '$str' > /etc/nginx/conf.d/$file_name"; exec($cmd); 常用执行shell脚本的php命令:
执行shell脚本的php命令详解:https://www.php.net/exec 3、重启nginx服务器 exec('service nginx restart');
发现不生效,这是linux用户权限的问题。系统服务默认只有root用户有权限,所以需要以root用户的身份去执行nginx的重启,此时百度的关键词为linux sudo 4、php的执行用户配置在/etc/php-fpm.d/www.conf,一般是apache或nginx用户和用户组,此处是apache,编辑/etc/sudoers文件,添加以下红色一行: ## Next comes the main part: which users can run what software on ## which machines (the sudoers file can be shared between multiple ## systems). ## Syntax: ## ## user MACHINE=COMMANDS ## ## The COMMANDS section may have other options added to it. ## ## Allow root to run any commands anywhere root ALL=(ALL) ALL apache ALL=(root) NOPASSWD: /usr/sbin/service nginx restart 5、此时php调用重启nginx的命令变成: exec('sudo service nginx restart');
6、发现生效了,但是生效的同时由于nginx重启了,这个请求哦豁了,所以想到定时计划,linux的atd就可以只执行一次定时任务就停止了。此时该百度的词就是linux at了 at 命令参数 at [参数] [时间] -m:当指定的任务被完成之后,将给用户发送邮件,即使没有标准输出 -I:atq的别名 -d:atrm的别名 -v:显示任务将被执行的时间 -c:打印任务的内容到标准输出 -V:显示版本信息 -q:使用指定队列 -f:从指定文件读入任务,而不是从标准输入读入 -t:一时间参数的形式提交要运行的任务 是不是就两种方式读入任务啊? //exec('sudo service nginx restart'); exec(at -f "xxx.txt" now + 3 min); //3分钟后执行一次xxx.txt文件里面的命令,xxx.txt里面就可以放service nginx restart了 7、最后发现不执行,问了一下别人才知道,atd服务需要可以登录的用户才能执行,所以,又可以学习一下linux用户管理啦? #打开 /etc/passwd,把apache修改为如下: apache:x:48:48:Apache:/usr/share/httpd:/bin/bash |
2022-08-17
2022-07-18
2022-11-06
2022-08-17
2022-07-30
请发表评论