# 配置 原文链接 : [http://zeppelin.apache.org/docs/0.7.2/install/configuration.html](http://zeppelin.apache.org/docs/0.7.2/install/configuration.html) 译文链接 : [http://www.apache.wiki/pages/viewpage.action?pageId=10030540](http://www.apache.wiki/pages/viewpage.action?pageId=10030540) 贡献者 : [片刻](/display/~jiangzhonglian) [ApacheCN](/display/~apachecn) [Apache中文网](/display/~apachechina) ## Zeppelin Properties 有两个位置可以配置Apache Zeppelin。 * **环境变量**可以被定义`conf/zeppelin-env.sh`(`conf\zeppelin-env.cmd`适用于Windows)。 * **Java属性**可以定义在`conf/zeppelin-site.xml`。 如果两者都被定义,则**环境变量**将被优先考虑。 | zeppelin-env.sh | zeppelin-site.xml | 默认值 | 描述 | | --- | --- | --- | --- | | ZEPPELIN_PORT | zeppelin.server.port | 8080 | Zeppelin服务器端口注意:请确保您没有使用与[Zeppelin Web应用程序开发端口](https://zeppelin.apache.org/contribution/webapplication.html#dev-mode)相同的[端口](https://zeppelin.apache.org/contribution/webapplication.html#dev-mode)(默认值:9000)。 | | ZEPPELIN_SSL_PORT | zeppelin.server.ssl.port | 8443 | Zeppelin Server ssl端口(当ssl环境/属性设置为true时使用) | | ZEPPELIN_MEM | N/A | -Xmx1024m -XX:MaxPermSize=512m | JVM mem 选项 | | ZEPPELIN_INTP_MEM | N/A | ZEPPELIN_MEM | 用于解释程序的JVM mem选项 | | ZEPPELIN_JAVA_OPTS | N/A |   | JVM 选项 | | ZEPPELIN_ALLOWED_ORIGINS | zeppelin.server.allowed.origins | * | 启用一种方式来指定REST和Websockets的允许起源的“,”分隔列表。例如: [http://localhost:8080](http://localhost:8080) | | N/A | zeppelin.anonymous.allowed | true | 默认情况下允许匿名(anonymous)用户。 | | ZEPPELIN_SERVER_CONTEXT_PATH | zeppelin.server.context.path | / | Web应用程序的上下文路径 | | ZEPPELIN_SSL | zeppelin.ssl | false |   | | ZEPPELIN_SSL_CLIENT_AUTH | zeppelin.ssl.client.auth | false |   | | ZEPPELIN_SSL_KEYSTORE_PATH | zeppelin.ssl.keystore.path | keystore |   | | ZEPPELIN_SSL_KEYSTORE_TYPE | zeppelin.ssl.keystore.type | JKS |   | | ZEPPELIN_SSL_KEYSTORE_PASSWORD | zeppelin.ssl.keystore.password |   |   | | ZEPPELIN_SSL_KEY_MANAGER_PASSWORD | zeppelin.ssl.key.manager.password |   |   | | ZEPPELIN_SSL_TRUSTSTORE_PATH | zeppelin.ssl.truststore.path |   |   | | ZEPPELIN_SSL_TRUSTSTORE_TYPE | zeppelin.ssl.truststore.type |   |   | | ZEPPELIN_SSL_TRUSTSTORE_PASSWORD | zeppelin.ssl.truststore.password |   |   | | ZEPPELIN_NOTEBOOK_HOMESCREEN | zeppelin.notebook.homescreen |   | 显示Apache Zeppelin主屏幕上的注释ID,例如: 2A94M5J1Z | | ZEPPELIN_NOTEBOOK_HOMESCREEN_HIDE | zeppelin.notebook.homescreen.hide | false | 隐藏在`ZEPPELIN_NOTEBOOK_HOMESCREEN`Apache Zeppelin主屏幕上设置的音符ID 。有关更多信息,请参阅[自定义您的Zeppelin主页](http://zeppelin.apache.org/docs/0.7.1/manual/notebookashomepage.html)。 | | ZEPPELIN_WAR_TEMPDIR | zeppelin.war.tempdir | webapps | jetty临时目录的位置 | | ZEPPELIN_NOTEBOOK_DIR | zeppelin.notebook.dir | notebook | 保存笔记本电脑目录的根目录 | | ZEPPELIN_NOTEBOOK_S3_BUCKET | zeppelin.notebook.s3.bucket | zeppelin | 将存储笔记本文件的S3 Bucket | | ZEPPELIN_NOTEBOOK_S3_USER | zeppelin.notebook.s3.user | user | S3桶的用户名,例如: `bucket/user/notebook/2A94M5J1Z/note.json` | | ZEPPELIN_NOTEBOOK_S3_ENDPOINT | zeppelin.notebook.s3.endpoint | s3.amazonaws.com | 桶的端点 | | ZEPPELIN_NOTEBOOK_S3_KMS_KEY_ID | zeppelin.notebook.s3.kmsKeyID |   | 用于S3中加密数据的AWS KMS密钥ID(可选) | | ZEPPELIN_NOTEBOOK_S3_EMP | zeppelin.notebook.s3.encryptionMaterialsProvider |   | 用于S3中加密数据的自定义S3加密资料提供者实现的类名称(可选) | | ZEPPELIN_NOTEBOOK_AZURE_CONNECTION_STRING | zeppelin.notebook.azure.connectionString |   | Azure存储帐户连接字符串例如:`DefaultEndpointsProtocol=https; AccountName=<accountName>; AccountKey=<accountKey>` | | ZEPPELIN_NOTEBOOK_AZURE_SHARE | zeppelin.notebook.azure.share | zeppelin | Azure共享笔记本文件将被保存 | | ZEPPELIN_NOTEBOOK_AZURE_USER | zeppelin.notebook.azure.user | user | Optional user name of an Azure file sharee.g. `share/user/notebook/2A94M5J1Z/note.json` | | ZEPPELIN_NOTEBOOK_STORAGE | zeppelin.notebook.storage | org.apache.zeppelin.notebook.repo.GitNotebookRepo | 逗号分隔的笔记本存储位置列表 | | ZEPPELIN_NOTEBOOK_ONE_WAY_SYNC | zeppelin.notebook.one.way.sync | false | 如果有多个笔记本电脑存储位置,我们应该把第一个视为真理的唯一来源吗? | | ZEPPELIN_NOTEBOOK_PUBLIC | zeppelin.notebook.public | true | `owners`创建/导入默认情况下,将笔记本设为公开(仅限设置)。如果设置为`false`将添加`user`到`readers`和`writers`为好,使其成为私人和无形的给其他用户,除非授予权限。 | | ZEPPELIN_INTERPRETERS | zeppelin.interpreters | org.apache.zeppelin.spark.SparkInterpreter,org.apache.zeppelin.spark.PySparkInterpreter,org.apache.zeppelin.spark.SparkSqlInterpreter,org.apache.zeppelin.spark.DepInterpreter,org.apache.zeppelin.markdown.Markdown,org.apache.zeppelin.shell.ShellInterpreter,... | 逗号分隔的解释器配置[Class]  注意:此属性自Zeppelin-0.6.0起已弃用,Zeppelin-0.7.0将不受支持。 | | ZEPPELIN_INTERPRETER_DIR | zeppelin.interpreter.dir | interpreter | Interpreter 目录 | | ZEPPELIN_INTERPRETER_DEP_MVNREPO | zeppelin.interpreter.dep.mvnRepo | http://repo1.maven.org/maven2/ | 解释器附加依赖加载的远程主体存储库 | | ZEPPELIN_DEP_LOCALREPO | zeppelin.dep.localrepo | local-repo | 依赖加载器的本地存储库。 ex)npm的可视化模块。 | | ZEPPELIN_HELIUM_NPM_REGISTRY | zeppelin.helium.npm.registry | http://registry.npmjs.org/ | Helium依赖加载器的远程Npm注册表 | | ZEPPELIN_WEBSOCKET_MAX_TEXT_MESSAGE_SIZE | zeppelin.websocket.max.text.message.size | 1024000 | 可以由websocket接收的最大文本消息的大小(字符)。 | ## SSL配置 启用SSL需要进行一些配置更改。首先,您需要创建证书,然后更新必要的配置,以启用服务器端SSL和/或客户端证书身份验证。 ### 创建和配置证书 信息如何生成证书和密钥库可以在[这里](https://wiki.eclipse.org/Jetty/Howto/Configure_SSL)找到。 这个[StackOverflow帖子](http://stackoverflow.com/questions/4008837/configure-ssl-on-jetty)的顶部答案中可以找到一个精简的例子。 密钥库在服务器端保存私钥和证书。trustore拥有可信赖的客户端证书。请确保在以下密码字段中正确配置了这两个存储区的路径和密码。他们可以使用Jetty密码工具进行混淆。之后,Maven引用了所有依赖关系构建Zeppelin,其中一个Jetty jar包含了密码工具。使用适当的版本,用户和密码从Zeppelin home构建目录调用此命令。 ``` java -cp ./zeppelin-server/target/lib/jetty-all-server-.jar org.eclipse.jetty.util.security.Password ``` 如果您使用自签名,由不受信任的CA签名的证书,或者启用客户端身份验证,则客户端必须具有浏览器才能为正常的HTTPS端口和WebSocket端口创建异常。这可以通过尝试在浏览器中建立到两个端口的HTTPS连接(例如,如果端口是443和8443,然后访问[https://127.0.0.1:443和https://127.0.0.1:8443)。](https://127.0.0.1:443和https:)如果服务器证书由受信任的CA签名并且客户端验证被禁用,则可以跳过此步骤。 ### 配置服务器端SSL 需要更新以下属性`zeppelin-site.xml`才能启用服务器端SSL。 ``` zeppelin.server.ssl.port 8443 Server ssl port. (used when ssl property is set to true) zeppelin.ssl true Should SSL be used by the servers? zeppelin.ssl.keystore.path keystore Path to keystore relative to Zeppelin configuration directory zeppelin.ssl.keystore.type JKS The format of the given keystore (e.g. JKS or PKCS12) zeppelin.ssl.keystore.password change me Keystore password. Can be obfuscated by the Jetty Password tool zeppelin.ssl.key.manager.password change me Key Manager password. Defaults to keystore password. Can be obfuscated. ``` ### 启用客户端证书认证 `zeppelin-site.xml`为了启用客户端证书认证,需要更新以下属性。 ``` zeppelin.server.ssl.port 8443 Server ssl port. (used when ssl property is set to true) zeppelin.ssl.client.auth true Should client authentication be used for SSL connections? zeppelin.ssl.truststore.path truststore Path to truststore relative to Zeppelin configuration directory. Defaults to the keystore path zeppelin.ssl.truststore.type JKS The format of the given truststore (e.g. JKS or PKCS12). Defaults to the same type as the keystore type zeppelin.ssl.truststore.password change me Truststore password. Can be obfuscated by the Jetty Password tool. Defaults to the keystore password ``` ### 使用Jetty密码工具模糊密码 安全最佳做法建议不要使用纯文本密码,Jetty提供了一个密码工具来帮助模糊用于访问KeyStore和TrustStore的密码。 密码工具文档可以在[这里](http://www.eclipse.org/jetty/documentation/current/configuring-security-secure-passwords.html)找到。 使用该工具后: ``` java -cp $ZEPPELIN_HOME/zeppelin-server/target/lib/jetty-util-9.2.15.v20160210.jar \ org.eclipse.jetty.util.security.Password \ password 2016-12-15 10:46:47.931:INFO::main: Logging initialized @101ms password OBF:1v2j1uum1xtv1zej1zer1xtn1uvk1v1v MD5:5f4dcc3b5aa765d61d8327deb882cf99  ``` 使用模糊密码更新您的配置: ``` zeppelin.ssl.keystore.password OBF:1v2j1uum1xtv1zej1zer1xtn1uvk1v1v Keystore password. Can be obfuscated by the Jetty Password tool   ``` **注意:**更新这些配置后,需要重新启动Zeppelin服务器。