vh-install

Easy setup of development virtual hosts under OSx.

Usage no npm install needed!

<script type="module">
  import vhInstall from 'https://cdn.skypack.dev/vh-install';
</script>

README

vh-install

Easy setup of development virtual hosts under OSx.

TODO:

  • support other *nix environments
  • support windows?
  • proper cli with help and version (use clix?)
  • add unit tests

Install

npm i -g vh-install

Usage

# create a virtual host "some.domain.com" with document root /path/to/some/document/root
# it requires sudo in order to modify the vhosts file
sudo vh-install -d /path/to/some/document/root -h some.domain.com

This will add the following to the /etc/apache2/extra/httpd-vhosts.conf file

<VirtualHost *:80>

  ServerName some.domain.com

  DocumentRoot /path/to/some/document/root
  <Directory "/path/to/some/document/root">
    AllowOverride All
    Allow from All
  </Directory>

  <IfModule mime_module>
    AddType application/json .json
    AddType video/mp4 .mp4
    AddType video/webm .webm
    AddType video/ogg .ogg
    AddType audio/mp4 .m4a
    AddType audio/mpeg .mp3
  </IfModule>

  ErrorLog /var/log/apache2/some_domain_com_error.log
  LogLevel warn
  CustomLog /var/log/apache2/some_domain_com_access.log combined

  KeepAlive On
  KeepAliveTimeout 2

</VirtualHost>

and add the following entry to your /etc/hosts

127.0.0.1 some.domain.com

Examples

# create a virtual host "some.domain.com" with document root relative to the current execution folder ./document/root
sudo vh-install -d ./document/root -h some.domain.com

# create a virtual host "some.domain.com" with document root relative to the current execution folder ./document/root
sudo vh-install -d ./document/root -h some.domain.com

# create a virtual host "some.domain.com" with document root relative to the current execution folder ./document/root
# --ssl makes the parameters --ssl-cert and --ssl-key mandatory. If any of them is missing a prompt message will appear.
# the path could be either relative or absolute
sudo vh-install -d ./document/root -h some.domain.com --ssl --ssl-key ./apache-conf/server.key --ssl-cert ./apache-conf/server.crt

# create a virtual host "some.domain.com" with document root relative to the current execution folder ./document/root in linux
sudo vh-install -d ./document/root -h some.domain.com

# Just show what actions will the command do with the --dry-run parameter
sudo vh-install -d ./document/root -h some.domain.com --dry-run
sudo vh-install -d ./document/root -h some.domain.com --ssl --dry-run --ssl-key ./apache-conf/server.key --ssl-cert ./apache-conf/server.crt

if --ssl option is specified then the following vhost will be added to /etc/apache2/extra/httpd-ssl.conf

<VirtualHost *:443>
 SSLEngine on
 ServerName some.domain.com
 SSLCertificateKeyFile /resolved/path/to/apache-conf/server.key
 SSLCertificateFile /resolved/path/to/apache-conf/server.crt

  DocumentRoot /resolve/path/to/some/document/root
  <Directory "/resolve/path/to/some/document/root">
   Require all granted
   AllowOverride All
   Allow from All
  </Directory>

 <IfModule mime_module>
   AddType application/json .json
   AddType video/mp4 .mp4
   AddType video/webm .webm
   AddType video/ogg .ogg
   AddType audio/mp4 .m4a
   AddType audio/mpeg .mp3
 </IfModule>

 ErrorLog /var/log/apache2/some.domain.com_error.log
 LogLevel warn
 CustomLog /var/log/apache2/some.domain.com_access.log combined

 KeepAlive On
 KeepAliveTimeout 2

</VirtualHost>

Do not forget to restart apache ** Apache is now restarted from within the script

In linux platforms a virtual host file will be created inside the /etc/apache2/sites-available/ folder and a2ensite will be called to add it.

if --dry-run is specified then nothing will be actually executed and the commands will be printed to the stdout.

License

MIT

Changelog

Changelog