Creating an IPython Notebook server on Amazon EC2 is a relatively straightforward process. I simply followed the instructions here. The only catch was that each time I created a new instance I had to SSH into the machine and manually start up the notebook server. That's irritating. I'd rather have them start automatically.
Added the following to my rc.local file:
ipython notebook --profile=nbserver > /tmp/ipynb.out 2>&1
But, when I rebooted the machine and looked at the log file it said, "/etc/rc.local: ipython: not found". Hmmm.
The following command in the rc.local file does work. The problem is that the rc.local file runs as 'root', not as 'ubuntu' where I installed Anaconda and set up the notebook server.
su ubuntu -c 'ipython notebook --profile=nbserver > /tmp/ipynb.out 2>&1'
That also appears to not work. I think this is because the bash.rc file is not loading. This is where Anaconda is assigned to the user's path.
This didn't work either:
su ubuntu -c 'export PATH=/home/ubuntu/anaconda/bin:$PATH'
su ubuntu -c 'ipython notebook --profile=nbserver > /tmp/ipynb.out 2>&1 &'
I'm not sure why that didn't work as two steps.
Here's the final solution.
It involves two steps.
1) Add the following line to your rc.local file:
su ubuntu -c 'bash /home/ubuntu/startup_ipynb.sh'
2) Create a script called "startup_ipynb.sh" that contains these lines:
export PATH=/home/ubuntu/anaconda/bin:$PATH
ipython notebook --notebook-dir=\writeable\path\ --profile=nbserver > /tmp/ipynb.out 2>&1 &
This will run those two lines as the 'ubuntu' user and start up the notebook server.
Thanks for this post! I had been trying to auto start ipython for the past 6 hours, this was a life saver. Also, for me I needed sudo in front of ipython notebook --notebook-dir=\writeable\path\ --profile=nbserver > /tmp/ipynb.out 2>&1 &
ReplyDelete