This is a script to emulate some of pow's functionality.
For it all to work, it requires:
- A functional nginx installation (provided)
- A functional dnsmasq installation (provided)
- An app that listens on
$app_dir/tmp/app.sock
or a static site that places it's content under $app_dir/public - Some familiarity with the command line
-
Check out orc into
~/.orc
.$ git clone https://github.com/basecamp/orc.git ~/.orc
-
Add
orc init
to your shell to enable shims and autocompletion.$ echo 'eval "$(~/.orc/bin/orc init -)"' >> ~/.bash_profile
Use
~/.bashrc
on Ubuntu, or~/.zshrc
for Zsh. -
Restart your shell so that PATH changes take effect. (Opening a new terminal tab will usually do it.) Now check if orc was set up:
$ type orc #=> "orc is a aliased to _orc_wrapper"
-
Start the web and dns processes:
$ orc install
This will configure our DNS resolver to use our new dns server for the *.devel domain. Here's how we're doing it on OS X:
~~~ sh
$ echo nameserver 127.0.0.1 | \
sudo tee /etc/resolver/devel /etc/resolver/staging
~~~
For Linux, please install dnsmasq and add the following to your config: ~~~ sh address=/.devel/127.0.0.1 ~~~
$ orc uninstall
And remove the eval "$(~/.orc/bin/orc init -)"
line from your .bashrc
/.bash_profile
/.zshrc
.
$ orc add /path/to/my-cool-app
You can now go to http://my-cool-app.dev/ and see your app running!
$ orc remove my-cool-app
This will remove the link to the app and orc cannot manage it anymore.
This is in flux. More details as this architecture emerges.
Running orc help
is your friend.
To handle nginx and dns, we use docker! Go install it. To get them setup and running, it's pretty easy:
$ orc web start
This will create AND TRUST a local CA for local https development and start the docker containers. If you want to watch the nginx logs, run:
$ orc web logs
# or
$ orc web logs -f
Our general request path will look like this:
Many thanks to @noahhl, @sstephenson, @qrush for their excellent support and encouragement! Thanks to @ernie for the_setup which also influenced the design; more directly in some ways than others!