再怎么强调生物信息学数据分析学习过程的计算机基础知识的打磨都不为过,我把它粗略的分成基于R语言的统计可视化,以及基于Linux的NGS数据处理:
之前我们生信菜鸟团已经发布的:购买入门级服务器免费送Linux直播培训服务 ,提到了可以购置一款《1核2G服务器》标准品,既可以练习Linux命令,也可以打搭建一个博客:五分钟搞定你的个人博客,还可以做图床,或者隧道。但是,这个超级便宜的服务器真的是配置只能做入门Linux命令的练习,根本就没办法做NGS数据分析。
我这里拿腾讯云服务器举例,首先查看自己购买的云主机:https://console.cloud.tencent.com/cvm/index
查看服务器配置
df -h
free -g
挂载云硬盘
首先购买:
/dev/vda1 * 2048 104857566 104855519 50G 83 Linux
/dev/vdb1 2048 2097151999 2097149952 1000G 83 Linux
/dev/vdc1 2048 1048575999 1048573952 500G 83 Linux
挂载购置的云硬盘
sudo fdisk -l
sudo fdisk /dev/vdb
# 按照界面的提示,依次输入“n”(新建分区)、“p”(新建扩展分区)、“1”(使用第1个主分区),两次回车(使用默认配置),输入“w”(保存分区表),开始分区。
sudo fdisk /dev/vdc
sudo fdisk -l
df -h
sudo mkfs.ext4 /dev/vdc1
sudo mkfs.ext4 /dev/vdb1
sudo mkdir /data
sudo mkdir /project
sudo mount /dev/vdb1 /data/
sudo mount /dev/vdc1 /project/
还需要修改**/etc/fstab**文件
sudo vim /etc/fstab
然后在文件末尾添加下面内容,要注意盘号对应
/dev/vdb1 /data ext4 defaults 0 1
/dev/vdc1 /project ext4 defaults 0 1
设置硬盘用户配额
安装quota
sudo apt install quota
文件系统启用quota
sudo fdisk -l
sudo mount -o remount,usrquota,grpquota /data
sudo mount -o remount,usrquota,grpquota /project
mount | grep /dev
##/dev/vdd1 on /trainee2 type ext4 (rw,relatime,quota,usrquota,grpquota,data=ordered)
## 可以看到现在已经启用了quota
如果是自己的服务器,修改**/etc/fstab**文件
/dev/vdb1 /data ext4 defaults,usrquota,grpquota 0 0
/dev/vdc1 /project ext4 defaults,usrquota,grpquota 0 0
然后运行
sudo mount -o remount /data
sudo mount -o remount /project
生成磁盘配额数据库
sudo quotacheck -mugf /data
sudo quotacheck -mugf /project
## 在 trainee2 目录下会多出“aquota.group”,“aquota.user”两个文件
启用磁盘配额
sudo quotaon /dev/vdb1
sudo quotaon /dev/vdc1
## 关闭磁盘配额的命令
## sudo quotaoff -avgu
## 猜测之前错误就是因为运行了这个命令后没有重新开启
编辑磁盘配额文件
sudo adduser jmzeng
sudo edquota -u jmzeng
## 针对用户user1修改配置文件
对soft和hard列进行修改,超过soft设定数值,用户会收到提醒,最多使用的空间大小由hard设置,这里设置为50G~60G(NANO编辑器的退出和保存)
Disk quotas for user user1 (uid 500):
Filesystem blocks soft hard inodes soft hard
/dev/sdb1 0 50000000 60000000 0 0 0
复制磁盘配额配置文件给多个用户
sudo edquota -p jmzeng user2
查看配额文件报告
sudo repquota -aug
## 显示用户配额:
sudo quota -uvs jmzeng
测试是否有效
切换用户:sudo su quotauser1
创建一个大文件:dd if=/dev/zero of=bigfile bs=1M count=5000
切换回主用户查看该用户的空间使用情况:sudo repquota -auvs
安装必备系统库及软件
管理员的特权
首先是库
sudo apt update
sudo apt install --fix-missing libcurl4-openssl-dev libxml2-dev libgdal-dev libssl-dev libglu1-mesa-dev libmagick++-dev libudunits2-dev
然后是软件
sudo apt update
sudo apt install -y net-tools
sudo apt install -y openssh-server
sudo apt install -y subversion scons libfuse-dev gcc git make
sudo apt install -y samtools bcftools bwa ncbi-blast+ sra-toolkit
配置网络服务(博客或者论坛)
接着参考:https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-16-04 设置好ngix的网站服务
sudo apt-get update
sudo apt install -y vim tree nginx htop cmake
sudo apt install -y nginx curl
curl -4 icanhazip.com
接着参考:https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-in-ubuntu-16-04 设置好mysql和php服务
sudo ufw allow 'Nginx HTTP'
sudo ufw status
sudo apt-get -f install mysql-server
## 保证密码统一性
mysql_secure_installation
sudo apt-get -f install php-fpm php-mysql
sudo vi /etc/php/7.0/fpm/php.ini ## change cgi.fix_pathinfo=0
sudo systemctl restart php7.0-fpm
sudo vi /etc/nginx/sites-available/default
需要设置好 /var/www/html 文件夹权限,就是需要增加一个 www-data 的用户组,里面包含的用户都是可以访问的。
sudo chgrp -R www-data /var/www
#sudo usermod -a -G www-data jmzeng
sudo usermod -a -G www-data ubuntu
sudo chmod -R 2770 /var/www/html
sudo usermod -a -G www-data jmzeng
配置R环境
使用root权限(系统管理员)安装最新版的R,我们的ubuntu是20,所以选择focal这个代号,然后是cran40,全部的代码如下:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9
sudo add-apt-repository 'deb https://mirrors.ustc.edu.cn/CRAN/bin/linux/ubuntu focal-cran40/'
sudo apt update
sudo apt install r-base
实际上还需要使用root权限(系统管理员)安装一些R包。
假如你的ubuntu是其它版本,自己修改:
# 18.04,deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/ # 16.04, deb https://cloud.r-project.org/bin/linux/ubuntu xenial-cran35/ # 14.04,deb https://cloud.r-project.org/bin/linux/ubuntu trusty-cran35/
这里我们使用root权限(系统管理员):sudo R
options()$repos
options()$BioC_mirror
#options(BioC_mirror="https://mirrors.ustc.edu.cn/bioc/")
options(BioC_mirror="http://mirrors.tuna.tsinghua.edu.cn/bioconductor/")
options("repos" = c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
options()$repos
options()$BioC_mirror
# https://bioconductor.org/packages/release/bioc/html/GEOquery.html
if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install("KEGG.db",ask = F,update = F)
一般来说不会报错,然后继续安装更多的包:
BiocManager::install(c("GSEABase","GSVA","clusterProfiler" ),ask = F,update = F)
BiocManager::install(c("GEOquery","limma","impute" ),ask = F,update = F)
BiocManager::install(c("org.Hs.eg.db","hgu133plus2.db" ),ask = F,update = F)
options()$repos
install.packages('WGCNA')
install.packages(c("FactoMineR", "factoextra"))
install.packages(c("ggplot2", "pheatmap","ggpubr"))
library("FactoMineR")
library("factoextra")
library(GSEABase)
library(GSVA)
library(clusterProfiler)
library(ggplot2)
library(ggpubr)
library(hgu133plus2.db)
library(limma)
library(org.Hs.eg.db)
library(pheatmap)
BiocManager::install("ChAMP")
不得不说,有一些R包真的很难安装,搞了一个下午,比如ChAMP这个甲基化芯片数据处理包。
配置shiny权限和rsutdio的服务器
安装shiny和rsutdio的服务器,官网找到最新版咯
https://www.rstudio.com/products/rstudio/download-server/ https://www.rstudio.com/products/shiny/shiny-server/
因为网络问题,直接从其它腾讯云服务器拷贝两个deb文件过来。
sudo apt-get install gdebi-core
wget https://download2.rstudio.org/server/bionic/amd64/rstudio-server-1.3.1056-amd64.deb
sudo gdebi rstudio-server-1.3.1056-amd64.deb
如果要安装 shiny服务,首先需要相应的R包
library(shiny)
library(devtools)
library(ggplot2)
library(pheatmap)
library(ggpubr)
library(ggstatsplot)
library(airway)
library(DESeq2)
library(edgeR)
library(limma)
library(clusterProfiler)
# library之后均没有报错
library之后均没有报错
sudo systemctl restart shiny-server
可能需要经常重启,安装成功之后查看端口开放情况:netstat -tln
批量新建用户
在Ubuntu中,adduser更适合初级使用者,因为不用去记那些繁琐的参数选项,只要跟着系统的提示一步一步进行下去就行,缺点就是整 个创建过程比较复杂而漫长;
而useradd比较适合有些高阶经验的使用者,往往一行命令加参数就能解决很多问题,所以创建起来十分方便。
https://www.cnblogs.com/xudong-bupt/archive/2013/03/13/2958043.html
http://blog.csdn.net/nyist327/article/details/50729743
首先需要新建一个组别来管理他们:sudo groupadd student
然后新建一个文本存放用户信息,比如:huaxi_users.txt
内容如下:
kzheng:kzheng6453
qyzhang:qyzhang53535
qhe:qhe2526
代码是:
# bash create_user.sh user.vip.batch2 /project/home batch2
cut -d":" -f 1 $1 |while read id;do
h=$2
g=$3
echo $id
sudo mkdir -p id
sudo useradd h/$id
sudo chown -R h/$id
sudo usermod -aG id
sudo chgrp -R h/$id
sudo usermod -s /bin/bash $id
sudo cp readme.txt id
sudo cp /home/ubuntu/.profile id
sudo cp /home/ubuntu/.bashrc id
sudo chown -R h/$id
sudo edquota -p jmzeng $id
done
# sudo chpasswd < passwd.txt
:'
Welcome to Biotrainee() !
This is your personal account in our Cloud.
Have a fun with it.
Please feel free to contact with me( email to jmzeng1314@163.com )
(http://www.biotrainee.com/thread-1376-1-1.html)
'
批量新建用户可以批量修改密码:sudo chpasswd < huaxi_users.txt
后来我把这个代码又包装了一下:
for i in Aug{001..600};do sudo userdel -r $i;done
for i in Aug{001..600};do sudo groupdel $i;done
echo vip{001..600}|tr ' ' '\n'|while read id;do echo ${id}:pd$(($RANDOM%50000+1)) ;done > user.vip.batch1
sudo groupadd batch1
bash create_user.sh user.vip.batch1 /data/home batch1
sudo chpasswd < user.vip.batch1
echo vip{601..999}|tr ' ' '\n'|while read id;do echo ${id}:pd$(($RANDOM%50000+1)) ;done > user.vip.batch2
sudo groupadd batch2
bash create_user.sh user.vip.batch2 /project/home batch2
sudo chpasswd < user.vip.batch2
## 显示用户配额:
sudo quota -uvs jmzeng
我多么希望可以给10万粉丝人手一个服务器账号,但是哪怕是我可以在代码层面做到,这个服务器的性能也支撑不住!现在建立了1000个账号,就已经很勉强了。
文末友情推荐
要想真正入门生物信息学建议务必购买全套书籍,一点一滴攻克计算机基础知识,书单在:什么,生信入门全套书籍仅需160 。如果大家没有时间自行慢慢摸索着学习,可以考虑我们生信技能树官方举办的学习班:
数据挖掘学习班第6期(线上直播3周,马拉松式陪伴,带你入门),原价4800的数据挖掘全套课程, 疫情期间半价即可抢购。 生信爆款入门-第8期(线上直播4周,马拉松式陪伴,带你入门),原价9600的生信入门全套课程,疫情期间3.3折即可抢购。
如果你课题涉及到转录组,欢迎添加一对一客服:详见:你还在花三五万做一个单细胞转录组吗?
号外:生信技能树知识整理实习生招募,长期招募,也可以简单参与软件测评笔记撰写,开启你的分享人生!另外,:绝大部分生信技能树粉丝都没有机会加我微信,已经多次满了5000好友,所以我开通了一个微信好友,前100名添加我,仅需150元即可,3折优惠期机会不容错过哈。我的微信小号二维码在:0元,10小时教学视频直播《跟着百度李彦宏学习肿瘤基因组测序数据分析》