热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php虚拟主机计划任务,关于php:困境:实时创建虚拟主机还是使用crontab?

我正在开发一个主机托管控制面板与代码点火器。到现在为止,一直都还不错。:)现在我正在研究一个创建虚拟主机的解决方案。创建虚拟主机的shell脚本可以工作

我正在开发一个主机托管控制面板与代码点火器。到现在为止,一直都还不错。:)

现在我正在研究一个创建虚拟主机的解决方案。创建虚拟主机的shell脚本可以工作,所以我的第一个想法是每隔15分钟在cronjob中启动该脚本。那应该管用。

但不是每15分钟就有一个新的虚拟主机要创建。所以,我认为每15分钟重新加载Apache配置非常重要。

顺便说一句,在CodeIgniter方面,它只是生成一个简单的文本文件,其中包含该新虚拟主机所属的值。

那么,是否有一个节省的解决方案来实时进行呢?我的猜测是,这是实时使用shell_exec()的唯一方法,但这不是一种节省方法。

我必须说我的shell scipting非常新手,所以可能有一种方法可以触发if或else语句来选择创建虚拟主机或什么都不做。但我该怎么做呢?那我就不需要实时做了。

这是我的shell脚本:

#!/bin/bashvhroot='/etc/apache2/sites-available/'

NEW_DOMAINS="/home/domain.txt"

cat ${NEW_DOMAINS} | \

while read domain user email

do

echo"

ServerName "$domain"

ServerAlias www."$domain"

ServerAdmin"$email"

DocumentRoot /home/"$user"/domains/"$domain"/public_html

"> $vhroot/$domain

#mkdir /home/$user/domains/domain#mkdir /home/$user/domains/$domain/public_html#chown -R $user.$user /home/$user/domains/$domain

echo"111.21.111.111       $domain">> host.txt

#a2ensite $hostnamedone

echo""> /home/domain.txt

# /etc/init.d/apache2 reload

我希望有人能为这个问题找到一个简单但有效的解决办法。

非常有用。我做了一个新版本的脚本,它也删除了vhost,查找另一个.txt文件。文档根文件夹存储在/var/www/html/websites中。根据需要进行更改。脚本还检查变量$DOMAIN是否为空,以确保脚本不会在域名出错时运行。

#!/bin/bashvhroot='/etc/apache2/sites-available/'

NEW_DOMAINS="adddomain.txt"

has_new_domains=false #No new domains by default = do not reload the apache config.

cat ${NEW_DOMAINS} | \

while read domain

do

if [ ! -z"$domain" ];

then

has_new_domains=true #true = at least one new domain = reload apache config      echo"

ServerName "$domain"

ServerAlias www."$domain"

ServerAdmin postmaster@"$domain"

DocumentRoot /var/www/html/websites/"$domain"

"> $vhroot/"$domain".conf #.conf extension needed to make a2ensite work in apache -debian      mkdir /var/www/html/websites/

mkdir /var/www/html/websites/$domain

chown -R root:www-data /var/www/html/websites

chmod -R 755 /var/www/html/websites

#create index.html file      echo"

Welcome to nginx on Debian!

body {

width: 35em;

margin: 0 auto;

font-family: Tahoma, Verdana, Arial, sans-serif;

}

Welcome to"$domain"

If you see this page, the Apache web server is successfully installed and working.

You can start building your website

">/var/www/html/websites/$domain/index.html

#echo"111.21.111.111       $domain">> host.txt      a2ensite"$domain".conf

else echo 'No new domains'

fi

done

> adddomain.txt # with echo"" an empty line is still present in fileDEL_DOMAINS="deldomain.txt"

cat ${DEL_DOMAINS} | \

while read deldomain

do

has_new_domains=true #true = at least one new domain = reload apache config  #Make sure we don't delete all parent directory , in case variable is empty  if [ ! -z"$deldomain" ]; then

a2dissite"$deldomain".conf

echo"dominio"$deldomain" eliminado"

rm -r /var/www/html/websites/$deldomain

rm $vhroot/"$deldomain".conf

fi

done

> deldomain.txt

if $has_new_domains ; then #only reload the apache config if there is at least one new domain    /etc/init.d/apache2 reload

fi

您可以向脚本中添加一个bool变量,并且仅在添加了新的vhost时重新启动Web服务器。

未经测试的:

#!/bin/bashvhroot='/etc/apache2/sites-available/'

NEW_DOMAINS="/home/domain.txt"

has_new_domains=false #No new domains by default = do not reload the apache config.

cat ${NEW_DOMAINS} | \

while read domain user email

do

has_new_domains=true #true = at least one new domain = reload apache config  echo"

ServerName "$domain"

ServerAlias www."$domain"

ServerAdmin"$email"

DocumentRoot /home/"$user"/domains/"$domain"/public_html

"> $vhroot/$domain

#mkdir /home/$user/domains/domain  #mkdir /home/$user/domains/$domain/public_html  #chown -R $user.$user /home/$user/domains/$domain

echo"111.21.111.111       $domain">> host.txt

#a2ensite $hostnamedone

echo""> /home/domain.txt

if $has_new_domains ; then #only reload the apache config if there is at least one new domain  /etc/init.d/apache2 reload

fi

顺便说一句:我希望$user和$domain中的所有东西都是安全的,不能用来将vhost以外的东西注入配置中。:)



推荐阅读
  • mysql自动打开文件_让docker中的mysql启动时自动执行sql文件
    本文提要本文目的不仅仅是创建一个MySQL的镜像,而是在其基础上再实现启动过程中自动导入数据及数据库用户的权限设置,并且在新创建出来的容器里自动启动My ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • 本文主要复习了数据库的一些知识点,包括环境变量设置、表之间的引用关系等。同时介绍了一些常用的数据库命令及其使用方法,如创建数据库、查看已存在的数据库、切换数据库、创建表等操作。通过本文的学习,可以加深对数据库的理解和应用能力。 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • 使用C++编写程序实现增加或删除桌面的右键列表项
    本文介绍了使用C++编写程序实现增加或删除桌面的右键列表项的方法。首先通过操作注册表来实现增加或删除右键列表项的目的,然后使用管理注册表的函数来编写程序。文章详细介绍了使用的五种函数:RegCreateKey、RegSetValueEx、RegOpenKeyEx、RegDeleteKey和RegCloseKey,并给出了增加一项的函数写法。通过本文的方法,可以方便地自定义桌面的右键列表项。 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • Hello,Imaintainawebcluster,withDebiani386andDebianAMD64nodes(itwa ... [详细]
  • Linux一键安装web环境全攻略
    摘自阿里云服务器官网,此处一键安装包下载:点此下载安装须知1、此安装包可在阿里云所有Linux系统上部署安装,此安装包包含的软件及版本为& ... [详细]
  • php设置数组大小_【大厂必备】2020超经典PHP面试题
    结合我自己这段时间的面试情况,面对的一些php面试题列举出来,基本上结合自己的看法回答的,不妥的地方请大家指出去,与大家一起 ... [详细]
  • destoon会员注册提示“数据校验失败(2)”解决方法【PHP】
    后端开发|php教程destoon,会员注册,数据校验失败,后端开发-php教程很多人在使用destoon建立一个B2B系统的时候,会在企业站注册企业用户的时候出现:“数据校验失败 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
author-avatar
crazyuzy327
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有