服务器和Linux ,安装R rstudio ,常用软件

  1. 服务器的基本概念:

    1. 如服务器的基本结构,节点,端口的概念等。

  2. 服务器的基本设置和管理:

    1. 如何配置新服务器,

    2. 如何管理服务器,如何分配账户并确保他们互不访问,

    3. 如何全局安装软件让所有人都可以使用,

    4. 以及服务器管理员的常用操作等。

  3. 软件的安装和使用:安装和版本管理

    1. 如何在服务器上安装和使用各种软件,如R, Rstudio, Jupyter notebook等,

    2. 如何在服务器上使用不同版本的R和Python等。

  4. 数据管理:

    1. 如何下载和安装各种数据,

    2. 如何在Linux下进行相关分析,

    3. 如何在Linux下挂载后台运行及查看进度,

    4. 如何管理大量数据集等。

  5. 工作环境的搭建:

    1. 如何搭建生信分析或者对接课程的工作环境,

    2. 如何搭建单细胞下游分析工作环境,

    3. 如何创建网页版Rstudio和Python notebook以供外人访问等。

  6. 文件传输和存储:

    1. 如何用FileZilla或其他工具上传文件到服务器,

    2. 上传的文件在Python中如何找到

    3. 数据文件如何存储和管理等。

实际上关键点就两个,一个是怎么管理好多个用户,一个是怎么安装好软件。因此昨晚的直播课也就是侧重这两点。

第一部分:服务器和Linux的了解

在这一部分,我主要给大家简答科普了目前的服务器的类型,以及与我们当前用到的笔记本、台式机的区别。

需要知道的几点

  1. 服务器性能不一定比台式机强

  2. 服务器一般来说都是为了完成某个特定目标,比如说网页服务器,而我们用的电脑则是常用来执行多种不同的任务

  3. 服务器有物理服务器和虚拟服务器两类,虚拟服务器一般指的是将一个物理服务器的资源虚拟化,有效利用资源的一种。

  4. 大厂的云服务器比较贵。不建议购买云服务器做计算任务。

  5. Linux是服务器上最常用的一种操作系统

  6. Linux有两种主要发行版本,一种是CentOS,一种是ubuntu。

  7. 从后续的直播结果来看,请大家在装服务器系统的时候,尽量装最新的Ubuntu。云服务器的CentOS可能还是7,因此除非你对自己的管理能力很自信,否则慎选。

第二部分:服务器的交互

服务器访问三要素是

  1. 用户名

  2. IP地址,或者域名

  3. 端口号

即便很多时候你没有写端口,那也是有一个默认端口22的。

我觉得经过我很多次强调,上过我Linux课的人,都知道这三要素了。

与服务器交互的两种最常见方式是:SSH登录和SFTP数据传输。

在Windows上,我认为的最佳组合就是XSHELL和XFTP

Image

而在MacOS和Linux上,我自己偏好自带终端和FileZilla。由于FileZilla是跨平台的软件,所以实际上我在Windows上也会用。

Image

当然,还有其他一些东西可选,例如FinalShell。

第三部分:权限管理

这部分知识,在我们Linux实战课虽然提到过,但实际上大家都没有什么特别的感悟,因此这里,我给了一个非常复杂的例子

需求:

  • 创建三个用户,xzg1, xzg2,xzg3, 位于/home/xzg下, 属于xzg组

  • 创建三个用户,gsp1, gsp2, gsp3,位于/home/gsp下,属于gsp组

  • 创建1个用户,visitor,位于/home/visitor下,属于visitor组

  • 创建一个组,叫做gzdlab, xzg1, xzg2,xzg3, gsp1,gsp2,gsp3都属于gzdlab

  • xzg组之间可以相互访问,gsp组之间可以相互访问,xzg和gsp之间不能相互访问

  • 创建一个私人目录,/data/private_data,  gzdlab组的人可以访问,并编辑里面的内容,其他用户可以访问,但是不能编辑内容

  • 创建一个公共目录,/data/public_data, 所有人都可以访问,都可以编辑内容

这个例子在直播课有了非常好的演示。只不过在操作同时,还演示了一些内容外的东西,这要是我就觉得直播课相对于我写文字教程,有趣的地方。

我在用xzg1使用sudo时候,遇到了权限的问题,于是我带了大家学习用户让一个普通用户能够使用sudo。在Ubuntu和CentOS中,添加sudo用户是不太一样的操作。Ubuntu用的是usermod把用户加到sudo组中,而CentOS则是用visudo在配置文件中加上用户。

遇到之前的需求,我们解决方法如下

第一步,创建用户和用户组:

sudo groupadd xzg
sudo groupadd gspsudo mkdir /home/xzg
sudo mkdir /home/gspsudo useradd -m -d /home/xzg/xzg1 -g xzg xzg1
passwd xzg1sudo useradd -m -d /home/xzg/xzg2 -g xzg xzg2
sudo useradd -m -d /home/xzg/xzg3 -g xzg xzg3sudo useradd -m -d /home/gsp/gsp1 -g gsp gsp1
sudo useradd -m -d /home/gsp/gsp2 -g gsp gsp2
sudo useradd -m -d /home/gsp/gsp3 -g gsp gsp3

创建合作组,gzdlab,用于加上xzg和gsp的成员。

# 创建组
sudo  groupadd gzdlab# 将用户添加到组
for user in xzg1 xzg2 xzg3 gsp1 gsp2 gsp3; dosudo  usermod -a -G gzdlab ${user}
done

之后,设置xzg和gsp用户组的访问权限:

# 更改所有者
# 前面的冒号表示只更改所属组,而不更改所有者。
sudo chown -R :xzg /home/xzg
sudo chown -R :gsp /home/gspsudo chmod -R 770 /home/xzg
sudo chmod -R 770 /home/gsp

为了方便数据的管理,我们创建了两个文件夹:

sudo mkdir -p /data/private_data
sudo mkdir -p /data/public_data

设置文件夹权限:

sudo chown -R :gzdlab /data/private_data
sudo chmod -R 770 /data/private_data
sudo chmod -R 777 /data/public_data

当然上述一般来说,可能都是管理非常复杂的情况,更多的是帮助我们理解什么叫做用户权限。但是在真实世界中,我们可能就只会做两步,

第一步,创建用户,给他分配一些资源。

useradd -m -d /home/用户名 用户名
passwd 用户名

第二步,创建一个公共的目录,放数据,让他去复制

mkdir /data/public_data
chmod -R 777 /data/public_data

简单的说,就是把数据分成自己的和公共的两类。

这一部分交给大家的作业就是,回顾整理下用户管理、用户组管理和权限管理的几个Linux命令。

第四部分:软件安装

我们先强调了环境变量,PATH的重要性,可执行文件都是通过这个PATH来找到执行路径的。

但是PATH是如何加载的呢?我们介绍了配置文件的加载过程,特别的,我们强调了 为什么有些时候,你已经把PATH添加到~/.bashrc  中,但是依旧不起作用的原因。

这里我找到了一张更好的图(来源:https://youngstone89.medium.com/unix-introduction-bash-startup-files-loading-order-562543ac12e9),来说明这个加载过程。

Image

通常来说,如果我们用的是终端登录,我们就是以 /ect/profile~/.bash_profile 来启动配置文件,而~/.bashrc通常是由~/.bash_profile调用。

接着,为了介绍如何全局安装软件,我们讲了两个例子

  • CellRanger

  • seqkit

大家可以自己回去练习下

当然,软件安装的重头戏还是R语言和RStudio的配置。

在R语言的安装上,我推荐的是用编译的方式安装,这样子,你可以保证,你自己安装多个版本的R,并保持他们共存。

直播课中,我介绍4.1.3和4.3.1的编译安装

# 4.3.1
wget https://mirrors.tuna.tsinghua.edu.cn/CRAN/src/base/R-4/R-4.3.1.tar.gz
tar xf R-4.3.1.tar.gz
./configure --prefix=/opt/R-4.3.1 --enable-R-shlib --with-blas --with-lapack
make -j
sudo make install#4.1.3
wget https://mirrors.tuna.tsinghua.edu.cn/CRAN/src/base/R-4/R-4.1.3.tar.gz
tar xf R-4.1.3.tar.gz
./configure --prefix=/opt/R-4.1.3 --enable-R-shlib --with-blas --with-lapack 
make -j 
sudo make install

不过在安装过程中,我们出现了几个意外(放心,都在我的掌控之中)

首先,依赖环境不全,因此在configure的过程中,反复报错,我这里总结了CentOS和Ubuntu的一些必装的内容 CentOS

yum group install "Development tools"
yum install libX11-devel 
yum install libXt-devel 
yum install readline-devel
yum install xz xz-devel 
yum install pcre pcre-devel
yum install libcurl-devel
yum install texlive
yum install java-1.8.0-openjdk
yum install *gfortran*
yum install zlib*
yum install bzip2-*

Ubuntu

sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install zlib1g-dev libreadline-dev libcurl4-openssl-dev \libpcre2-dev libbz2-dev liblzma-dev \libxml2-dev libcairo2-dev
sudo apt-get install xorg-dev
sudo apt-get install texlive-base texlive-latex-extra texlive-fonts-recommended# java支持, 可以不用
sudo apt-get install default-jdk

还有一个意外的就是,centOS7因为太老了,安装4.3.1的时候,还得加上 --with-pcre1参数,不能用最新的pcre2

./configure --prefix=/opt/R-4.3.1 --enable-R-shlib --with-blas --with-lapack  --with-pcre1
make -j
sudo make install 

另外要强调的一点事,因为后续要RStudio调用R,所以--enable-R-shlib参数必须有。

之后我们用CentOS演示了RStudio安装

wget https://download2.rstudio.org/server/centos7/x86_64/rstudio-server-rhel-2023.06.1-524-x86_64.rpm
sudo yum install rstudio-server-rhel-2023.06.1-524-x86_64.rpm

实际上Ubuntu也类似,到https://posit.co/download/rstudio-server/ 选择合适版本就好

需要注意的是,此时安装的Rstudio是不会成功启动的,因为我们没有安装在它默认搜索的位置,因此我们需要没指定R的位置

我们需要编辑 /etc/rstudio/rserver.conf ,添加如下的内容

rsession-which-r=/opt/R-4.3.1/bin/R

然后用sudo rstudio-server restart重启,使用rstudio-server status确认运行状态。

默认端口是8787,你需要通过 IP地址:端口来访问。

但是,如果你用的云服务器,或者你服务器有防火墙的设置,你还需要允许这个端口的放行。这部分内容参考直播课的演示。

接下来,我们介绍了R包的编译,需要强调的是,R默认是单线程编译。我们需要先运行这两个配置,让R执行编译时能够快一点。

options(Ncpus=20L)
Sys.setenv(MAKEFLAGS="-j 20")

在R包的安装过程中,充满了意外,例如,学员让我们演示CytoTRACE_0.3.3的安装,经过不断的排查,发现可能需要gcc7才能编译,而我的centos7只有gcc4.8。虽然我能给大家展现一下,如何在旧系统上编译新的GCC,但是考虑直播时长,我们还是冷静下,暂时在这里结束了,不然我们真的要决战到天明了。

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

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

相关文章

TZOJ 1386 十转换转R进制

答案&#xff1a; #include<stdio.h> char fun(int n) {if (n > 0 && n < 10) //如果是小于10进制的return n 48; //ASCII值48else if (n > 10 && n < 16) //如果是大于10进制小于16进制的return n 55; //ASCII值55elseretur…

PD QC快充协议诱骗取电sink受电芯片大全_测试报告

随着Type-C接口的充电器普及&#xff0c;市面上的PD充电器越来越多&#xff0c;小家电产品可不配充电器&#xff0c;使用Type-C接口&#xff0c;然后加入一颗PD协议取电协议芯片XSP08即可让充电器/充电宝/车充等电源输出9V/12V/15V/20V电压给产品供电。 快充取电芯片应用场景&a…

从0开始学习JavaScript--JavaScript ES6 模块系统

JavaScript ES6&#xff08;ECMAScript 2015&#xff09;引入了官方支持的模块系统&#xff0c;使得前端开发更加现代化和模块化。本文将深入探讨 ES6 模块系统的各个方面&#xff0c;通过丰富的示例代码详细展示其核心概念和实际应用。 ES6 模块的基本概念 1 模块的导出 ES…

【算法刷题】Day10

文章目录 15. 三数之和题干&#xff1a;算法原理&#xff1a;1、排序 暴力枚举 利用set 去重2、排序 双指针 代码&#xff1a; 18. 18. 四数之和题干&#xff1a;算法原理&#xff1a;1、排序 暴力枚举 利用set 去重2、排序 双指针 代码&#xff1a; 15. 三数之和 原题链…

springboot数据格式验证——自定义日期格式验证及list验证

我们在工作中经常需要对日期格式进行定义&#xff0c;如果客户端传来的日期字符串不符合要求&#xff0c;那么根本无法保存&#xff0c;但是已有的注解并没有日期格式的验证&#xff0c;那我们就自己实现一个 一、自定义日期格式验证的注解DateFormat import javax.validatio…

2023年阅读类APP如何发展?怎么做好商业化? | TopOn观察

前言 阅读类APP作为泛娱乐应用的重要板块&#xff0c;近年来在全球都发展火热。本文将主要从阅读类应用的市场规模、头部产品及地区特点、商业化模式及提升商业变现几个方面入手&#xff0c;解析2023年阅读类APP的发展趋势&#xff0c;希望为阅读类应用开发者带来参考价值。 一…

28.线段树与树状数组基础

一、线段树 1.区间问题 线段树是一种在算法竞赛中常用来维护区间的数据结构。它思想非常简单&#xff0c;就是借助二叉树的结构进行分治&#xff0c;但它的功能却非常强大&#xff0c;因此在很多类型的题目中都有它的变种&#xff0c;很多题目都需要以线段树为基础进行发展。…

【Skynet 入门实战练习】分布式 ID | 雪花算法 | 缓存设计 | LRU算法 | 数据库

文章目录 前言雪花算法LRU 算法缓存模块数据库测试逻辑 前言 本节实现了 分布式 ID 生成系统&#xff0c;采用雪花算法实现唯一 ID&#xff1b;实现缓存架构&#xff0c;采用 LRU &#xff08;最近最少使用&#xff09;算法。 雪花算法 分布式 ID 生成算法的有很多种&#x…

Redis——某马点评day01——短信登录

项目介绍 导入黑马点评项目 项目架构 基于Session实现登录 基本流程 实现发送短信验证码功能 controller层中 /*** 发送手机验证码*/PostMapping("code")public Result sendCode(RequestParam("phone") String phone, HttpSession session) {// 发送短信…

B站缓存视频M4S合并MP4(js + ffmpeg )

文章目录 B站缓存视频转MP4&#xff08;js ffmpeg &#xff09;1、说明 2、ffmpeg2.1 下载地址2.2 配置环境变量2.3 测试2.4 转换MP4命令 3、处理程序 B站缓存视频转MP4&#xff08;js ffmpeg &#xff09; 注意&#xff1a;这样的方式只用于个人之间不同设备的离线观看。请…

spring boot mybatis TypeHandler 看源码如何初始化及调用

目录 概述使用TypeHandler使用方式在 select | update | insert 中加入 配置文件中指定 源码分析配置文件指定Mapper 执行query如何转换 结束 概述 阅读此文 可以达到 spring boot mybatis TypeHandler 源码如何初始化及如何调用的。 spring boot 版本为 2.7.17&#xff0c;my…

SQL Server 2016(创建数据表)

1、需求描述。 在名为“class”的数据库中创建表&#xff0c;表名称为“course”&#xff0c;其中要包含序号、课程、课程编号、学分、任课教师、上课地点、开始时间、结束时间、备注等列。 设置各个字段的数据类型。其中&#xff0c;"序号"列为标识列&#xff0c;从…

分享几个可以免费使用GPT工具

1. 国产可以使用GPT3.5和4.0的网站&#xff0c;每日有免费的使用额度&#xff0c;响应速度&#xff0c;注册时不用使用手机号&#xff0c;等个人信息&#xff0c;注重用户隐私&#xff0c;好评&#xff01; 一个好用的ChatGPT系统 &#xff0c;可以免费使用3.5 和 4.0https://…

企业如何做好合规管理?

近年来“合规”作为一个热点话题&#xff0c;频繁出现在公众视野&#xff0c;已然成为企业管理发展的大趋势。国家相继出台的各项合规管理标准预示着我国的企业合规管理正逐步从头部央企向民营企业扩展。因此&#xff0c;各大企业将合规管理作为了企业管理的首要任务。 随着中…

Mysql 行转列,把逗号分隔的字段拆分成多行

目录 效果如下源数据变更后的数据 方法第一种示例SQL和业务结合在一起使用 第二种示例SQL和业务结合在一起使用 结论 效果如下 源数据 变更后的数据 方法 第一种 先执行下面的SQL&#xff0c;看不看能不能执行&#xff0c;如果有结果&#xff0c;代表数据库版本是可以的&…

C语言:写一个函数,输入一个十六进制数,输出相应的十进制数

分析&#xff1a; 当用户运行该程序时&#xff0c;程序会提示用户输入一个十六进制数。用户需要在命令行中输入一个有效的十六进制数&#xff0c;例如&#xff1a;"1A3F"。 接下来&#xff0c;程序调用了名为 xbed 的函数&#xff0c;并将用户输入的十六进制数作…

激光SLAM:Faster-Lio 算法编译与测试

激光SLAM&#xff1a;Faster-Lio 算法编译与测试 前言编译测试离线测试在线测试 前言 Faster-LIO是基于FastLIO2开发的。FastLIO2是开源LIO中比较优秀的一个&#xff0c;前端用了增量的kdtree&#xff08;ikd-tree&#xff09;&#xff0c;后端用了迭代ESKF&#xff08;IEKF&a…

VS2022 配置Qt编译环境 | winows安装Qt5.14.2 | VS2017和Qt5配置成功指南

Visual Studio 2022安装教程完文本内容较多,请耐心看完,挺有收获的,要自己多尝试哦。 文章目录 # 插件安装 如果你想用VS2022来创建QT项目,那么你首先要学会下面的操作,创建一个空白解决方案,在扩展搜索qt,并且下载两个插件(带有绿√的就是)。这里其实是一个坑:VS20…

智慧校园:打造未来教育新时代

智慧校园&#xff1a;打造未来教育新时代 智慧校园是指利用先进的信息技术手段&#xff0c;通过云计算、大数据分析、人工智能等技术来提升教育教学质量和管理效率的一种模式。随着科技的不断发展&#xff0c;智慧校园正成为教育领域的热门话题。本文将深入探讨智慧校园的定义、…

leetCode 90.子集 II + 回溯算法 + 图解 + 笔记

给你一个整数数组 nums &#xff0c;其中可能包含重复元素&#xff0c;请你返回该数组所有可能的子集&#xff08;幂集&#xff09;。 解集 不能 包含重复的子集。返回的解集中&#xff0c;子集可以按 任意顺序 排列 示例 1&#xff1a; 输入&#xff1a;nums [1,2,2] 输出…