{"id":477758,"date":"2023-08-09T09:19:52","date_gmt":"2023-08-09T09:19:52","guid":{"rendered":""},"modified":"2023-09-05T11:15:22","modified_gmt":"2023-09-05T11:15:22","slug":"jupyterhub","status":"publish","type":"wiki","link":"https:\/\/oneproxy.pro\/cn\/wiki\/jupyterhub\/","title":{"rendered":"JupyterHub"},"content":{"rendered":"<p>JupyterHub \u662f\u4e00\u4e2a\u57fa\u4e8e Web \u7684\u5f00\u6e90\u5e94\u7528\u7a0b\u5e8f\uff0c\u53ef\u4fc3\u8fdb\u534f\u4f5c\u6570\u636e\u79d1\u5b66\u548c\u4ea4\u4e92\u5f0f\u8ba1\u7b97\u3002\u5b83\u4f7f\u591a\u4e2a\u7528\u6237\u80fd\u591f\u8bbf\u95ee Jupyter \u7b14\u8bb0\u672c\u5e76\u5b9e\u65f6\u534f\u4f5c\u5904\u7406\u9879\u76ee\u3002 JupyterHub \u65e8\u5728\u63d0\u4f9b\u4e00\u79cd\u9ad8\u6548\u4e14\u53ef\u6269\u5c55\u7684\u89e3\u51b3\u65b9\u6848\uff0c\u7528\u4e8e\u5728\u591a\u7528\u6237\u73af\u5883\u4e2d\u90e8\u7f72 Jupyter \u7b14\u8bb0\u672c\u670d\u52a1\u5668\uff0c\u4f7f\u5176\u6210\u4e3a\u6570\u636e\u79d1\u5b66\u5bb6\u3001\u7814\u7a76\u4eba\u5458\u3001\u6559\u80b2\u5de5\u4f5c\u8005\u548c\u5176\u4ed6\u9700\u8981\u4ea4\u4e92\u5f0f\u8ba1\u7b97\u529f\u80fd\u7684\u4e13\u4e1a\u4eba\u58eb\u7684\u5b9d\u8d35\u5de5\u5177\u3002<\/p>\n<h2>JupyterHub \u7684\u8d77\u6e90\u5386\u53f2\u548c\u9996\u6b21\u63d0\u53ca<\/h2>\n<p>JupyterHub \u7684\u8d77\u6e90\u53ef\u4ee5\u8ffd\u6eaf\u5230 Jupyter \u9879\u76ee\uff0c\u8be5\u9879\u76ee\u7531 Fernando P\u00e9rez \u548c Brian Granger \u4e8e 2014 \u5e74\u53d1\u8d77\u3002\u6700\u521d\uff0cJupyter \u9879\u76ee\u4e13\u6ce8\u4e8e\u521b\u5efa\u4e00\u4e2a\u540d\u4e3a IPython Notebook \u7684 Web \u5e94\u7528\u7a0b\u5e8f\uff0c\u8be5\u5e94\u7528\u7a0b\u5e8f\u5141\u8bb8\u7528\u6237\u521b\u5efa\u548c\u5171\u4eab\u5305\u542b\u5b9e\u65f6\u4ee3\u7801\u3001\u65b9\u7a0b\u3001\u53ef\u89c6\u5316\u548c\u53d9\u8ff0\u6587\u672c\u7684\u6587\u6863\u3002<\/p>\n<p>\u968f\u7740\u8be5\u9879\u76ee\u83b7\u5f97\u5173\u6ce8\uff0cIPython Notebook \u6f14\u53d8\u4e3a Jupyter Notebook\uff0c\u5176\u4e2d\u5305\u542b\u5bf9\u591a\u79cd\u7f16\u7a0b\u8bed\u8a00\u7684\u652f\u6301\u3002 Jupyter \u529f\u80fd\u7684\u6269\u5c55\u5f15\u53d1\u4e86\u5bf9\u4e00\u79cd\u89e3\u51b3\u65b9\u6848\u7684\u9700\u6c42\uff0c\u8be5\u89e3\u51b3\u65b9\u6848\u53ef\u4ee5\u5728\u534f\u4f5c\u73af\u5883\u4e2d\u4e3a\u591a\u4e2a\u7528\u6237\u7ba1\u7406\u548c\u670d\u52a1 Jupyter \u7b14\u8bb0\u672c\u3002\u8fd9\u79cd\u9700\u6c42\u5bfc\u81f4\u4e86 JupyterHub \u7684\u5f00\u53d1\u3002<\/p>\n<h2>\u6709\u5173 JupyterHub \u7684\u8be6\u7ec6\u4fe1\u606f\uff1a\u6269\u5c55\u4e3b\u9898 JupyterHub<\/h2>\n<p>JupyterHub \u662f\u4e00\u4e2a\u591a\u7528\u6237\u670d\u52a1\u5668\uff0c\u53ef\u4e3a\u6bcf\u4e2a\u7528\u6237\u7ba1\u7406\u548c\u751f\u6210\u5355\u72ec\u7684 Jupyter \u7b14\u8bb0\u672c\u5b9e\u4f8b\u3002\u5b83\u63d0\u4f9b\u4e86\u4e00\u4e2a\u7528\u4e8e\u6258\u7ba1 Jupyter \u7b14\u8bb0\u672c\u7684\u96c6\u4e2d\u5e73\u53f0\uff0c\u4f7f\u5176\u53ef\u4f9b\u5927\u91cf\u7528\u6237\u540c\u65f6\u8bbf\u95ee\u3002 JupyterHub \u5728\u5ba2\u6237\u7aef-\u670d\u52a1\u5668\u67b6\u6784\u4e0a\u8fd0\u884c\uff0c\u5176\u4e2d\u670d\u52a1\u5668\u6258\u7ba1\u7b14\u8bb0\u672c\u73af\u5883\uff0c\u5ba2\u6237\u7aef\uff08\u901a\u5e38\u662f Web \u6d4f\u89c8\u5668\uff09\u4e0e\u670d\u52a1\u5668\u4ea4\u4e92\u4ee5\u6267\u884c\u4ee3\u7801\u3001\u53ef\u89c6\u5316\u6570\u636e\u548c\u521b\u5efa\u5185\u5bb9\u3002<\/p>\n<p>JupyterHub \u7684\u4e3b\u8981\u529f\u80fd\u5305\u62ec\uff1a<\/p>\n<ol>\n<li>\n<p><strong>\u7528\u6237\u8ba4\u8bc1\uff1a<\/strong> JupyterHub \u96c6\u6210\u4e86\u5404\u79cd\u8eab\u4efd\u9a8c\u8bc1\u65b9\u6cd5\uff0c\u5305\u62ec\u672c\u5730\u8eab\u4efd\u9a8c\u8bc1\u3001OAuth \u548c\u5355\u70b9\u767b\u5f55 (SSO) \u89e3\u51b3\u65b9\u6848\uff0c\u786e\u4fdd\u6388\u6743\u7528\u6237\u7684\u5b89\u5168\u8bbf\u95ee\u3002<\/p>\n<\/li>\n<li>\n<p><strong>\u8d44\u6e90\u7ba1\u7406\uff1a<\/strong> JupyterHub\u6709\u6548\u5206\u914d\u8ba1\u7b97\u8d44\u6e90\uff0c\u9632\u6b62\u7528\u6237\u4e4b\u95f4\u7684\u8d44\u6e90\u4e89\u7528\uff0c\u4fdd\u8bc1\u6027\u80fd\u6d41\u7545\u3002<\/p>\n<\/li>\n<li>\n<p><strong>\u751f\u6210\u5668\u7cfb\u7edf\uff1a<\/strong> Spawner \u7cfb\u7edf\u8d1f\u8d23\u4e3a\u6bcf\u4e2a\u7528\u6237\u521b\u5efa\u548c\u7ba1\u7406\u5355\u72ec\u7684\u7b14\u8bb0\u672c\u5b9e\u4f8b\uff0c\u4ece\u800c\u5b9e\u73b0\u7528\u6237\u73af\u5883\u7684\u65e0\u7f1d\u9694\u79bb\u3002<\/p>\n<\/li>\n<li>\n<p><strong>\u5e76\u53d1\u8bbf\u95ee\uff1a<\/strong> \u591a\u4e2a\u7528\u6237\u53ef\u4ee5\u540c\u65f6\u8bbf\u95ee\u5404\u81ea\u7684 Jupyter \u7b14\u8bb0\u672c\uff0c\u4ece\u800c\u4fc3\u8fdb\u534f\u4f5c\u548c\u4ea4\u4e92\u5f0f\u5b66\u4e60\u3002<\/p>\n<\/li>\n<\/ol>\n<h2>JupyterHub\u7684\u5185\u90e8\u7ed3\u6784\uff1aJupyterHub\u5982\u4f55\u5de5\u4f5c<\/h2>\n<p>JupyterHub \u6784\u5efa\u5728 Jupyter \u751f\u6001\u7cfb\u7edf\u4e4b\u4e0a\uff0c\u5e76\u4e0e Kubernetes \u6216 Docker Swarm \u7b49\u5bb9\u5668\u7f16\u6392\u5668\u7ed3\u5408\u8fd0\u884c\u3002 JupyterHub\u7684\u5185\u90e8\u7ed3\u6784\u53ef\u4ee5\u5206\u4e3a\u4ee5\u4e0b\u51e0\u4e2a\u90e8\u5206\uff1a<\/p>\n<ol>\n<li>\n<p><strong>\u4ee3\u7406\u4eba\uff1a<\/strong> \u4ee3\u7406\u8d1f\u8d23\u5c06\u4f20\u5165\u8bf7\u6c42\u8def\u7531\u5230\u76f8\u5e94\u7528\u6237\u7684\u7b14\u8bb0\u672c\u670d\u52a1\u5668\u3002\u5b83\u5145\u5f53\u7528\u6237\u6d4f\u89c8\u5668\u548c Jupyter \u7b14\u8bb0\u672c\u5b9e\u4f8b\u4e4b\u95f4\u7684\u4e2d\u4ecb\u3002<\/p>\n<\/li>\n<li>\n<p><strong>\u4e2d\u5fc3\uff1a<\/strong> \u8be5\u96c6\u7ebf\u5668\u662f JupyterHub \u7684\u6838\u5fc3\uff0c\u7ba1\u7406\u7528\u6237\u8eab\u4efd\u9a8c\u8bc1\u5e76\u4f7f\u7528\u751f\u6210\u5668\u7cfb\u7edf\u751f\u6210\u5355\u72ec\u7684\u7b14\u8bb0\u672c\u670d\u52a1\u5668\u3002<\/p>\n<\/li>\n<li>\n<p><strong>\u751f\u6210\u5668\uff1a<\/strong> Spawner \u7cfb\u7edf\u8d1f\u8d23\u4e3a\u6bcf\u4e2a\u7528\u6237\u521b\u5efa\u548c\u7ba1\u7406\u5355\u72ec\u7684\u7b14\u8bb0\u672c\u5b9e\u4f8b\u3002\u5b83\u5141\u8bb8\u7528\u6237\u4f7f\u7528\u6240\u9700\u7684\u8ba1\u7b97\u8d44\u6e90\u8bbf\u95ee\u5176\u7279\u5b9a\u73af\u5883\u3002<\/p>\n<\/li>\n<li>\n<p><strong>\u8ba4\u8bc1\u6a21\u5757\uff1a<\/strong> \u8eab\u4efd\u9a8c\u8bc1\u6a21\u5757\u5904\u7406\u7528\u6237\u8eab\u4efd\u9a8c\u8bc1\u548c\u6388\u6743\uff0c\u786e\u4fdd\u53ea\u6709\u6388\u6743\u7528\u6237\u624d\u80fd\u8bbf\u95ee JupyterHub\u3002<\/p>\n<\/li>\n<li>\n<p><strong>\u914d\u7f6e\u5668\uff1a<\/strong> \u914d\u7f6e\u5668\u5141\u8bb8\u7ba1\u7406\u5458\u6839\u636e\u81ea\u5df1\u7684\u5177\u4f53\u8981\u6c42\u8bbe\u7f6e\u548c\u81ea\u5b9a\u4e49 JupyterHub \u73af\u5883\u3002<\/p>\n<\/li>\n<\/ol>\n<h2>JupyterHub\u5173\u952e\u7279\u6027\u5206\u6790<\/h2>\n<p>JupyterHub \u7684\u4e3b\u8981\u529f\u80fd\u4f7f\u5176\u6210\u4e3a\u534f\u4f5c\u6570\u636e\u79d1\u5b66\u548c\u4ea4\u4e92\u5f0f\u8ba1\u7b97\u7684\u5f3a\u5927\u5e73\u53f0\u3002\u4e00\u4e9b\u4e3b\u8981\u4f18\u52bf\u548c\u7528\u4f8b\u5305\u62ec\uff1a<\/p>\n<ol>\n<li>\n<p><strong>\u6559\u80b2\uff1a<\/strong> JupyterHub \u5e7f\u6cdb\u5e94\u7528\u4e8e\u6559\u80b2\u73af\u5883\uff0c\u5141\u8bb8\u6559\u5e08\u4e3a\u5b66\u751f\u521b\u5efa\u4ea4\u4e92\u5f0f\u8bfe\u7a0b\u548c\u4f5c\u4e1a\u3002\u5b83\u4fc3\u8fdb\u534f\u4f5c\u5b66\u4e60\uff0c\u5e76\u4f7f\u5b66\u751f\u80fd\u591f\u5b9e\u65f6\u8bd5\u9a8c\u4ee3\u7801\u3002<\/p>\n<\/li>\n<li>\n<p><strong>\u7814\u7a76\u5408\u4f5c\uff1a<\/strong> \u7814\u7a76\u4eba\u5458\u548c\u6570\u636e\u79d1\u5b66\u5bb6\u53ef\u4ee5\u4f7f\u7528 JupyterHub \u8fdb\u884c\u9879\u76ee\u534f\u4f5c\u3001\u5171\u4eab\u4ee3\u7801\u548c\u53d1\u73b0\u4ee5\u53ca\u5171\u540c\u5b8c\u6210\u6570\u636e\u5206\u6790\u4efb\u52a1\u3002<\/p>\n<\/li>\n<li>\n<p><strong>\u8d44\u6e90\u6548\u7387\uff1a<\/strong> JupyterHub \u6709\u6548\u5730\u5206\u914d\u8ba1\u7b97\u8d44\u6e90\uff0c\u5141\u8bb8\u591a\u4e2a\u7528\u6237\u5171\u4eab\u76f8\u540c\u7684\u57fa\u7840\u8bbe\u65bd\u800c\u4e0d\u4f1a\u53d1\u751f\u51b2\u7a81\u3002<\/p>\n<\/li>\n<li>\n<p><strong>\u91cd\u73b0\u6027\uff1a<\/strong> Jupyter \u7b14\u8bb0\u672c\u672c\u8d28\u4e0a\u662f\u53ef\u590d\u5236\u7684\uff0c\u56e0\u4e3a\u5b83\u4eec\u5305\u542b\u4ee3\u7801\u548c\u6587\u672c\u89e3\u91ca\uff0c\u4f7f\u5176\u4ed6\u4eba\u66f4\u5bb9\u6613\u7406\u89e3\u548c\u590d\u5236\u5206\u6790\u3002<\/p>\n<\/li>\n<li>\n<p><strong>\u4ea4\u4e92\u5f0f\u53ef\u89c6\u5316\uff1a<\/strong> Jupyter Notebook \u652f\u6301\u4ea4\u4e92\u5f0f\u53ef\u89c6\u5316\uff0c\u8fd9\u6709\u52a9\u4e8e\u6570\u636e\u63a2\u7d22\u548c\u5206\u6790\u3002<\/p>\n<\/li>\n<\/ol>\n<h2>JupyterHub \u7684\u7c7b\u578b<\/h2>\n<p>JupyterHub \u53ef\u4ee5\u6839\u636e\u57fa\u7840\u8bbe\u65bd\u548c\u7528\u6237\u9700\u6c42\u4ee5\u5404\u79cd\u914d\u7f6e\u8fdb\u884c\u90e8\u7f72\u3002\u4ee5\u4e0b\u662f\u4e3b\u8981\u7c7b\u578b\uff1a<\/p>\n<table>\n<thead>\n<tr>\n<th><strong>\u7c7b\u578b<\/strong><\/th>\n<th><strong>\u63cf\u8ff0<\/strong><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\u672c\u5730\u5b89\u88c5<\/td>\n<td>JupyterHub\u5b89\u88c5\u5728\u672c\u5730\u670d\u52a1\u5668\u6216\u673a\u5668\u4e0a\uff0c\u9002\u5408\u5c0f\u578b\u56e2\u961f\u6216\u4e2a\u4eba\u4f7f\u7528\u3002<\/td>\n<\/tr>\n<tr>\n<td>\u4e91\u7aef\u90e8\u7f72<\/td>\n<td>JupyterHub \u6258\u7ba1\u5728 AWS\u3001Azure \u6216 Google Cloud \u7b49\u4e91\u5e73\u53f0\u4e0a\uff0c\u63d0\u4f9b\u53ef\u6269\u5c55\u6027\u3002<\/td>\n<\/tr>\n<tr>\n<td>\u5bb9\u5668\u5316\u65b9\u6cd5<\/td>\n<td>JupyterHub\u4f7f\u7528Docker\u7b49\u5bb9\u5668\u5316\u6280\u672f\u8fdb\u884c\u90e8\u7f72\uff0c\u7b80\u5316\u4e86\u90e8\u7f72\u3002<\/td>\n<\/tr>\n<tr>\n<td>\u96c6\u7fa4\u90e8\u7f72<\/td>\n<td>JupyterHub \u4e0e Kubernetes \u7b49\u96c6\u7fa4\u8ba1\u7b97\u6846\u67b6\u96c6\u6210\uff0c\u4ee5\u5b9e\u73b0\u9ad8\u53ef\u6269\u5c55\u6027\u3002<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>JupyterHub\u7684\u4f7f\u7528\u65b9\u6cd5\u3001\u4f7f\u7528\u8fc7\u7a0b\u4e2d\u9047\u5230\u7684\u95ee\u9898\u4ee5\u53ca\u89e3\u51b3\u65b9\u6cd5<\/h2>\n<h3>JupyterHub\u7684\u4f7f\u7528\u65b9\u6cd5\uff1a<\/h3>\n<ol>\n<li>\n<p>\u534f\u4f5c\u6570\u636e\u79d1\u5b66\uff1a\u56e2\u961f\u53ef\u4ee5\u5b9e\u65f6\u534f\u4f5c\uff0c\u5171\u540c\u4e3a\u6570\u636e\u5206\u6790\u9879\u76ee\u505a\u51fa\u8d21\u732e\u3002<\/p>\n<\/li>\n<li>\n<p>\u6559\u80b2\uff1aJupyterHub \u4fc3\u8fdb\u5404\u4e2a\u9886\u57df\u7684\u4e92\u52a8\u548c\u53c2\u4e0e\u8bfe\u7a0b\uff0c\u5305\u62ec\u6570\u636e\u79d1\u5b66\u3001\u6570\u5b66\u548c\u7f16\u7a0b\u3002<\/p>\n<\/li>\n<li>\n<p>\u7814\u7a76\u4e0e\u5f00\u53d1\uff1a\u7814\u7a76\u4eba\u5458\u53ef\u4ee5\u63a2\u7d22\u548c\u5206\u6790\u6570\u636e\u96c6\u3001\u8fdb\u884c\u5b9e\u9a8c\u5e76\u4e0e\u540c\u4e8b\u5206\u4eab\u53d1\u73b0\u3002<\/p>\n<\/li>\n<\/ol>\n<h3>\u95ee\u9898\u53ca\u89e3\u51b3\u65b9\u6848\uff1a<\/h3>\n<ol>\n<li>\n<p><strong>\u8d44\u6e90\u7ba1\u7406\uff1a<\/strong> \u5728\u8ba1\u7b97\u8d44\u6e90\u6709\u9650\u7684\u60c5\u51b5\u4e0b\uff0c\u7528\u6237\u53ef\u80fd\u4f1a\u9047\u5230\u6027\u80fd\u95ee\u9898\u3002\u7ba1\u7406\u5458\u53ef\u4ee5\u5b9e\u65bd\u8d44\u6e90\u9650\u5236\u5e76\u76d1\u63a7\u4f7f\u7528\u60c5\u51b5\u4ee5\u786e\u4fdd\u516c\u5e73\u5206\u914d\u3002<\/p>\n<\/li>\n<li>\n<p><strong>\u8eab\u4efd\u9a8c\u8bc1\u95ee\u9898\uff1a<\/strong> \u8eab\u4efd\u9a8c\u8bc1\u7cfb\u7edf\u4e2d\u7684\u9519\u8bef\u914d\u7f6e\u53ef\u80fd\u4f1a\u5bfc\u81f4\u672a\u7ecf\u6388\u6743\u7684\u8bbf\u95ee\u3002\u5b9a\u671f\u5ba1\u6838\u548c\u4f7f\u7528\u5b89\u5168\u8eab\u4efd\u9a8c\u8bc1\u65b9\u6cd5\u53ef\u4ee5\u9632\u6b62\u6b64\u7c7b\u95ee\u9898\u3002<\/p>\n<\/li>\n<li>\n<p><strong>\u53ef\u6269\u5c55\u6027\u95ee\u9898\uff1a<\/strong> \u968f\u7740\u7528\u6237\u6570\u91cf\u7684\u589e\u52a0\uff0cJupyterHub \u57fa\u7840\u8bbe\u65bd\u9700\u8981\u76f8\u5e94\u6269\u5c55\u3002\u91c7\u7528\u5bb9\u5668\u5316\u6216\u57fa\u4e8e\u4e91\u7684\u89e3\u51b3\u65b9\u6848\u53ef\u4ee5\u786e\u4fdd\u65e0\u7f1d\u53ef\u6269\u5c55\u6027\u3002<\/p>\n<\/li>\n<\/ol>\n<h2>\u4e3b\u8981\u7279\u70b9\u53ca\u4e0e\u540c\u7c7b\u672f\u8bed\u7684\u5176\u4ed6\u6bd4\u8f83<\/h2>\n<table>\n<thead>\n<tr>\n<th><strong>\u5b66\u671f<\/strong><\/th>\n<th><strong>\u63cf\u8ff0<\/strong><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>JupyterHub<\/td>\n<td>\u4e00\u4e2a\u57fa\u4e8e Web \u7684\u591a\u7528\u6237\u5e73\u53f0\uff0c\u7528\u4e8e\u6258\u7ba1 Jupyter \u7b14\u8bb0\u672c\uff0c\u4ece\u800c\u5b9e\u73b0\u534f\u4f5c\u548c\u4ea4\u4e92\u3002<\/td>\n<\/tr>\n<tr>\n<td>\u6731\u76ae\u7279<\/td>\n<td>\u9879\u76ee\u540d\u79f0\u548c\u4e00\u4e2a\u7ecf\u5e38\u4e0e JupyterHub \u4e92\u6362\u4f7f\u7528\u7684\u672f\u8bed\uff0c\u6307\u7684\u662f\u7b14\u8bb0\u672c\u7cfb\u7edf\u3002<\/td>\n<\/tr>\n<tr>\n<td>Python<\/td>\n<td>Jupyter\u7684\u524d\u8eab\uff0c\u6700\u521d\u4e13\u6ce8\u4e8e\u4e0ePython\u7684\u4ea4\u4e92\u8ba1\u7b97\u3002<\/td>\n<\/tr>\n<tr>\n<td>Jupyter\u5b9e\u9a8c\u5ba4<\/td>\n<td>\u4ea4\u4e92\u5f0f\u5f00\u53d1\u73af\u5883\uff0c\u63d0\u4f9b\u6bd4 Jupyter Notebook \u66f4\u5e7f\u6cdb\u7684\u754c\u9762\u3002<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>\u4e0e JupyterHub \u76f8\u5173\u7684\u672a\u6765\u524d\u666f\u548c\u6280\u672f<\/h2>\n<p>JupyterHub \u4e0d\u65ad\u53d1\u5c55\u4ee5\u6ee1\u8db3\u6570\u636e\u79d1\u5b66\u793e\u533a\u548c\u65b0\u5174\u6280\u672f\u7684\u9700\u6c42\u3002\u4e00\u4e9b\u6f5c\u5728\u7684\u672a\u6765\u53d1\u5c55\u5305\u62ec\uff1a<\/p>\n<ol>\n<li>\n<p><strong>\u589e\u5f3a\u7684\u534f\u4f5c\u529f\u80fd\uff1a<\/strong> \u8fdb\u4e00\u6b65\u6539\u8fdb\u4ee5\u5b9e\u73b0\u540c\u4e00\u7b14\u8bb0\u672c\u7535\u8111\u4e0a\u7684\u7528\u6237\u4e4b\u95f4\u7684\u5b9e\u65f6\u534f\u4f5c\u3002<\/p>\n<\/li>\n<li>\n<p><strong>\u63d0\u9ad8\u96c6\u6210\u5ea6\uff1a<\/strong> \u4e0e\u65b0\u5174\u6570\u636e\u79d1\u5b66\u5de5\u5177\u548c\u5e93\u66f4\u7d27\u5bc6\u5730\u96c6\u6210\uff0c\u4f7f\u5176\u6210\u4e3a\u6570\u636e\u5206\u6790\u7684\u4e2d\u5fc3\u5e73\u53f0\u3002<\/p>\n<\/li>\n<li>\n<p><strong>\u4eba\u5de5\u667a\u80fd\u548c\u673a\u5668\u5b66\u4e60\uff1a<\/strong> \u7ed3\u5408\u4eba\u5de5\u667a\u80fd\u80fd\u529b\uff0c\u534f\u52a9\u6570\u636e\u79d1\u5b66\u5bb6\u8fdb\u884c\u6570\u636e\u5206\u6790\u548c\u6a21\u578b\u6784\u5efa\u3002<\/p>\n<\/li>\n<li>\n<p><strong>\u6570\u636e\u53ef\u89c6\u5316\u7684\u8fdb\u6b65\uff1a<\/strong> \u589e\u5f3a\u7684\u4ea4\u4e92\u5f0f\u53ef\u89c6\u5316\u5de5\u5177\u53ef\u6539\u5584\u6570\u636e\u63a2\u7d22\u548c\u7ed3\u679c\u4ea4\u6d41\u3002<\/p>\n<\/li>\n<\/ol>\n<h2>\u5982\u4f55\u4f7f\u7528\u4ee3\u7406\u670d\u52a1\u5668\u6216\u5982\u4f55\u5c06\u4ee3\u7406\u670d\u52a1\u5668\u4e0e JupyterHub \u5173\u8054<\/h2>\n<p>\u4ee3\u7406\u670d\u52a1\u5668\u5728 JupyterHub \u7684\u90e8\u7f72\u4e2d\u8d77\u7740\u81f3\u5173\u91cd\u8981\u7684\u4f5c\u7528\u3002\u5b83\u4eec\u5904\u7406\u6765\u81ea\u7528\u6237\u7684\u4f20\u5165\u8bf7\u6c42\u5e76\u5c06\u5176\u8def\u7531\u5230\u9002\u5f53\u7684 Jupyter \u7b14\u8bb0\u672c\u670d\u52a1\u5668\u5b9e\u4f8b\u3002\u4ee3\u7406\u670d\u52a1\u5668\u53ef\u5b9e\u73b0\u8d1f\u8f7d\u5e73\u8861\u3001\u63d0\u9ad8\u5b89\u5168\u6027\u5e76\u4e3a\u7528\u6237\u8bbf\u95ee\u5176\u4e2a\u4eba\u7b14\u8bb0\u672c\u63d0\u4f9b\u5355\u4e00\u5165\u53e3\u70b9\u3002<\/p>\n<p>OneProxy \u4f5c\u4e3a\u53ef\u9760\u7684\u4ee3\u7406\u670d\u52a1\u5668\u63d0\u4f9b\u5546\uff0c\u5bf9\u4e8e\u5bfb\u6c42\u5728\u5176\u57fa\u7840\u8bbe\u65bd\u4e2d\u90e8\u7f72 JupyterHub \u7684\u7ec4\u7ec7\u6765\u8bf4\u53ef\u4ee5\u6210\u4e3a\u6709\u4ef7\u503c\u7684\u5408\u4f5c\u4f19\u4f34\u3002\u501f\u52a9 OneProxy \u5f3a\u5927\u7684\u4ee3\u7406\u89e3\u51b3\u65b9\u6848\uff0c\u7528\u6237\u53ef\u4ee5\u65e0\u7f1d\u3001\u5b89\u5168\u5730\u8bbf\u95ee\u5176 JupyterHub \u73af\u5883\u3002<\/p>\n<h2>\u76f8\u5173\u94fe\u63a5<\/h2>\n<p>\u6709\u5173 JupyterHub \u7684\u66f4\u591a\u4fe1\u606f\uff0c\u8bf7\u8003\u8651\u63a2\u7d22\u4ee5\u4e0b\u8d44\u6e90\uff1a<\/p>\n<ol>\n<li><a href=\"https:\/\/jupyter.org\/\" target=\"_new\" rel=\"noopener nofollow\">Jupyter \u9879\u76ee\u7f51\u7ad9<\/a><\/li>\n<li><a href=\"https:\/\/jupyterhub.readthedocs.io\/\" target=\"_new\" rel=\"noopener nofollow\">JupyterHub \u6587\u6863<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/jupyterhub\/jupyterhub\" target=\"_new\" rel=\"noopener nofollow\">JupyterHub GitHub \u5b58\u50a8\u5e93<\/a><\/li>\n<\/ol>","protected":false},"featured_media":468723,"menu_order":0,"template":"","meta":{"_acf_changed":false,"content-type":"","inline_featured_image":false,"footnotes":""},"class_list":["post-477758","wiki","type-wiki","status-publish","has-post-thumbnail","hentry"],"acf":{"faq_title":"Frequently Asked Questions about <mark>JupyterHub: Empowering Collaborative Data Science and Interactive Computing<\/mark>","faq_items":[{"question":"What is JupyterHub?","answer":"<p>JupyterHub is an open-source web application that allows multiple users to access Jupyter notebooks and collaborate in real-time. It is designed to provide a scalable solution for deploying Jupyter notebook servers in multi-user environments, making it an essential tool for data scientists, researchers, and educators.<\/p>"},{"question":"How did JupyterHub originate?","answer":"<p>JupyterHub is an evolution of Project Jupyter, which was initiated in 2014 by Fernando P\u00e9rez and Brian Granger. It started as IPython Notebook, which later became Jupyter Notebook. The need for collaborative multi-user access led to the development of JupyterHub.<\/p>"},{"question":"What are the key features of JupyterHub?","answer":"<p>JupyterHub offers various key features, including:<\/p><ul><li>User Authentication: Secure access through different authentication methods.<\/li><li>Resource Management: Efficient allocation of computational resources for users.<\/li><li>Spawner System: Individual notebook instances for each user, ensuring isolation.<\/li><li>Concurrent Access: Multiple users can access notebooks simultaneously, promoting collaboration.<\/li><\/ul>"},{"question":"What types of JupyterHub deployment are available?","answer":"<p>JupyterHub can be deployed in various ways, including:<\/p><ul><li>Local Installation: On a local server or machine for small teams or personal use.<\/li><li>Cloud-based Deployment: Hosted on cloud platforms like AWS, Azure, or Google Cloud for scalability.<\/li><li>Containerized Approach: Using containerization technologies like Docker for simplified deployment.<\/li><li>Cluster Deployment: Integrated with cluster computing frameworks like Kubernetes for scalability.<\/li><\/ul>"},{"question":"How can JupyterHub be used?","answer":"<p>JupyterHub finds applications in various scenarios:<\/p><ul><li>Collaborative Data Science: Teams can work together in real-time on projects.<\/li><li>Education: Interactive and engaging lessons for students in data science, mathematics, etc.<\/li><li>Research and Development: Researchers can analyze data, conduct experiments, and share findings.<\/li><\/ul>"},{"question":"What are the potential issues with using JupyterHub, and how can they be addressed?","answer":"<p>Common issues with JupyterHub include:<\/p><ul><li>Resource Management: Implementing resource limits and monitoring usage to prevent performance issues.<\/li><li>Authentication Issues: Regular audits and using secure authentication methods to ensure authorized access.<\/li><li>Scalability Concerns: Employing containerization or cloud-based solutions to scale the infrastructure.<\/li><\/ul>"},{"question":"How does JupyterHub compare to other Jupyter-related terms?","answer":"<p>JupyterHub is a multi-user platform for hosting Jupyter notebooks, while Jupyter is the project name and often used interchangeably with JupyterHub. IPython was the predecessor, focusing on interactive computing with Python, and JupyterLab is an interactive development environment.<\/p>"},{"question":"What are the future perspectives for JupyterHub?","answer":"<p>JupyterHub is expected to witness advancements such as:<\/p><ul><li>Enhanced Collaboration Features: Improved real-time collaboration between users.<\/li><li>Increased Integration: Closer integration with emerging data science tools and libraries.<\/li><li>AI and Machine Learning: Incorporating AI capabilities to assist data scientists in analysis and modeling.<\/li><li>Data Visualization Advancements: Enhanced interactive visualization tools for better data exploration.<\/li><\/ul>"},{"question":"How can proxy servers be used with JupyterHub?","answer":"<p>Proxy servers play a crucial role in JupyterHub deployment, handling incoming requests and improving security. OneProxy's robust proxy solutions enhance the JupyterHub experience, providing seamless and secure access to individual notebooks.<\/p>"}]},"_links":{"self":[{"href":"https:\/\/oneproxy.pro\/cn\/wp-json\/wp\/v2\/wiki\/477758","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oneproxy.pro\/cn\/wp-json\/wp\/v2\/wiki"}],"about":[{"href":"https:\/\/oneproxy.pro\/cn\/wp-json\/wp\/v2\/types\/wiki"}],"version-history":[{"count":0,"href":"https:\/\/oneproxy.pro\/cn\/wp-json\/wp\/v2\/wiki\/477758\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/oneproxy.pro\/cn\/wp-json\/wp\/v2\/media\/468723"}],"wp:attachment":[{"href":"https:\/\/oneproxy.pro\/cn\/wp-json\/wp\/v2\/media?parent=477758"}],"curies":[{"name":"\u53ef\u6e7f\u6027\u7c89\u5242","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}