如果有一个新的服务器你会做什么?
已经折腾过好几个云服务器了,发现对自己的技能提升很有帮助,所以分享一下自己的心得体会。当然如果你本身是计算机专业的,可以略过了。即使你没有云服务器,也可以在自己的电脑上面安装一个虚拟机安装ubuntu,或者直接拿mac来折腾。当然,mac折腾坏了我就不负责咯。
开通网页服务
## https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu-16-04sudo apt-get install apache2 mysql-server mysql-client php5 php5-gd php5-mysqlsudo apt-get install mysql-serversudo apt-get install php libapache2-mod-php php-mcrypt php-mysql#sudo apt-get install phpmyadmin## 上面的软件安装完毕后,就可以直接在浏览器里面输入下面的IP进行访问啦127.0.0.1127.0.0.1/info.php## 如果你没有公网IP,就直接在你的云服务器本身自带的浏览器里面输入 localhost 吧!## 当然网页服务的权限也要设置好,需要自己慢慢搜索理解sudo chgrp -R www-data /var/wwwsudo usermod -a -G www-data jmzengsudo chmod -R 2770 /var/www/html
安装必备的库
操作系统本身可以非常的精简,比如docker里面的ubuntu就一百多M的大小,但是真正要想用起来,仅仅是操作系统肯定是不够的,需要安装各种各样的软件,这些软件就需要各种各样的库文件的支持。这里,我们一劳永逸运行下面的代码:
sudo apt-get -y install libcurl4-gnutls-devsudo apt-get -y install libxml2-devsudo apt-get -y install libssl-devsudo apt-get -y install libmariadb-client-lgpl-dev
安装R相关
这个从事生物信息学工作的就不用解释啦,直接上代码:
sudo vi /etc/apt/sources.list# deb http://mirrors.xmu.edu.cn/CRAN/bin/linux/ubuntu/ xenial/sudo apt-get updatesudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 51716619E084DAB9sudo apt-get updatesudo apt-get install r-base-coreR --version## http://deanattali.com/2015/05/09/setup-rstudio-shiny-server-digital-ocean/sudo su - \-c "R -e \"install.packages( c('RSQLite','shiny','devtools','RMySQL'), repos='https://cran.rstudio.com/')\""sudo apt-get -y install libapparmor1 gdebi-corewget https://download2.rstudio.org/rstudio-server-0.99.896-amd64.debsudo gdebi rstudio-server-0.99.896-amd64.deb127.0.0.1:8787wget https://download3.rstudio.org/ubuntu-12.04/x86_64/shiny-server-1.4.2.786-amd64.debsudo gdebi shiny-server-1.4.2.786-amd64.deb127.0.0.1:3838sudo adduser jimmysudo groupadd shiny-appssudo usermod -aG shiny-apps jimmysudo usermod -aG shiny-apps shinycd /srv/shiny-serversudo chown -R jimmy:shiny-apps .sudo chmod g+w .sudo chmod g+s .sudo su - \-c "R -e \"install.packages( c('shinydashboard','DT','reshape2'), repos='https://cran.rstudio.com/')\""sudo su - \-c "R -e \"install.packages( c('shinyBS','GGally','shinyAce','knitr'), repos='https://cran.rstudio.com/')\""sudo su - \-c "R -e \"install.packages( c('rmarkdown','shinyjs' ), repos='https://cran.rstudio.com/')\""sudo Rsource("https://bioconductor.org/biocLite.R")biocLite("Biobase")biocLite("Sushi")sudo systemctl restart shiny-serversudo systemctl kill -s HUP --kill-who=main shiny-server## start /stop / status / enable /disable
mysql数据库的配置
如果要远程服务mysql数据库,这里面的门道还有点多,直接上代码吧:
mysql -u root -p## 登录进入mysql交互界面后,输入下面的mysql命令select user,host from mysql.user;create database test_db;grant all privileges on test_db.* to 'jmzeng'@'%' identified by 'test$';select user,host from mysql.user;flush privileges;mysql -u jmzeng -pmysql -h 127.0.0.1 -u jmzeng -pmysql -h localhost -u jmzeng -pmysql -h 127.0.0.1 -u jmzeng -phead /etc/mysql/my.cnfhead /etc/mysql/mysql.conf.d/mysqld.cnfnetstat -an | grep 3306ps -Af | grep mysqldsudo systemctl status mysqlls -lh /var/run/mysqldsudo systemctl restart mysql
安装Nginx
nginx可以给一个IP地址分配多个域名,这样一个云服务器就可以hold住多个博客或者论坛啦。
#Shutting down apache2 first before installing nginx should fix this problem:sudo service apache2 stop# https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-16-04## 这个教程写明如何在16.04版本的ubuntu里面安装nginx# https://mediatemple.net/community/products/developer/204405534/install-nginx-on-ubuntu## 这个教程写明如何把自己买的多个域名绑定到同一台主机的不同文件夹里面sudo apt-get updatesudo apt-get install nginxsudo systemctl start nginxsudo systemctl status nginx## list the applications configurations for the firewallsudo ufw app listsudo ufw allow 'Nginx HTTP'sudo ufw status## server's public IP addressip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'curl -4 icanhazip.comls /etc/nginx## sites-available sites-enabled snippets#给自己的shiny server设置域名:#https://www.r-statistics.com/2016/10/set-application-domain-name-with-shiny-server/#https://www.r-bloggers.com/shiny-server-series-part-1-setting-up/sudo ln -s /etc/nginx/sites-available/shiny.conf /etc/nginx/sites-enabled/sudo systemctl restart nginx# https://www.datascienceriot.com/add-authentication-to-shiny-server-with-nginx/kris/
安装JBrowser
这是一个基因组浏览器,功能还挺多的,可以看成是高配版的网页IGV
# 建立有写权限的目录sudo mkdir /var/www/jbrowse;sudo chown `whoami` /var/www/jbrowse;cd /var/www/jbrowse;# 下载最新的安装包curl -O http://jbrowse.org/releases/JBrowse-1.12.1.zip# 解压之后进入目录unzip JBrowse-x.x.x.zipcd JBrowse-x.x.x#运行目录内的setup.sh文件./setup.sh127.0.0.1/jbrowse/JBrowse-1.12.1/index.html?data=sample_data/json/volvox127.0.0.1/jbrowse/JBrowse-1.12.1/index.html?data=sample_data/json/yeast
具有如下特点:
快速、平滑的滚动和缩放,能较快的浏览你的基因组数据
能够很容易的缩放若干Gbp和深覆盖度测序数据
支持多种基因组学常用格式(如GFF3、BED、FASTA、Wiggle、BigWig、BAM、VCF等其它格式)
对服务器的配置要求低,实际上JBrowse并没有多少后台服务器代码,除了一些转换格式的工具如转换成http文本
当web浏览器导入含有JBrowse的页面时,首先做的是读取由html页面传递的配置文件。 JBrowse里面支持两种配置文件格式,一种是JSOn格式,另外一种是和GBrowse类似的文本配置文件.conf,如果习惯了之前的GBrowse那么用.conf会更加习惯。
jborwse.conf配置文件是基因浏览器的全局配置文件。
tracks.conf是各个数据项的子配置文件。
参考序列就是相当于其它所有track的一个坐标轴,当放大到一定的尺度后上面的碱基是可以被显示出来的。 JBrowse中的参考序列都必须用prepare-refseqs.pl这个格式化脚本来创建。(可以接受.gz .gzip压缩格式的fasta文件)
http://www.cnblogs.com/freemao/p/3741259.html
ref=/var/www/html/jbrowse/JBrowse-1.12.1/TF_data/raw/human_genome/hg38.fastaoutDir=/var/www/html/jbrowse/JBrowse-1.12.1/TF_data/json/humanrootDir=/var/www/html/jbrowse/JBrowse-1.12.1/bin/#$rootDir/prepare-refseqs.pl --fasta $ref --out $outDir#$rootDir/flatfile-to-json.pl --gff outfile.txt --tracklabel peaks --out $outDir#$rootDir/flatfile-to-json.pl --gff hg38.chr1.gff3 --tracklabel chr1 --out $outDirperl -alne '{ print if $F[0] eq "chr18"}' hg38.gff3 >hg38.chr18.gff3$rootDir/flatfile-to-json.pl --gff hg38.chr18.gff3 --tracklabel chr18 --out $outDir$rootDir/flatfile-to-json.pl --bed 2.bed --tracklabel test2 --out $outDirftp://ftp.ncbi.nih.gov/refseq/H_sapiens/RefSeqGene/GCF_000001405.25_refseqgene_alignments.gff3ftp://ftp.ncbi.nlm.nih.gov/genomes/H_sapiens/ARCHIVE/ANNOTATION_RELEASE.105/GFF/ref_GRCh37.p13_top_level.gff3.gzhttp://127.0.0.1/jbrowse/JBrowse-1.12.1/TF_data/json/human/tracks/peaks/chr18/trackData.jsonhttp://127.0.0.1/jbrowse/JBrowse-1.12.1/TF_data/raw/peaks/tmp.bed#https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-16-04
配置docker
sudo apt-get updatesudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609Dsudo apt-add-repository 'deb https://apt.dockerproject.org/repo ubuntu-xenial main'sudo apt-get updateapt-cache policy docker-enginesudo apt-get install -y docker-enginesudo systemctl status dockerps -Af | grep dockersudo usermod -aG docker $(whoami)id $(whoami)# you need to close you session in order to have the change taken into account.sudo usermod -aG docker jimmydockerdocker infodocker versionsudo docker search ubuntusudo docker run hello-worlddocker images# http://blog.thoward37.me/articles/where-are-docker-images-stored/sudo docker pull taunometsalu/clustvismkdir ~/customClustvis/cd ~/customClustvis/wget https://github.com/taunometsalu/ClustVis/archive/master.zipunzip master.zipdocker run --helpsudo docker run -d \--name customClustvis \-p 3840:3838 \-v ~/customClustvis/ClustVis-master/:/srv/shiny-server/:ro \taunometsalu/clustvis#To clear containers:docker rm -f $(docker ps -a -q)#To clear images:docker rmi -f $(docker images -a -q)#To clear volumes:docker volume rm $(docker volume ls -q)#To clear networks:docker network rm $(docker network ls | tail -n+2 | awk '{if($2 !~ /bridge|none|host/){ print $1 }}')
一些参考链接
http://dockone.io/article/111
Docker 命令大全 http://www.runoob.com/docker/docker-command-manual.html
