2018-09-20
linux
00
请注意,本文编写于 2045 天前,最后修改于 2034 天前,其中某些信息可能已经过时。

目录

1. 通过pyenv安装python
1. 安装依赖软件
2.创建python用户
3. 安装pyenv
4. 安装指定版本的python (在线)
5. 设置指定的python版本
6. 安装指定版本的python(离线)
7. python包管理器
2. 通过nvm安装nodejs
1.安装node版本控制器nvm
2. nvm安装nodejs
3. 通过docker安装nextcloud
1. 安装docker
2. 安装nextcloud
3. 使用nextcloud
4. 备份
4. 通过docker安装jupyter
1. docker安装jupyter
2. jupyter使用

本文主要介绍常用的各类开源软件的安装,持续更新。。因为经常需要搭建各类服务,安装步骤背下来是不可能的了,这辈子都不可能了。所以开个博文记录下。 目前主要涉及的软件有:python、nodejs、nextcloud、jupyter

说明:所有操作均在centos7.x版本完成,其他发行版无研究。

1. 通过pyenv安装python

1. 安装依赖软件

bash
[root@localhost ~]# yum install git install gcc make patch gdbm-devel openssl-devel sqlite-devel readline-devel zlib-devel bzip2-devel -y

2.创建python用户

bash
[root@localhost ~]# useradd python [root@localhost ~]# su python

3. 安装pyenv

bash
#安装pyenv [python@localhost ~]$ curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash #安装完成后在~/.bash_profile文件最后追加相关环境变量 export PATH="/home/python/.pyenv/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)" #刷新配置或者重新开一个终端 [python@localhost ~]$ source ~/.bash_profile #详细配置参考https://github.com/pyenv/pyenv

4. 安装指定版本的python (在线)

bash
#查看可以安装的版本 [python@localhost ~]$ pyenv install --list #查看当前环境安装了的版本 [python@localhost ~]$ pyenv versions #安装指定的版本 [python@localhost ~]$ pyenv install 3.6.3 -v #更新pyenv及其插件 [python@localhost ~]$ pyenv update

5. 设置指定的python版本

三种方式:

  1. global #:#后为指定的版本号,指定全局生效,普通用户指定就是普通用户全局生效,root用户指定就是普通用户生效。(影响范围最大)
  2. shell #:指定只在当前shell生效的权限(影响范围最小)
  3. local #:指定文件夹的权限(建议采用方式)
[python@localhost ~]$ pyenv local 3.6.3

6. 安装指定版本的python(离线)

但由于文件很大,通常下载需要很久。 如果网速不好,建议的做法是,先执行以上命令然后马上中断安装,这样就知道 pyenv 要下载的文件的链接。然后用户自己用其他更快的方式(比如wget、迅雷等等)从该链接中下载安装文件,并将安装文件移动到 ~/.pyenv/cache目录。 最后执行pyenv install命令。

7. python包管理器

pip是python的包管理器。一般国内机器使用官方源比较慢,可以使用国内的镜像。

bash
#更新pip默认源 [python@localhost ~]$ mkdir ~/.pip [python@localhost ~]$ vim ~/.pip/pip.conf [global] index-url = http://mirrors.aliyun.com/pypi/simple/ [install] trusted-host=mirrors.aliyun.com ##或者可以使用豆瓣的镜像: [global] index-url = http://pypi.douban.com/simple [install] trusted-host=pypi.douban.com

pip相关命令:

bash
#查看pip版本 [python@localhost py]$ pip -V #此处如果出现以下错误,说明需要配置环境,参考第5点。 [python@localhost ~]$ pip3 -V pyenv: pip3: command not found The `pip3` command exists in these Python versions: 3.6.3 #安装python的包 [python@localhost py]$ pip install pkgname ## 安装包的时候可以检测前面的源是否配置成功

2. 通过nvm安装nodejs

1.安装node版本控制器nvm

bash
[root@localhost ~]# wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash #详细配置可参考官网

2. nvm安装nodejs

bash
#版本查看 [root@localhost ~]# nvm -v #安装当前最新的稳定版 [root@localhost ~]# nvm install stable #安装指定版本 [root@localhost ~]# nvm install 8.9.1 #查看已经安装的版本 [root@localhost ~]# nvm ls default -> v8.2.0 #当前环境的版本 -> v8.2.0 #-> 指向的就是正在使用的版本 #切换node的版本 [root@localhost ~]# nvm use 8.9.1 Now using node v8.9.1 (npm v5.5.1) #指定系统默认的版本 [root@localhost ~]# nvm alias default 8.9.1

3. 通过docker安装nextcloud

1. 安装docker

docker是当下流行的容器技术

bash
#安装docker [root@localhost ~]# yum install -y docker #启动docker [root@localhost ~]# systemctl start docker

为了更加方便进入容器,可以在~/.bashrc文件末尾追加以下代码:

bash
#the implementation refs from https://github.com/jpetazzo/nsenter/blob/master/docker-enter function docker-enter() { #if [ -e $(dirname "$0")/nsenter ]; then #Change for centos bash running if [ -e $(dirname '$0')/nsenter ]; then # with boot2docker, nsenter is not in the PATH but it is in the same folder NSENTER=$(dirname "$0")/nsenter else # if nsenter has already been installed with path notified, here will be clarified NSENTER=$(which nsenter) #NSENTER=nsenter fi [ -z "$NSENTER" ] && echo "WARN Cannot find nsenter" && return if [ -z "$1" ]; then echo "Usage: `basename "$0"` CONTAINER [COMMAND [ARG]...]" echo "" echo "Enters the Docker CONTAINER and executes the specified COMMAND." echo "If COMMAND is not specified, runs an interactive shell in CONTAINER." else PID=$(sudo docker inspect --format "{{.State.Pid}}" "$1") if [ -z "$PID" ]; then echo "WARN Cannot find the given container" return fi shift OPTS="--target $PID --mount --uts --ipc --net --pid" if [ -z "$1" ]; then # No command given. # Use su to clear all host environment variables except for TERM, # initialize the environment variables HOME, SHELL, USER, LOGNAME, PATH, # and start a login shell. #sudo $NSENTER "$OPTS" su - root sudo $NSENTER --target $PID --mount --uts --ipc --net --pid su - root else # Use env to clear all host environment variables. sudo $NSENTER --target $PID --mount --uts --ipc --net --pid env -i $@ fi fi } ##项目开源地址:https://github.com/jpetazzo/nsenter/blob/master/docker-enter

docker-enter 'CONTAINER ID' 进入指定的容器,exit退出

2. 安装nextcloud

nextcloud是新一代私有网盘

bash
#安装nextcloud ~]# docker run -d -p 11211:80 -v nextcloud:/var/www/html registry.cn-hangzhou.aliyuncs.com/mykernel/nextcloud:v1 # -p 11211 是本地端口,需要开放机器的防火墙 # -v nextcloud 是本地的一个目录,主要是为了让存储的文件持久化 # registry.cn-hangzhou.aliyuncs.com/mykernel/nextcloud:v1 docker官方的镜像速度太慢,是我通过阿里云做的一个中转镜像

3. 使用nextcloud

访问地址:ip+11211; 进去后,根据配置设置好相关的账号密码。 下载客户端登录,就可以实现实时同步了。。 这里需要说明的是如何传文件:

  1. 通过客户端传文件 任何一个客户端传入数据,其他登录的客户端都可以自动同步过来。
  2. 在linux系统后台传文件 此处通过直接往后台传文件,在各个客户端是看不到这个文件的。 所以需要通过nextcloud自带的扩展功能实现: External storage support, 具体操作可以百度。

4. 备份

我们通过docker -v 命令将容器内的卷持久化了。这就可以对数据进行备份,从而更加确保其安全性。 先在客户端任意上传一个文件,我此处上传一个名字叫aaabbb的文件夹; 然后通过find命令在linux上查找这个文件,就可以定位这个持久卷的位置了。

bash
[root@iZpo45bh60h6bsZ /]# find / -name aaabbb /var/lib/docker/volumes/nextcloud/_data/data/mykernel/files/aaabbb

找到之后我们可以使用若干种办法将其备份,我就不一一赘述了。

4. 通过docker安装jupyter

jupyter是一个基于浏览器的python数据分析工具,使用起来非常方便,具有极强的交互方式和富文本的展示效果。能实现自动补全、自动缩进、支持shell、增加函数(%%time)等功能。

1. docker安装jupyter

a.pull镜像

bash
[root@iZpo45bh60h6bsZ /]# docker pull tensorflow/tensorflow

b.run 镜像,生成容器实例,第一次进入会执行 /run_jupyter.sh,会有 token 让你进入 localhost:8888 页面是可以输入并登录

bash
[root@iZpo45bh60h6bsZ /]# docker run -it -p 8888:8888 tensorflow/tensorflow

c. 进入容器修改jupyter的默认密码(参考前面进入容器的办法)

bash
[root@iZpo45bh60h6bsZ /] vim ~/.jupyter/jupyter_notebook_config.py # 修改里面的 password 配置,我这里注释掉了使用环境变量 PASSWORD,直接明文密码 mykernel,password()函数是个 hash函数 # sets a password if PASSWORD is set in the environment #if 'PASSWORD' in os.environ: c.NotebookApp.password = passwd("mykernel") # del os.environ['PASSWORD']

2. jupyter使用

a. windows访问 jupyter --ip=0.0.0.0 --no-browser http://:8888 此时笔记所在目录为--notebook-dir=指定的目录,或运行命令所在目录

b. 基本命令 先在页面上按下esc键 dd:删除选择的cell (cell就是看到的框) m:进入markdown编辑模式 crtl+回车:运行该框中的代码,不开启新行 alt+回车:运行该框中的代码,开启新行 数字(1-6):直接设置md的标题格式 h:查看帮助 我一般就用到这几个命令了。

本文作者:mykernel

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!