Ich versuche, ein Ipython-Notebook/Jupyter-Server auf einem Computer hinter einer Firewall auszuführen. Der einzige offene Port ist Port 80. Sie haben sich also gefragt, wie ich den Standardport von 8890 auf 80 ändern kann?
Ich habe den folgenden Befehl ausgeführt ipython profile create
, um ein Profil zu erstellen.
Dann bearbeitet ipython_notebook_config.py
und bearbeitete es so, dass es Folgendes enthält:
c = get_config()
c.NotebookApp.port = 80
Beim Versuch, python notebook auszuführen, wird folgende Fehlermeldung angezeigt:
ERROR: the notebook server could not be started because no available port could be found.
Allerdings scheint nichts anderes den Port 80 zu verwenden. Apache bootet beim Start nicht und ist deaktiviert. Ich habe sogar netstat verwendet, um zu sehen, was jeden Port verwendet.
$ Sudo netstat -lnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 1226/vsftpd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1532/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 3433/cupsd
tcp 0 0 127.0.0.1:5984 0.0.0.0:* LISTEN 1410/beam.smp
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1653/mysqld
tcp6 0 0 :::22 :::* LISTEN 1532/sshd
tcp6 0 0 ::1:631 :::* LISTEN 3433/cupsd
udp 0 0 0.0.0.0:52741 0.0.0.0:* 796/avahi-daemon: r
udp 0 0 0.0.0.0:5353 0.0.0.0:* 796/avahi-daemon: r
udp 0 0 0.0.0.0:31114 0.0.0.0:* 1105/dhclient
udp 0 0 0.0.0.0:68 0.0.0.0:* 1105/dhclient
udp 0 0 xxx.xxx.xxx.xxx:123 0.0.0.0:* 2607/ntpd
udp 0 0 127.0.0.1:123 0.0.0.0:* 2607/ntpd
udp 0 0 0.0.0.0:123 0.0.0.0:* 2607/ntpd
udp 0 0 0.0.0.0:631 0.0.0.0:* 1630/cups-browsed
udp6 0 0 :::5353 :::* 796/avahi-daemon: r
udp6 0 0 :::69 :::* 1607/in.tftpd
udp6 0 0 :::24682 :::* 1105/dhclient
udp6 0 0 xxxx::xxxx:xxxx:xxxx:123 :::* 2607/ntpd
udp6 0 0 ::1:123 :::* 2607/ntpd
udp6 0 0 :::123 :::* 2607/ntpd
udp6 0 0 :::59559 :::* 796/avahi-daemon: r
Active UNIX domain sockets (only servers)
Proto RefCnt Flags Type State I-Node PID/Program name Path
unix 2 [ ACC ] STREAM LISTENING 20483 3253/pulseaudio /run/user/1003/Pulse/native
unix 2 [ ACC ] STREAM LISTENING 18697 3179/gnome-session @/tmp/.ICE-unix/3179
unix 2 [ ACC ] STREAM LISTENING 15765 2507/X /tmp/.X11-unix/X0
unix 2 [ ACC ] STREAM LISTENING 20481 3253/pulseaudio /tmp/.esd-1003/socket
unix 2 [ ACC ] STREAM LISTENING 18698 3179/gnome-session /tmp/.ICE-unix/3179
unix 2 [ ACC ] STREAM LISTENING 15764 2507/X @/tmp/.X11-unix/X0
unix 2 [ ACC ] STREAM LISTENING 10538 768/bluetoothd /var/run/sdp
unix 2 [ ACC ] STREAM LISTENING 21564 3433/cupsd /var/run/cups/cups.sock
unix 2 [ ACC ] STREAM LISTENING 10820 1653/mysqld /var/run/mysqld/mysqld.sock
unix 2 [ ACC ] STREAM LISTENING 16666 3184/dbus-daemon @/tmp/dbus-1gowauBlhV
unix 2 [ ACC ] STREAM LISTENING 14432 748/dbus-daemon /var/run/dbus/system_bus_socket
unix 2 [ ACC ] STREAM LISTENING 8877 1/init @/com/ubuntu/upstart
unix 2 [ ACC ] STREAM LISTENING 16698 3136/ibus-daemon @/tmp/dbus-ue1VKkXx
unix 2 [ ACC ] STREAM LISTENING 12135 3005/gnome-keyring- /run/user/1003/keyring-htUkSg/control
unix 2 [ ACC ] STREAM LISTENING 14469 796/avahi-daemon: r /var/run/avahi-daemon/socket
unix 2 [ ACC ] STREAM LISTENING 10034 3102/dbus-daemon @/tmp/dbus-SCYaEa0Hje
unix 2 [ ACC ] STREAM LISTENING 18577 3005/gnome-keyring- /run/user/1003/keyring-htUkSg/pkcs11
unix 2 [ ACC ] STREAM LISTENING 18581 3005/gnome-keyring- /run/user/1003/keyring-htUkSg/gpg
unix 2 [ ACC ] STREAM LISTENING 18583 3005/gnome-keyring- /run/user/1003/keyring-htUkSg/ssh
unix 2 [ ACC ] STREAM LISTENING 18569 3007/init @/com/ubuntu/upstart-session/1003/3007
unix 2 [ ACC ] SEQPACKET LISTENING 11473 396/systemd-udevd /run/udev/control
unix 2 [ ACC ] STREAM LISTENING 10725 1572/acpid /var/run/acpid.socket
Etwas lauscht bereits auf 80, Sie können nicht zwei Server an denselben Port binden. Verwenden Sie einen Proxy, der 80 abhört, und leiten Sie auf der Basis von URL oder Adresse zu Ihren anderen Servern und IPython weiter. Verwenden Sie auch nicht 80, sondern 443, wenn Sie einen öffentlichen Server betreiben, sollte dieser aus Sicherheitsgründen über TLS laufen.
Beachten Sie, dass Sie für eine niedrige Portnummer möglicherweise die Prozessberechtigungen für root erhöhen müssen, möglicherweise unter Verwendung von Sudo.
ipython notebook --ip=0.0.0.0 --port=80 or
jupyter notebook --ip=0.0.0.0 --port=80
habe ich gemacht, um ipython in meiner vagrant box zu starten. (Öffnete die Ports auf der Vagrant-Box, um auf meinem Host-Mac darauf zuzugreifen.)
usage: ipython [-h] [--certfile NOTEBOOKAPP.CERTFILE] [--ip NOTEBOOKAPP.IP]
[--pylab [NOTEBOOKAPP.PYLAB]]
[--log-level NOTEBOOKAPP.LOG_LEVEL]
[--port-retries NOTEBOOKAPP.PORT_RETRIES]
[--notebook-dir NOTEBOOKAPP.NOTEBOOK_DIR]
[--config NOTEBOOKAPP.CONFIG_FILE]
[--keyfile NOTEBOOKAPP.KEYFILE] [--port NOTEBOOKAPP.PORT]
[--transport KERNELMANAGER.TRANSPORT]
[--browser NOTEBOOKAPP.BROWSER] [--script] [-y] [--no-browser]
[--debug] [--no-mathjax] [--no-script] [--generate-config]
Wenn der Port bereits belegt ist, sehen Sie, was ihn blockiert - in jedem Fall handelt es sich um eine alte Instanz von ipython, die nicht ordnungsgemäß beendet wurde. Ich habe sie alle mit diesem Befehl getötet
ps auxww | grep 'ipython' | awk '{print $2}' | xargs Sudo kill -9
Um den Port vorübergehend zu ändern, geben Sie eine andere Portnummer an, wenn Sie den Jupyter Notebook-Server von einem Terminal aus starten, indem Sie den folgenden Befehl ausführen.
jupyter notebook --port 9999
Lesen Sie mehr https://jupyter.readthedocs.io/en/latest/running.html
In Jupyter können wir das Notebook auf zwei Arten an verschiedenen Ports starten.
jupyter notebook --port 9999
Permanente Portkonfiguration - Durch Ändern der Konfiguration können wir Jupyter permanent auf einem anderen Port der Maschine ausführen. Bitte befolgen Sie dazu die folgenden Schritte.
nano ~/.jupyter/jupyter_notebook_config.py
c.NotebookApp.port = 9999
jupyter notebook
Bingo!!!