背景
现在在公司大数据平台部从事大数据基础组件开发工作,所需要涉及的知识面非常广,其中人工智能也是后续大数据基础平台建设的重要部分,于是就花了几千块报了个人工智能的课程。这个课程有一些前置基础课程,python就是其基础课程的一门。开始学习python,教学环境用的anaconda里面的jupyter notebook,为了使自己的学习和教程有一个相同的环境,也安装了一下anaconda,方便以后学习,同时记录一下anaconda的安装过程,好记性不如烂笔头么,何况在下记忆力本来就不怎么好。发布出来,以供有需要的同学参考一下。
anaconda介绍
Anaconda是一个开源的包、环境管理器,可以用于在同一个机器上安装不同版本的软件包及其依赖,并能够在不同的环境之间切换。
Anaconda包括Conda、Python以及一大堆安装好的工具包,比如:numpy、pandas等。
Miniconda包括Conda、Python。
实验环境
Windows下安装的说明网上已经有很多了,现在记录一下Linux的安装配置过程。
- CentOS-7-x86_64-Minimal-1708
安装配置
服务器上安装部署软件一般都不直接用root来启动,所以我们建立一个anaconda账号来运行anaconda程序。
[root@localhost ~]# groupadd anaconda
[root@localhost ~]# useradd -g anaconda anaconda
[root@localhost ~]# passwd anaconda
安装
下载安装包
wget https://repo.anaconda.com/archive/Anaconda3-2018.12-Linux-x86_64.sh
安装
执行命令bash Anaconda3-2018.12-Linux-x86_64.sh
安装,安装过程中有软件协议条款需要确认,直接回车,在要求输入yes的地方,输入yes回车。
安装过程中可能出现一些问题,问题解决后,需要执行bash Anaconda3-2018.12-Linux-x86_64.sh -u
进行覆盖安装,注意后面那个**-u**。
最后有提示安装VSCode,这个在Linux环境下其实是不需要的,输no跳过。
anaconda is not in the sudoers file. This incident will be reported.
Unable to install VSCode!
Check /home/anaconda/anaconda3/vscode_inst.py.log for more info
Do you wish to retry? [yes|no]
[no] >>> no
刷新环境变量
安装完成后,关闭shell窗口重新进入使环境变量生效,或者直接执行下面命令刷新环境变量。
source ~/.bashrc
验证
执行下面命令,可以看到已经安装的包。
conda list
执行结果
[anaconda@localhost ~]$ conda list
# packages in environment at /home/anaconda/anaconda3:
#
# Name Version Build Channel
_ipyw_jlab_nb_ext_conf 0.1.0 py37_0
alabaster 0.7.12 py37_0
anaconda 2018.12 py37_0
anaconda-client 1.7.2 py37_0
anaconda-navigator 1.9.6 py37_0
anaconda-project 0.8.2 py37_0
......
配置jupyter notebook远程访问
生成配置文件
jupyter notebook --generate-config
执行结果
[anaconda@localhost ~]$ jupyter notebook --generate-config
Writing default config to: /home/anaconda/.jupyter/jupyter_notebook_config.py
生成密码
[anaconda@localhost ~]$ ipython
Python 3.7.1 (default, Dec 14 2018, 19:28:38)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.2.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: from notebook.auth import passwd
In [2]: passwd()
Enter password: #输入密码,后续登录时需要
Verify password:
Out[2]: 'sha1:861412c74abe:edee4644418c13a47131e15bad270fefdd31143d'
修改配置文件
修改刚刚生成的jupyter notebook的配置文件/home/anaconda/.jupyter/jupyter_notebook_config.py
,使jupyter notebook能够远程访问。
修改的配置项如下:
c.NotebookApp.ip='*' #设置访问notebook的ip,*表示所有IP,这里设置ip为都可访问
c.NotebookApp.notebook_dir = '/home/anaconda/notebook'#共享目录
c.NotebookApp.password = u'sha1:5df252f58b7f:bf65d53125bb36c085162b3780377f66d73972d1' #填写刚刚生成的密文
c.NotebookApp.open_browser = False # 禁止notebook启动时自动打开浏览器(在linux服务器一般都是ssh命令行访问,没有图形界面的。所以,启动也没啥用)
c.NotebookApp.port =8899 #指定访问的端口,默认是8888
c.NotebookApp.allow_remote_access = True
c.NotebookApp.allow_origin = ' '将' '改为‘*’
启动jupyter notebook
前台运行
jupyter notebook
或者
jupyter-notebook
后台运行
后台运行,并把日志输入到~/logs/jupyter.log
日志文件中
nohup jupyter-notebook>/home/anaconda/logs/jupyter.log 2>&1 &
验证
在浏览器中输入jupyter notebook地址,比如我的是http://192.168.86.163:8888
就进入了jupyter notebook的登录页面,输入上面设置的密码,就进入了jupyter notebook的主页了,新建一个python3的notebook,开始写代码吧。
nginx反向代理配置
开放到公网很多时候是通过域名访问,用nginx做反向代理服务,jupyter notebook由于采用了websock技术,所以在配置nginx的时候记得加下面3项配置
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
否则通过域名访问的时候就会报错了。
配置好后就可以直接通过域名访问了。
/etc/nginx/conf.d/jupyter.conf
upstream jupyter {
server 127.0.0.1:8898;
}
server {
listen 80;
server_name jupyter.itclj.com;
location ~*^.+$ {
proxy_pass http://jupyter;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
遇到的问题&解决方案
问题一
./Anaconda3-2018.12-Linux-x86_64.sh: line 353: bunzip2: command not found
问题原因
anaconda安装包需要zip压缩工具,系统里面没有装。
解决方案
由于是安装基础工具,需要在root账号下执行。
yum install -y bzip2
问题二
PermissionError: [Errno 13] Permission denied: '/run/user/0/jupyter'
问题原因
原来登录系统用的root账号,然后切换到anconda账号下的,切换的时候没有带 - 参数,注意是个短横岗。导致使用的环境变量还是root账号的。
解决方案
用su切换到anaconda执行账号,su后面加-
su - anaconda
问题三
浏览器远程访问仍然访问不通。
问题原因
防火墙拦截所访问端口没有开放。
解决方案
防火墙开放8888端口。
具体参看:https://www.cnblogs.com/moxiaoan/p/5683743.html
firewall-cmd --zone=public --add-port=8888/tcp --permanent
firewall-cmd --reload
firewall-cmd --zone=public --query-port=8888/tcp
参考文章
- 官网安装说明文档:https://docs.anaconda.com/anaconda/install/linux-power8/
- 远程访问配置:https://blog.csdn.net/levy_cui/article/details/84942179
- CentOS7使用firewalld打开关闭防火墙与端口:https://www.cnblogs.com/moxiaoan/p/5683743.html