在云服务器上部署jupyter服务器环境(with conda-forge)

news2024/11/13 7:54:29

tags: Python Conda Tips Server

写在前面

最近想折腾点服务器的新花样(总是空着太可惜了), 想到前阶段配置的jupyter, 发现这不就能部署在服务端吗?还不走流量的那种(指安装包时候), 话不多说, 开整!

下面的用户名以及组都是test, 用于测试. 大家需要改成自己的用户名.

安装conda-forge

这里我选择了与mac上一样的conda管理环境(conda-forge), 因为mini-conda不支持m1(现在应该支持了), 对arm适配最好, 所以就一直用了, 并且其满足我对最小化安装的要求, 比mini-conda还要小, 而且是开源社区推动, 用着也放心.

首先拉取最新版的mini-forge, 这里如果网速比较慢可以先在本地下载好再上传到服务器, 链接如下:

wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh

然后一路安装即可, 需要注意服务器登录时候是root环境, 但是最好自己创建一个用户, 在用户目录下安装, 相对来说比较安全, 而且之后使用jupyter时候也不会出现提示root的风险等情况.

安装好后别着急用conda命令, 先source ~/.bashrc, 然后才能看到conda正确出现了.

然后, 配置一下镜像:

vi ~/.condarc
#写入:
show_channel_urls: true
auto_activate_base: false
ssl-verify: false
notify_outdated_conda: false
report_errors: false
channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
#  - conda-forge
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
  - defaults
custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

刷新镜像缓存:conda clean -i;

然后创建虚拟环境(以Python 3.11为例)

conda create -n py3xi python=3.11

安装一些常用的包:

conda install jupyter numpy scipy matplotlib scikit-learn 

conda常用命令

下面给出一些conda管理的常用命令:

  • 刷新镜像缓存conda clean -i;

  • 更新conda: conda update -n base -c defaults conda;

    或者更新全部: conda update --all.

    注意, 如果提示conda有更新却无法更新, 可以用Install指定最新版本的方法完成更新.

  • 删除虚拟环境: conda env remove --name your_env_name;

  • 查看虚拟环境:conda info -e;

  • 创建虚拟环境: conda create -n py39 python==3.9;

  • 查看conda的镜像配置: conda info;

  • 激活环境: conda activate tf27;

  • 取消激活: conda deactivate;

  • 查看版本: conda -V 或者conda --version;

  • 删除缓存(以及下载好的包文件, 不会删除已安装的包): conda clean --all.

配置conda和jupyter

这里参考了1,2, 前提是已经通过虚拟环境安装了Python和jupyter, 然后开始:

  1. 生成配置文件jupyter notebook --generate-config;

  2. 修改密码, 这里通过Python解释器完成, 先进入ipython(当前虚拟环境下)

    from notebook.auth import passwd
    passwd()
    # 之后会输出一些内容, 这些内容要放在配置文件中:
    
  3. 编辑配置文件, 这里我为了方便直接在原来的基础上改了, 其实也可以新建文件之后写入, 然后指定配置文件.

    # 一些需要改动的地方
    c.NotebookApp.allow_remote_access = True
    c.NotebookApp.ip = '*'
    c.NotebookApp.notebook_dir = '/home/test/code/py_code'
    c.NotebookApp.open_browser = False
    c.NotebookApp.password = '通过上面的命令生成的密码'
    c.NotebookApp.port = 8888
    

此外, 还可以配置SSL认证, 更多内容参考2.

服务器配置

开端口

8888(参考我配置的leanote文章3中给出的alias命令)

addtcp 8888
reufw

在阿里云的管理界面(防火墙)进行相应操作.

添加守护进程

mkdir -p ~/code/py_code
cd ~/code/py_code
vi start_jupyter.sh

加入下面的内容1:

#!/bin/bash

source /home/test/miniforge3/etc/profile.d/conda.sh
conda activate py3xi

jupyter-notebook >> jupyter.log 2>&1

最后改一下权限:

chmod 755 start_jupyter.sh

然后创建一个systemd管理文件:

vi /lib/systemd/system/jupyter.service

内容是:

[Unit]
Description=jupyter server

[Service]
PIDFile=/run/jupyter.pid
User=test
Group=test
Type=simple
WorkingDirectory=/home/test/code/py_code
ExecStart=/home/test/code/py_code/start_jupyter.sh
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

写入完成之后, 设置一下服务:

sudo systemctl daemon-reload
sudo systemctl start jupyter.service
sudo systemctl enable jupyter.service
sudo systemctl status jupyter.service

看看结果:

● jupyter.service - jupyter server
     Loaded: loaded (/etc/systemd/system/jupyter.service; enabled; vendor prese>
     Active: active (running) since Sat 2022-12-03 18:39:39 CST; 8min ago
   Main PID: 555 (start_jupyter.s)
      Tasks: 2 (limit: 4427)
     Memory: 136.2M
     CGroup: /system.slice/jupyter.service
             ├─555 /bin/bash /home/test/code/py_code/start_jupyter.sh
             └─990 /home/test/miniforge3/envs/py3xi/bin/python3.11 /home/test>

Dec 03 18:39:39 hostname systemd[1]: Started jupyter server.

通过tail -f查看日志:

$ tail -f code/py_code/jupyter.log
0.01s - Debugger warning: It seems that frozen modules are being used, which may
0.00s - make the debugger miss breakpoints. Please pass -Xfrozen_modules=off
0.00s - to python to disable frozen modules.
0.00s - Note: Debugging will proceed. Set PYDEVD_DISABLE_FILE_VALIDATION=1 to disable this validation.
[W 19:05:31.292 NotebookApp] WARNING: The notebook server is listening on all IP addresses and not using encryption. This is not recommended.
[I 19:05:31.311 NotebookApp] Serving notebooks from local directory: /home/test/code/py_code
[I 19:05:31.311 NotebookApp] Jupyter Notebook 6.5.2 is running at:
[I 19:05:31.311 NotebookApp] http://hostname:8888/
[I 19:05:31.311 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).

那么现在打开浏览器, 输入http://<公网IP>:8888, 然后输入刚才设置的密码, 就可以进入jupyter环境啦!

速度也是相当快(前提是网络好), 效果:

截屏2022-12-03 18.51.38

ref


  1. A systemd script for running a Jupyter notebook server. (github.com); ↩︎ ↩︎

  2. Running a notebook server — Jupyter Notebook 6.5.2 documentation (jupyter-notebook.readthedocs.io); ↩︎ ↩︎

  3. 通过阿里云server配置属于自己的云笔记leanote_zorchp的博客-CSDN博客; ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/58554.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Nginx】负载均衡、动静分离理论篇

一、负载均衡 1. 应用场景&#xff1a; 2. 负载均衡是什么&#xff1f; 在当业务系统服务器无法支撑当前的业务量时&#xff0c;用户可以选择更高性能的服务器。 但更为合理的做法是通过在既有业务服务器基础上&#xff0c;增量的方式增加相同功能的服务器&#xff0c;将处理…

Linux操作系统(基础操作)

文章目录一、文件操作命令1. 目录和文件操作2. 查看文件内容3. 重定向4. 管道二、信息系统相关命令1. 查看系统进程 -- ps2. 查看系统监听端口 -- netstat3. 查看日志信息命令 -- head / tail三、用户权限和管理1. linux中的权限2.修改用户权限chmod3.增加用户、查看登录用户4.…

CAS-比较并交换

CAS-比较并交换 原子类 何为原子类 没有CAS之前 多线程环境不使用原子类保证线程安全i&#xff08;基本数据类型&#xff09; 常用synchronized锁&#xff0c;但是它比较重 &#xff0c;牵扯到了用户态和内核态的切换,效率不高。 public class T3 {volatile int number 0…

JMeter 进行函数助手MD5加密

JMeter 函数助手 MD5 加密 JMeter函数助手中&#xff0c;提供了MD5加密的方法&#xff0c;如图所示&#xff0c;我们将内容 “123456”进行加密&#xff0c;可以看到加密成功了。 下面我们来看看项目接口的请求参数。 这是一个认证接口&#xff0c;我们可以看到请求的参数中包…

MySQL-MVCC多版本控制及事务的隔离性

MySQL事务的启动方式 隐式&#xff1a;执行SQL语句自动提交&#xff08;前提MySQL使用SET AUTOCOMMIT1开启自动提交&#xff09;显式&#xff1a;begin/start transaction; update user set username timi where id 1; commit; begin/start transaction命令并不是一个事务的起…

UE获取当前鼠标点击位置坐标

文章目录 1. 实现目标2. 实现过程2.1 蓝图代码2.2 实现思路3. 参考资料1. 实现目标 获取当前鼠标点击位置的UE世界坐标(x,y,z),效果如下图所示(为便于演示,下图显示了碰撞点位)。 2. 实现过程 2.1 蓝图代码 (1)核心函数的蓝图代码如下: (2)当鼠标左键按下时,…

【✨十五天搞定电工基础】一阶电路的暂态分析

本章要求1. 了解电阻元件、电感元件与电容元件的特征; 2. 理解电路的暂态和稳态、零输入响应、零状态响应、全响应的概念&#xff0c;以及时间常数的物 理意义; 3. 掌握换路定则及初始值的求法; 4. 掌握一阶线性电路分析的三要素法。 目录 一、一阶电路和换路定律 1…

第十四章 图的存储及图的DFS(超级详细!!逐行解析!!)

第十四章 图的存储及图的DFS一、图1、什么是图&#xff1f;2、图的存储&#xff08;1&#xff09;邻接矩阵&#xff08;2&#xff09;邻接表二、图的深度优先搜索1、思路2、模板&#xff08;1&#xff09;问题&#xff1a;如何求左右子树呢?什么时候记录呢&#xff1f;如何构造…

数字孪生场景、代码即开即用 | 图观™引擎 超详细功能范例演示

数字孪生已经从一项前沿技术&#xff0c;演变成为各行各业数字化转型的必选项。 过去想要构建数字孪生应用&#xff0c;要面对视觉设计、三维底座构建、代码开发、数据对接、部署联调等一系列复杂工作。不仅要了解复杂的数学基础知识、底层三维开发技术&#xff0c;还要熟知各…

Spring Cloud微服务迁移到Kubernetes容器化

文章目录相关文章k8s容器部署流程熟悉Spring Cloud微服务项目源代码编译构建构建项目镜像并推送到镜像仓库制作镜像将镜像推送到harbor仓库K8s服务编排部署基础环境在K8s中部署Nacos集群&#xff08;注册和配置中心&#xff09;在k8s中部署Seata分布式事务在linux部署mysql,red…

李炎恢ECMAScript6 / ES6+(二)

16.Set 数据集合 学习要点&#xff1a; 1.Set 数据集合 本节课我们来开始学习 ES6 新增的 Set 数据集合的用法&#xff1b; 一&#xff0e;Set 数据集合 1.ES6 之前只有数组一种数据结构&#xff0c;而现在提供了 Set 和 Map 两种集合&#xff1b; 严格来说&#xff0c;对象…

PC辉光效果一切正常,安卓辉光却没效果、显示异常(爆闪、黑屏等)

一&#xff1a;安卓端辉光不显示问题 问题描述&#xff1a;项目中使用unity的PostProcessing package实现辉光的功能&#xff0c;在pc上辉光效果一切正常&#xff0c;但是打出apk在真机测试时&#xff0c;辉光基本没效果。 解决思路&#xff1a;PostProcessing Bloom效果需要有…

【ArcGIS微课1000例】0056:将单波段栅格背景设置为无数据NoData的方法

本文讲解将单波段栅格背景设置为空值的方法,以DEM数据为例。 文章目录 一、DEM设置无数据二、注意事项单波段数据,一般只有DEM,遥感单波段影像,二值化图像等。 使用珊格计算器通过SetNull 函数(设定空值函数)可以将特定值计算为空值(NoData),SetNull的语法格式为: Se…

[附源码]Python计算机毕业设计Django教育企业网站

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

4-5:关注,取消关注

需求 开发关注、取消关注功能。 统计用户的关注数、粉丝数。 关键 若A关注了B&#xff0c;则A是B的Follower (粉丝)&#xff0c;B是A的Followee (目标)。关注的目标可以是用户、帖子、题目等&#xff0c;在实现时将这些目标抽象为实体。 也是将数据存储到redis中&#xff0c;…

LeetCode刷题复盘笔记—一文搞懂0 - 1背包之494. 目标和问题(动态规划系列第九篇)

今日主要总结一下动态规划0-1背包的一道题目&#xff0c;494. 目标和问题 题目&#xff1a;494. 目标和 Leetcode题目地址 题目描述&#xff1a; 给你一个整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 ‘’ 或 ‘-’ &#xff0c;然后串联起所有整数&#…

国外网友分享如何从零开始打造一辆真正的自动驾驶汽车

在 2021 年夏天大学二年级结束后,我决定从事当时最先进的项目之一——从头开发自动驾驶软件并在真车上实现。在公开我的代码的一些主要部分并发布演示视频后,我收到了很多关于该项目的问题。因此,我决定分享开发过程背后的故事。 我一直对与人工智能和机器学习相关的任何事…

Java代码审计——ClassLoader 类加载机制

目录 前言&#xff1a; (一&#xff09;类加载机制 0x01 ClassLoader 类 0x02 loadClass()方法的流程 0x03 自定义的类加载器 0x04 loadClass()方法与 Class.forName 的区别 0x05 URLClassLoader &#xff08;二&#xff09;Java 动态代理 0x01 静态代理 0x02 动态代理…

2022最新 MySQL 内部技术架构面试题

更多面试题&#xff1a;https://javaxiaobear.gitee.io/ 47、MySQL内部支持缓存查询吗&#xff1f; 当MySQL接收到客户端的查询SQL之后&#xff0c;仅仅只需要对其进行相应的权限验证之后&#xff0c;就会通过Query Cache来查找结果&#xff0c;甚至都不需要经过Optimizer模…

dot product【点积】

&#xff08;1&#xff09;概念 点积在数学中&#xff0c;又称数量积&#xff08;dot product; scalar product&#xff09;&#xff0c;是指接受在实数R上的两个向量并返回一个实数值标量的二元运算。 两个向量a [a1, a2,…, an]和b [b1, b2,…, bn]的点积定义为&#xff…