Изменение порта по умолчанию для ноутбука iPython/Jupyter

Я пытаюсь запустить ipython notebook/jupyter server на машине за брандмауэром. Единственным открытым портом является порт 80. Так было интересно, как я могу изменить порт по умолчанию от 8890 до 80?

Я создал следующую команду ipython profile create для создания профиля.

Затем отредактировал ipython_notebook_config.py и отредактировал его, чтобы он содержал следующее:

c = get_config()
c.NotebookApp.port = 80

Когда я пытаюсь запустить python notebook. Я получаю следующую ошибку:

ERROR: the notebook server could not be started because no available port could be found.


Ховер, ничто иное не использует порт 80. Apache не загружается при запуске и отключен. Я даже использовал netstat, чтобы узнать, что использует каждый порт.

$ 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

Ответ 1

Что-то уже прослушивает 80, вы не можете привязать 2 сервера к одному и тому же порту. Используйте прокси-сервер, который прослушивает 80, и перенаправляйте на другие серверы и базу IPython по URL-адресу или адресу. Также не используйте 80, используйте 443, если вы используете общедоступный сервер, он должен быть над TLS для обеспечения безопасности.

Обратите внимание, что для любого небольшого номера порта вам может потребоваться увеличить привилегии процесса до root, потенциально используя sudo.

Ответ 2

ipython notebook --ip=0.0.0.0 --port=80 or
jupyter notebook --ip=0.0.0.0 --port=80

- это то, что я сделал для запуска ipython в моем бродячем поле. (Открыл порты на брандмауэре, чтобы получить доступ к нему на моем хост-компьютере)

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]

Если порт уже занят, посмотрите, что блокирует его - inmy case это старый экземпляр ipython, который не был успешно завершен. Я выполнил их с помощью этой команды

ps auxww | grep 'ipython' | awk '{print $2}' | xargs sudo kill -9

Ответ 3

Чтобы временно изменить порт, укажите другой номер порта, когда мы запускаем сервер ноутбука Jupyter с терминала, выполнив следующую команду.

jupyter notebook --port 9999

Прочитайте больше https://jupyter.readthedocs.io/en/latest/running.html

Ответ 4

В Jupyter мы можем запустить ноутбук на другом порту двумя способами.

  1. Временный порт. Указав порт в аргументах, как показано ниже, мы можем запустить Jupyter на этом порту. Но мы должны упомянуть порт в аргументе команды всякий раз, когда нам нужно запустить Jupyter в другом порту.
jupyter notebook --port 9999
  1. Конфигурация постоянного порта - изменяя конфигурацию, мы можем постоянно запускать Jupyter на другом порту машины. Пожалуйста, выполните следующие шаги для этого.

    • Откройте файл конфигурации в нано

    nano ~/.jupyter/jupyter_notebook_config.py

    • Измените порт, изменив значение приведенной ниже конфигурации

    c.NotebookApp.port = 9999

    • начать записную книжку

    jupyter notebook

Бинго!!!