快速搭建基于HTTPS的本地开发环境

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速搭建基于HTTPS的本地开发环境相关的知识,希望对你有一定的参考价值。

参考技术A

为什么本地开发要使用HTTPS?

因为有很多Web API必须在HTTPS环境下才可以使用。比如,Clipboard API and events(https://www.w3.org/TR/clipboard-apis)中的 navigator.clipboard 对象是通过扩展 Navigator 接口定义的:

在此,partial的意思就是扩展Navigator接口,给它增加一个Clipboard类型的只读成员属性clipboard。[SecureContext, SameObject]中的两个关键字是“扩展属性”(extended attribute),在这里修饰接口成员clipboard。SecureContext表示navigator只能在“安全上下文”中暴露clipboard属性,SameObject表示每次访问navigator.clipboard必须都返回相同的值。(参见:https://heycam.github.io/webidl/#SecureContext和https://heycam.github.io/webidl/#SameObject。)

关于“安全上下文”,W3C的Secure Contexts文档(https://w3c.github.io/webappsec-secure-contexts/)中有详细解释。根据MDN,全站HTTPS和通过http://localhost交付的网页是安全的。可以通过window.isSecureContext属性来检测当前上下文是否安全。

另外还有一个重要原因,就是有时候HTTP的本地请求可能会被HTTPS服务器拒绝。

无论如何,我们在开发实践中都有可能碰到将本地Web服务HTTPS化的需求。这时候,我们可以创建自己私钥并签名一个根证书,并在开发环境中配置安装和信任自己的根证书。然后再通过这个根证书和私钥签发相应域名的SSL证书。

好吧,开始干吧。

首先生成一个RSA-2048加密的私钥,保存为localCA.key。生成过程中,会提示输入密码(pass phrase),以后在使用生成的私钥签发证书时都要输入这个密码。

接下来用这个私钥生成一个根SSL证书,保存为localCA.pem。有效期为1825天(5年)。

在此期间,会提示输入:

打开macOS中的“钥匙串访问”应用:

1、“文件 > 导入项目”,选择localCA.pem,打开(需要输入密码)

2、双击导入的证书,在“信任”中选择“始终信任”

3、退出当前窗口(需要输入密码),“此证书已标记为受所有用户信任”

首先,创建域名SSL证书的私钥,“ext”的意思在这里表示“泛域名”,可以随意命名

然后,用这个密钥创建一个CSR(Certificate Signing Request,证书签名请求)文件

在创建证书之前,还要创建一个配置文件,将其命名为ext.yourdomain.com.ext,包含如下内容:

最后,为*.yourdomain.com域名签发SSL证书

把生成的证书和私钥文件复制到相应目录

假设使用Webpack的devServer,配置如下:

配置HOST文件:

重启服务:

再换一个子域名:

参考资料

快速搭建你的Spark开发环境

一,搭建本地pyspark单机练习环境

以下过程本地单机版pyspark练习编程环境的配置方法。

注意:仅配置练习环境无需安装hadoop,无需安装scala.

1,安装Java8

注意避免安装其它版本的jdk否则可能会有不兼容spark的情况。注意设置JAVA_HOME,并添加它到默认路径PATH中

WINDOWS下安装jdk8详细教程可以参考:

https://www.cnblogs.com/heqiyoujing/p/9502726.html

安装成功后,在命令行中输入 java -version,可以看到类似如下的结果。

2,下载解压spark

spark官网下载: http://spark.apache.org/downloads.html

百度云盘链接: https://pan.baidu.com/s/1mUMavclShgvigjaKwoSF_A  密码:fixh

下载后解压放入到一个常用软件的安装路径,如:

/Users/liangyun/ProgramFiles/spark-3.0.1-bin-hadoop3.2

对于Linux用户,和mac用户,建议像如下方式在~/.bashrc中设置环境变量,以便可以启动spark-submit和spark-shell。

windows用户可以忽略以下设置。


export PYTHONPATH=$/Users/liangyun/anaconda3/bin/python
export PATH="/Users/liangyun/anaconda3/bin:${PATH}"

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home
export SPARK_HOME="/Users/liangyun/ProgramFiles/spark-3.0.1-bin-hadoop3.2"

export PYSPARK_PYTHON=$PYTHONPATH
export PYSPARK_DRIVER_PYTHON=$PYTHONPATH
export PYSPARK_DRIVER_PYTHON_OPTS='notebook'

3,安装findspark

安装成功后可以在jupyter中运行如下代码

import findspark

#指定spark_home为刚才的解压路径,指定python路径
spark_home = "/Users/liangyun/ProgramFiles/spark-3.0.1-bin-hadoop3.2"
python_path = "/Users/liangyun/anaconda3/bin/python"
findspark.init(spark_home,python_path)

import pyspark 
from pyspark import SparkContext, SparkConf
conf = SparkConf().setAppName("test").setMaster("local[4]")
sc = SparkContext(conf=conf)

print("spark version:",pyspark.__version__)
rdd = sc.parallelize(["hello","spark"])
print(rdd.reduce(lambda x,y:x+' '+y))

spark version: 3.0.1
hello spark

4,救命方案


如果以上过程由于java环境配置等因素没能成功安装pyspark。


可以在和鲸社区的云端notebook环境中直接学习pyspark。


和鲸社区的云端notebook环境中已经安装好了pyspark。


https://www.kesci.com/home/column/5fe6aa955e24ed00302304e0


二,运行pyspark的各种方式

pyspark主要通过以下一些方式运行。

1,通过pyspark进入pyspark单机交互式环境。

这种方式一般用来测试代码。

也可以指定jupyter或者ipython为交互环境。

2,通过spark-submit提交Spark任务到集群运行。

这种方式可以提交Python脚本或者Jar包到集群上让成百上千个机器运行任务。

这也是工业界生产中通常使用spark的方式。

3,通过zepplin notebook交互式执行。

zepplin是jupyter notebook的apache对应产品。

4, Python安装findspark和pyspark库。

可以在jupyter和其它Python环境中像调用普通库一样地调用pyspark库。

这也是本书配置pyspark练习环境的方式。

三,通过spark-submit提交任务到集群运行常见问题

以下为在集群上运行pyspark时相关的一些问题,

1,pyspark是否能够调用Scala或者Java开发的jar包?

答:只有Driver中能够调用jar包,通过Py4J进行调用,在excutors中无法调用。

2,pyspark如何在excutors中安装诸如pandas,numpy等包?

答:可以通过conda建立Python环境,然后将其压缩成zip文件上传到hdfs中,并在提交任务时指定环境。当然,最简单直接的方案是把你想要的anaconda环境打包成zip上传到集群hdfs环境中。注意,你打包的机器应当和集群的机器具有相同的linux操作系统。

3,pyspark如何添加自己编写的其它Python脚本到excutors中的PYTHONPATH中?

答:可以用py-files参数设置,可以添加.py,.egg 或者压缩成.zip的Python脚本,在excutors中可以import它们。

4,pyspark如何添加一些配置文件到各个excutors中的工作路径中?

答:可以用files参数设置,不同文件名之间以逗号分隔,在excutors中用SparkFiles.get(fileName)获取。

#提交python写的任务
spark-submit --master yarn \
--deploy-mode cluster \
--executor-memory 12G \
--driver-memory 12G \
--num-executors 100 \
--executor-cores 2 \
--conf spark.yarn.maxAppAttempts=2 \
--conf spark.default.parallelism=1600 \
--conf spark.sql.shuffle.partitions=1600 \
--conf spark.memory.offHeap.enabled=true \
--conf spark.memory.offHeap.size=2g\
--conf spark.task.maxFailures=10 \
--conf spark.stage.maxConsecutiveAttempts=10 \
--conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=./anaconda3.zip/anaconda3/bin/python #指定excutors的Python环境
--conf spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON = ./anaconda3.zip/anaconda3/bin/python  #cluster模式时候设置
--archives viewfs:///user/hadoop-xxx/yyy/anaconda3.zip #上传到hdfs的Python环境
--files  data.csv,profile.txt
--py-files  pkg.py,tqdm.py
pyspark_demo.py 



如果本书对你有所帮助,想鼓励一下作者,记得给本项目加一颗星星star⭐️,并分享给你的朋友们喔

以上是关于快速搭建基于HTTPS的本地开发环境的主要内容,如果未能解决你的问题,请参考以下文章

快速搭建你的Spark开发环境

基于 Jenkins 快速搭建持续集成环境

基于 Docker 快速搭建 Oracle 开发环境

基于Docker快速搭建Hadoop集群和Flink运行环境

基于Docker快速搭建Hadoop集群和Flink运行环境

基于 Jenkins 快速搭建持续集成环境