site-new Function For ZSH

Copiar

En tu archivo .zshrc agrega el siguiente código, justo al final del archivo

function create_new_site() {
    local site_name="$1"
    local php_version="$2"
    local path_site="$3"
    local domain="$4"
    local subdominio="$5"
    # Solicitaremos las variables necesarias para crear el nuevo sitio
    if [ ! -n "${(p)site_name}" ]; then
        echo "\nDefine la variable site_name para crear un nuevo sitio..\nejemplo: site_name=nombre_sitio"
        # Solicitar el nombre del sitio al usuario
        echo "Ingrese el nombre del sitio:"
        read site_name
    fi
    if [ ! -n "${(p)path_site}" ]; then
        echo "\nDefine la variable path_site para crear un nuevo sitio..\nejemplo: path_site=/var/www/html/"
        # Solicitar el nombre del sitio al usuario
        echo "Ingrese el path_site del sitio:"
        read path_site
    fi
    if [ ! -n "${(p)php_version}" ]; then
        echo "\nDefine la variable php_version, si no se define se usara la version de php por defecto.\nejemplo: php_version=7.4\n debe ser una version de php instalada en el servidor"
        # Solicitar el nombre del sitio al usuario
        echo "Ingrese la version de php:"
        read php_version
    fi
    if [ ! -n "${(p)domain}" ]; then
        echo "\nDefine la variable domain y no incluyas el subdominio, ni www.\nejemplo: domain=domain.cl"
        # Solicitar el nombre del sitio al usuario
        echo "Ingrese el dominio del sitio:"
        read domain
    fi

    if [ ! -n "${(p)subdominio}" ]; then
        echo "\nDefine la variable subdominio y no incluyas el dominio principal ${(p)domain} ni www.\nejemplo: subdominio=app"
        # Solicitar el nombre del sitio al usuario
        echo "Ingrese el subdominio del sitio:"
        read subdominio
    fi

    if [ -n "${(p)site_name}" ]; then
        # Directorio de archivos disponibles
        sites_available="/etc/nginx/sites-available"

        # Crear archivo de configuración
        echo "server {
            listen 80;
            listen [::]:80;

            # Carpeta pública
            root $path_site/$site_name;

            index index.html index.htm index.php;

            # Archivo de log
            error_log /var/log/nginx/$domain.log error;

            # Dominio
            server_name $subdominio.$domain www.$subdominio.$domain;

            location / {
                try_files \$uri \$uri/ /index.php?\$query_string;
            }

            location ~ \.php$ {
                # Versión de PHP
                fastcgi_pass unix:/run/php/php$php_version-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
                try_files \$uri =404;
                include fastcgi_params;
            }

            error_page 404 /404.html;
            error_page 500 502 503 504 /50x.html;

            location = /50x.html {
                root /usr/share/nginx/html;
            }

        }" > "$sites_available/$subdominio.$domain"

        # Habilitar el sitio
        sudo ln -s "$sites_available/$subdominio.$domain" /etc/nginx/sites-enabled

        # Recargar Nginx
        sudo systemctl reload nginx

        # Consultar por cerbot
        echo "¿Desea instalar un certificado SSL con Let's Encrypt, usando cerbot? (s/n)"
        read cerbot
        if [ "$cerbot" = "s" ]; then
            sudo certbot --nginx -d $subdominio.$domain -d www.$subdominio.$domain
        fi

        # Mensaje de éxito
        echo "\nSe ha creado un nuevo sitio con nombre: $site_name.$domain\n"
    fi
}

remove_site() {
    local site_name="$1"
    if [ ! -n "${(p)site_name}" ]; then
    echo "Ingrese el nombre del sitio\n ejemplo: site_name=sub.dominio.cl"
    read site_name
    fi
    if [ -n "${(p)site_name}" ]; then
        if [ -f /etc/nginx/sites-available/${(p)site_name} ]; then
            echo "Estas removiendo el sitio con nombre $site_name" && sudo rm /etc/nginx/sites-available/${(p)site_name} && sudo rm /etc/nginx/sites-enabled/${(p)site_name}
            # Actualizar la configuración de Nginx
            sudo systemctl reload nginx
        else
            echo "El sitio con nombre $site_name no existe."
        fi
    fi
}

alias ngnix-restart="sudo systemctl restart nginx.service"
alias site-new='create_new_site "$site_name" "$php_version" "$path_site" "$domain" "$subdominio"'
alias site-remove='remove_site "$site_name"'