如果有一个新的服务器你会做什么?
已经折腾过好几个云服务器了,发现对自己的技能提升很有帮助,所以分享一下自己的心得体会。当然如果你本身是计算机专业的,可以略过了。即使你没有云服务器,也可以在自己的电脑上面安装一个虚拟机安装ubuntu,或者直接拿mac来折腾。当然,mac折腾坏了我就不负责咯。
开通网页服务
## https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu-16-04
sudo apt-get install apache2 mysql-server mysql-client php5 php5-gd php5-mysql
sudo apt-get install mysql-server
sudo apt-get install php libapache2-mod-php php-mcrypt php-mysql
#sudo apt-get install phpmyadmin
## 上面的软件安装完毕后,就可以直接在浏览器里面输入下面的IP进行访问啦
127.0.0.1
127.0.0.1/info.php
## 如果你没有公网IP,就直接在你的云服务器本身自带的浏览器里面输入 localhost 吧!
## 当然网页服务的权限也要设置好,需要自己慢慢搜索理解
sudo chgrp -R www-data /var/www
sudo usermod -a -G www-data jmzeng
sudo chmod -R 2770 /var/www/html
安装必备的库
操作系统本身可以非常的精简,比如docker里面的ubuntu就一百多M的大小,但是真正要想用起来,仅仅是操作系统肯定是不够的,需要安装各种各样的软件,这些软件就需要各种各样的库文件的支持。这里,我们一劳永逸运行下面的代码:
sudo apt-get -y install libcurl4-gnutls-dev
sudo apt-get -y install libxml2-dev
sudo apt-get -y install libssl-dev
sudo 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 update
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 51716619E084DAB9
sudo apt-get update
sudo apt-get install r-base-core
R --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-core
wget https://download2.rstudio.org/rstudio-server-0.99.896-amd64.deb
sudo gdebi rstudio-server-0.99.896-amd64.deb
127.0.0.1:8787
wget https://download3.rstudio.org/ubuntu-12.04/x86_64/shiny-server-1.4.2.786-amd64.deb
sudo gdebi shiny-server-1.4.2.786-amd64.deb
127.0.0.1:3838
sudo adduser jimmy
sudo groupadd shiny-apps
sudo usermod -aG shiny-apps jimmy
sudo usermod -aG shiny-apps shiny
cd /srv/shiny-server
sudo 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 R
source("https://bioconductor.org/biocLite.R")
biocLite("Biobase")
biocLite("Sushi")
sudo systemctl restart shiny-server
sudo 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 -p
mysql -h 127.0.0.1 -u jmzeng -p
mysql -h localhost -u jmzeng -p
mysql -h 127.0.0.1 -u jmzeng -p
head /etc/mysql/my.cnf
head /etc/mysql/mysql.conf.d/mysqld.cnf
netstat -an | grep 3306
ps -Af | grep mysqld
sudo systemctl status mysql
ls -lh /var/run/mysqld
sudo 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 update
sudo apt-get install nginx
sudo systemctl start nginx
sudo systemctl status nginx
## list the applications configurations for the firewall
sudo ufw app list
sudo ufw allow 'Nginx HTTP'
sudo ufw status
## server's public IP address
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
curl -4 icanhazip.com
ls /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.zip
cd JBrowse-x.x.x
#运行目录内的setup.sh文件
./setup.sh
127.0.0.1/jbrowse/JBrowse-1.12.1/index.html?data=sample_data/json/volvox
127.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.fasta
outDir=/var/www/html/jbrowse/JBrowse-1.12.1/TF_data/json/human
rootDir=/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 $outDir
perl -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 $outDir
ftp://ftp.ncbi.nih.gov/refseq/H_sapiens/RefSeqGene/GCF_000001405.25_refseqgene_alignments.gff3
ftp://ftp.ncbi.nlm.nih.gov/genomes/H_sapiens/ARCHIVE/ANNOTATION_RELEASE.105/GFF/ref_GRCh37.p13_top_level.gff3.gz
http://127.0.0.1/jbrowse/JBrowse-1.12.1/TF_data/json/human/tracks/peaks/chr18/trackData.json
http://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 update
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
sudo apt-add-repository 'deb https://apt.dockerproject.org/repo ubuntu-xenial main'
sudo apt-get update
apt-cache policy docker-engine
sudo apt-get install -y docker-engine
sudo systemctl status docker
ps -Af | grep docker
sudo 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 jimmy
docker
docker info
docker version
sudo docker search ubuntu
sudo docker run hello-world
docker images
# http://blog.thoward37.me/articles/where-are-docker-images-stored/
sudo docker pull taunometsalu/clustvis
mkdir ~/customClustvis/
cd ~/customClustvis/
wget https://github.com/taunometsalu/ClustVis/archive/master.zip
unzip master.zip
docker run --help
sudo 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