Omicscloud配置

来自OmicsWiki
Liuhebin讨论 | 贡献2026年3月31日 (二) 09:30的版本 →‎数据库导入
跳到导航 跳到搜索

mariadb数据库

安装:

sudo apt update

sudo apt install mariadb-server mariadb-client -y

安装后启动:

sudo systemctl start mariadb

sudo systemctl status mariadb

数据库导入

记得改cd文件夹名称或数据库名称。

cd /stor2/db_bk_20260324 && \
sudo mariadb -e "CREATE DATABASE IF NOT EXISTS fasta_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE DATABASE IF NOT EXISTS idmapping CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE DATABASE IF NOT EXISTS kegg_mtable CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE DATABASE IF NOT EXISTS omicscloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE DATABASE IF NOT EXISTS speciesdb_info CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE DATABASE IF NOT EXISTS userdb CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;" && \
sudo mariadb fasta_db < fasta_db_dump_20260324.sql && \
sudo mariadb idmapping < idmapping_dump_20260324.sql && \
sudo mariadb kegg_mtable < kegg_mtable_dump_20260324.sql && \
sudo mariadb omicscloud_db < omicscloud_db_dump_20260324.sql && \
sudo mariadb speciesdb_info < speciesdb_info_dump_20260324.sql && \
sudo mariadb userdb < userdb_dump_20260324.sql

导完后检查一下:

sudo mariadb -e "SHOW DATABASES;"

复制KEGG.7z到挂载文件夹

mkdir -p ~/mnt/database/KEGG

cp /stor2/db_bk_20260324/KEGG.7z ~/mnt/database/KEGG

设置root密码

sudo mariadb

ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';

GRANT ALL PRIVILEGES ON my_data.* TO 'omicscloud'@'localhost';

FLUSH PRIVILEGES;

exit;

DBeaver

下载DBeaver-ce并登录omicscloud账户,可查看和修改表格

LDAP

docker安装

sudo apt remove -y docker.io docker-compose docker-compose-v2 podman-docker containerd runc
sudo apt update
sudo apt install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo ${UBUNTU_CODENAME}) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl enable --now docker
sudo systemctl status docker
sudo docker run hello-world
docker compose version

如果docker网络有问题:

sudo tee /etc/resolv.conf > /dev/null <<'EOF'
nameserver 223.5.5.5
nameserver 119.29.29.29
nameserver 8.8.8.8
EOF

sudo systemctl restart docker

创建docker-compose.yml

services:

  #ldap服务
  openldap:
    image: osixia/openldap
    container_name: openldap-server
    hostname: ldap-server
    restart: always
    networks:
      - ldap
    ports:
      - '389:389'
      - '636:636'
    volumes:
      - /opt/openldap/ldap:/var/lib/ldap
      - /opt/openldap/slapd.d:/etc/ldap/slapd.d
      - /opt/openldap/certs:/container/service/slapd/assets/certs
    environment:
      - LDAP_ORGANISATION=omicsolution  #组织名称,需要改
      - LDAP_DOMAIN=omicsolution.com    #域名,需要改
      - LDAP_ADMIN_USERNAME=admin
      - LDAP_ADMIN_PASSWORD=123456
      #- LDAP_USERS=user01,user02
      #- LDAP_PASSWORDS=password1,password2

  #页面管理
  phpldapadmin:
    image: osixia/phpldapadmin
    container_name: openldap-admin
    hostname: ldap-admin
    restart: always
    privileged: true #授予真实root权限
    networks:
      - ldap
    ports:
      - '50080:80'
      #- '443:443'  #PHPLDAPADMIN_HTTPS为true有效
    environment:
      - PHPLDAPADMIN_HTTPS=false
      - PHPLDAPADMIN_LDAP_HOSTS=ldap-server   #指向openldap的hostname
    depends_on:
      - openldap


networks:
  ldap:
    #driver: bridge

装好后,进入 docker-compose.yml 所在目录,启动:

sudo mkdir -p /opt/openldap/ldap
sudo mkdir -p /opt/openldap/slapd.d
sudo mkdir -p /opt/openldap/certs

sudo docker compose -p ldap -f /home/lyx/文档/docker-compose.yml up -d

LDAP导入

把 ldif-export.txt 导进去:

phpldapadmin登录的用户名是cn=admin,dc=omicsolution,dc=com

密码在yml文件里

勾上Don't stop on errors

环境需要的软件

R和shiny

sudo tee /etc/apt/sources.list.d/ubuntu.sources > /dev/null <<'EOF'
Types: deb
URIs: http://archive.ubuntu.com/ubuntu/
Suites: noble noble-updates noble-backports
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

Types: deb
URIs: http://security.ubuntu.com/ubuntu/
Suites: noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
EOF


sudo apt update
sudo apt --fix-broken install
sudo apt full-upgrade -y


sudo apt install -y r-base r-base-dev
R --version

sudo R -e "install.packages('shiny', repos='https://cran.rstudio.com/')"
sudo apt install -y gdebi-core
cd /tmp
wget https://download3.rstudio.org/ubuntu-20.04/x86_64/shiny-server-1.5.23.1030-amd64.deb
sudo gdebi -n shiny-server-1.5.23.1030-amd64.deb

sudo systemctl enable --now shiny-server
sudo systemctl status shiny-server

安装R包

ubuntu依赖:

sudo apt update
sudo apt-get install libcurl4-openssl-dev libssl-dev libxml2-dev default-jdk
sudo apt install -y \
  build-essential gfortran cmake make \
  libcurl4-openssl-dev libssl-dev libxml2-dev \
  libcairo2-dev libxt-dev pkg-config \
  libfontconfig1-dev libfreetype6-dev \
  libharfbuzz-dev libfribidi-dev \
  libjpeg-dev libpng-dev libtiff5-dev libglib2.0-dev \
  libglu1-mesa-dev freeglut3-dev mesa-common-dev \
  default-jdk r-base-dev

sudo apt install -y \
  build-essential gfortran pkg-config \
  libgl1-mesa-dev libglu1-mesa-dev freeglut3-dev mesa-common-dev \
  libx11-dev libxt-dev libxmu-dev libxi-dev \
  default-jdk openjdk-17-jdk-headless

sudo apt install -y libtirpc-dev default-jdk openjdk-17-jdk-headless

sudo R CMD javareconf

R包: 下载安装r-studio

# 安装所有包(智能检测源:优先 CRAN,失败后尝试 Bioconductor)
# 运行前请确保已安装 BiocManager

# 首先安装 BiocManager(如果未安装)
if (!requireNamespace("BiocManager", quietly = TRUE)) {
  install.packages("BiocManager")
}

# 定义所有包列表(合并所有包,去重)
all_packages <- unique(c(
  # 原 CRAN 包
  "abind", "ade4", "ape", "aplot", "AsioHeaders", "askpass", "async",
  "backports", "base64url", "BH", "bit", "bit64", "bitops", "blob",
  "brew", "brio", "broom", "Cairo", "calibrate", "callr", "car",
  "carData", "caTools", "cellranger", "chromote", "chron", "clipr",
  "clock", "colorspace", "colourpicker", "conflicted", "cookies",
  "corpcor", "corrplot", "countrycode", "cowplot", "cpp11", "credentials",
  "crosstalk", "curl", "data.table", "DBI", "dbplyr", "dendextend",
  "Deriv", "desc", "devtools", "diffobj", "doBy", "doParallel", "doRNG",
  "downlit", "downloader", "dplyr", "dragulaR", "DT", "dtplyr",
  "echarts4r", "ellipse", "ellipsis", "emmeans", "estimability",
  "evaluate", "factoextra", "FactoMineR", "fansi", "farver", "flashClust",
  "forcats", "foreach", "formatR", "Formula", "fresh", "futile.logger",
  "futile.options", "future", "gargle", "gdata", "generics", "gert",
  "getopt", "ggdendro", "ggfun", "ggnewscale", "ggplot2", "ggplotify",
  "ggpubr", "ggrepel", "ggsci", "ggseqlogo", "ggsignif", "ggstar", "gh",
  "gitcreds", "globals", "googledrive", "googlesheets4", "GOplot",
  "gplots", "gridBase", "gridExtra", "gridGraphics", "gsignal", "gsubfn",
  "gtable", "gtools", "hash", "haven", "highr", "hms", "htmlwidgets",
  "httr", "httr2", "ids", "igraph", "ini", "isoband", "iterators",
  "itertools", "KEGGgraph", "knitr", "labeling", "lambda.r", "lazyeval",
  "leaps", "listenv", "litedown", "lme4", "lubridate", "markdown",
  "Matrix", "MatrixModels", "matrixStats", "mclust", "microbenchmark",
  "miniUI", "minqa", "missForest", "mixOmics", "modelr", "multcompView",
  "mvtnorm", "nloptr", "numDeriv", "ontologyIndex", "openssl", "openxlsx",
  "optparse", "parallelly", "patchwork", "pathview", "pbkrtest",
  "pdftools", "Peptides", "pheatmap", "pillar", "pixmap", "pkgbuild",
  "pkgconfig", "pkgdown", "pkgload", "PKI", "plogr", "plotly", "plotrix",
  "plyr", "png", "polynom", "pracma", "praise", "prettyunits",
  "processx", "profvis", "progress", "proto", "ps", "purrr", "qpdf",
  "qqman", "quantreg", "randomForest", "rARPACK", "rbibutils",
  "rChoiceDialogs", "rcmdcheck", "RColorBrewer", "RcppArmadillo",
  "RcppEigen", "RCurl", "Rdpack", "reactR", "reactwidgets", "readr",
  "readxl", "reformulas", "relayer", "rematch", "rematch2", "remotes",
  "reprex", "reshape", "reshape2", "rgl", "rhandsontable", "rJava",
  "rjson", "RJSONIO", "rlist", "RMariaDB", "rmarkdown", "rngtools",
  "ropls", "roxygen2", "RPostgreSQL", "rprojroot", "RSpectra", "RSQLite",
  "rstatix", "rstudioapi", "rversions", "rvest", "scales",
  "scatterplot3d", "segmented", "selectr", "seqinr", "sessioninfo",
  "sfsmisc", "shiny.i18n", "shinyalert", "shinyBS", "shinybusy",
  "shinycssloaders", "shinydashboard", "shinydashboardPlus", "shinyFiles",
  "shinyjs", "shinysky", "shinythemes", "shinyWidgets", "simsalapar",
  "snow", "sp", "SparseM", "sqldf", "statmod", "stringi", "stringr",
  "svDialogs", "svGUI", "sys", "systemfonts", "testthat", "textshaping",
  "tibble", "tidyr", "tidyselect", "tidytree", "tidyverse", "timechange",
  "tinytex", "tzdb", "urlchecker", "usethis", "utf8", "uuid", "V8",
  "vctrs", "VennDiagram", "viridis", "viridisLite", "visNetwork", "vroom",
  "waiter", "waldo", "webshot2", "websocket", "wesanderson", "whisker",
  "xfun", "XML", "xml2", "xopen", "yaml", "yulab.utils", "zip",
  "base64enc", "bslib", "cachem", "cli", "commonmark", "crayon", "digest",
  "fastmap", "fontawesome", "fs", "glue", "htmltools", "httpuv",
  "jquerylib", "jsonlite", "later", "lifecycle", "magrittr", "memoise",
  "mime", "promises", "R6", "rappdirs", "Rcpp", "rlang", "sass", "shiny",
  "sourcetools", "withr", "xtable",
  
  # 原 Bioconductor 包
  "affy", "affyio", "AnnotationDbi", "Biobase", "BiocBaseUtils",
  "BiocGenerics", "BiocManager", "BiocParallel", "BiocVersion",
  "Biostrings", "DelayedArray", "GenomeInfoDb", "GenomeInfoDbData",
  "GenomicRanges", "graph", "impute", "IRanges", "KEGGREST", "limma",
  "MatrixGenerics", "MultiAssayExperiment", "MultiDataSet", "org.Hs.eg.db",
  "preprocessCore", "qvalue", "Rgraphviz", "S4Arrays", "S4Vectors",
  "SparseArray", "STRINGdb", "SummarizedExperiment", "UCSC.utils", "vsn",
  "XVector"
))

# 检查包是否已安装
is_installed <- function(pkg) {
  requireNamespace(pkg, quietly = TRUE)
}

# 从 CRAN 安装
install_from_cran <- function(pkg) {
  install.packages(pkg, dependencies = FALSE, quiet = FALSE)
}

# 从 Bioconductor 安装
install_from_bioc <- function(pkg) {
  BiocManager::install(pkg, update = FALSE, ask = FALSE, quiet = FALSE)
}

# 尝试从指定源安装,如果失败则返回 FALSE
try_install <- function(pkg, install_func, source_name) {
  tryCatch({
    cat("  尝试从", source_name, "安装...\n")
    install_func(pkg)
    cat("  ✓ 从", source_name, "安装成功\n")
    return(TRUE)
  }, error = function(e) {
    cat("  ✗ 从", source_name, "安装失败:", e$message, "\n")
    return(FALSE)
  })
}

# 智能安装函数:先尝试 CRAN,失败则尝试 Bioconductor
smart_install <- function(pkg) {
  # 跳过已安装的包
  if (is_installed(pkg)) {
    cat("⊙ 已跳过:", pkg, "(已安装)\n")
    return(TRUE)
  }
  
  cat("\n正在安装:", pkg, "\n")
  
  # 先尝试从 CRAN 安装
  if (try_install(pkg, install_from_cran, "CRAN")) {
    return(TRUE)
  }
  
  # CRAN 失败,尝试从 Bioconductor 安装
  cat("  CRAN 安装失败,尝试从 Bioconductor 安装...\n")
  if (try_install(pkg, install_from_bioc, "Bioconductor")) {
    return(TRUE)
  }
  
  # 都失败
  cat("  ✗✗✗ 安装失败:", pkg, "(CRAN 和 Bioconductor 均失败)\n")
  return(FALSE)
}

# 执行安装
cat("========================================\n")
cat("开始智能安装所有包...\n")
cat("安装策略: 优先 CRAN → 失败则尝试 Bioconductor\n")
cat("========================================\n\n")

# 记录安装结果
success_count <- 0
fail_count <- 0
failed_packages <- c()

for (pkg in all_packages) {
  result <- smart_install(pkg)
  if (result) {
    success_count <- success_count + 1
  } else {
    fail_count <- fail_count + 1
    failed_packages <- c(failed_packages, pkg)
  }
}

# 输出统计信息
cat("\n\n========================================\n")
cat("安装完成!统计信息:\n")
cat("========================================\n")
cat("总包数:", length(all_packages), "\n")
cat("成功安装/已存在:", success_count, "\n")
cat("安装失败:", fail_count, "\n")

if (fail_count > 0) {
  cat("\n失败的包列表:\n")
  for (pkg in failed_packages) {
    cat("  -", pkg, "\n")
  }
  cat("\n建议:\n")
  cat("1. 检查网络连接\n")
  cat("2. 检查是否有系统依赖缺失(如 rJava 需要 Java)\n")
  cat("3. 可以尝试单独安装失败的包并查看详细错误信息\n")
}

cat("\n========================================\n")

修改系统文件

修改/home/用户名/shiny-server/omicscloud/etc/config/conf配置文件:

  • 用户名都替换一下
  • server_href http://localhost/omicscloud/
  • dep_content是各app的名称和权限设置:文件前缀名:显示名:类型:权限数字。文件前缀名就是etc/dep里的各个*_func_lib.r *_output.r这种,类型有app\link\module,对应不同的加载方式,module可以参考user management,link可以参考omicsgraph
  • db_host localhost ;db_host_string localhost
  • ldap_server_url ldap://localhost
  • server_data_path /home/lyx/mnt/omicscloud/data/