Блестящее приложение не загружается с графикой - PullRequest
0 голосов
/ 01 января 2019

У меня блестящее приложение, которое отлично работает на моей локальной машине.Я развернул приложение на блестящем сервере, работающем на centos-release-6-9.el6.12.3.x86_64.Содержимое приложения загружается без какой-либо графики, как показано ниже:

enter image description here

И я получаю следующее сообщение в JS consol.

Loading failed for the <script> with source “http://mamged:3838/v01/shared/bootstrap/shim/respond.min.js”. v01:18:1
ReferenceError: Shiny is not defined[Learn More] v01:21:1
Loading failed for the <script> with source “http://mamged:3838/v01/shinyjs/shinyjs-default-funcs.js”. v01:38:1
ReferenceError: shinyjs is not defined[Learn More] v01:39:1
Loading failed for the <script> with source “http://mamged:3838/v01/message-handler.js”. v01:40:1
ReferenceError: jQuery is not defined[Learn More]
    [Exception... "Favicon at "http://mamged:3838/favicon.ico" failed to load: Not Found." nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: resource:///modules/FaviconLoader.jsm :: onStopRequest :: line 156" data: no]

Я не уверен, что происходит не так.

РЕДАКТИРОВАТЬ

Я поместил пример кода, чтобы воспроизвести пример на сервере.

server.r

# clear console
cat("\014")


# Defining the size of file to be accepted. -1 to accept any size.
options(shiny.maxRequestSize = -1) 


# Clear workspace environment
rm(list = ls())    

# set locale
Sys.setlocale('LC_ALL','C') 

# main function
shinyServer(function(input, output,session) {

})

ui.r

library(shiny)
library(shinyjs)


filenames <- list.files(path = "data",pattern="\\.txt$")
names(filenames) <- gsub(pattern = "\\.txt$", "", filenames)
shinyUI(fluidPage(theme = "bootstrap.css",
                  (navbarPage("MAMGEDCDE",
                              position = c("fixed-top"),
                              fluid = TRUE, selected = "none", 
                              navbarMenu("Help", icon = icon("fa fa-infocircle"),

                                         tabPanel(
                                           list(
                                             a("Reference Manual", 
                                               target="_blank", href = "MAMGEDManual.pdf"),

                                             a("GPLs Supported",
                                               target="_blank", href="gpl.pdf"),

                                             a("Video Tutorials",
                                               downloadLink("AbsoluteExpression", " Absolute Expression", class=" fa fa-cloud-download"),
                                               downloadLink("DifferentialExpression", " Differential Expression", class=" fa fa-cloud-download")
                                               )
                                             ))
                                         ),

                              navbarMenu("Sample Data",
                                         tabPanel(
                                           list(
                                             downloadLink("AffymetrixData", " Affymetrix", class=" fa fa-cloud-download"),
                                             downloadLink("CodelinkData", " Codelink", class=" fa fa-cloud-download"),
                                             downloadLink("IlluminaData", " Illumina", class=" fa fa-cloud-download")
                                             ))
                                         ),

                              navbarMenu("Stand-Alone Version", icon = icon("fa fa-infocircle"),
                                         tabPanel(
                                           list(
                                             downloadLink("CodeandData", " MAMGED", class=" fa fa-cloud-download"),
                                             a("Stand-alone Manual", target = "_blank", href= "Stand-alone.pdf")
                                             )
                                           )
                                         )
                              )
                   ),

                  br(),
                  br(),
                  useShinyjs(),  ## initialize shinyjs to reset input files.
                  sidebarLayout(
                    sidebarPanel(
                      br(),

                      width = 4,
                      tabsetPanel(id = "tabs",
                                  tabPanel(id = "tab1", value = "tab1",
                                           h5("Upload Data Files"),
                                           br(),
                                           br(),

                                           fileInput("files", label = "Upload Data Files",
                                                     multiple = "TRUE",
                                                     accept=c('text/csv','text/comma-separated-values,
                                                              text/plain', '.csv','.cel','.TXT','.txt', '.zip')),

                                           uiOutput('Display_source_data'),
                                           br(),

                                           textInput("mailid", "Enter Email ID", placeholder = "Enter your email id")
                                           ),

                                  tabPanel(id = "tab2", value= "tab2",
                                           h5("Download Data",style="bold"),
                                           br(),
                                           br(),
                                           br(),
                                           textInput("jobid", "Enter Job ID", placeholder = "Enter your job id")
                                           )),
                      br(),
                      br(),

                      tags$head(tags$script(src = "message-handler.js")),
                      fluidRow(
                        conditionalPanel(
                          condition = "input.tabs == 'tab1'",
                          column(4,
                                 actionButton("Submit", label = "Submit"))
                          ),
                        conditionalPanel(
                          condition = "input.tabs == 'tab2'",
                          br(),
                          column(4,
                                 uiOutput("button")
                                 )),

                        column(4,
                               actionButton("Reset_Input", label = "Reset"))
                        ),
                      br()

                      ),

                    mainPanel(
                      titlePanel(
                        headerPanel( 
                          h2( "Analysis of Microarray Gene Expression Data",
                              align="center", style="bold"
                              )
                          )
                        ),
                      h5("test page")
                      )
                    )
                  ))

Отлично работает на локальном компьютере.

Еще одна вещь, нужно ли мне устанавливать r пакеты с помощью sudo -i R, чтобы это работало.Я установил все пакеты без sudo.

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Вероятно, сервер поставки работает как специальный пользователь.
Предположим, что имя пользователя на других серверах похоже на "www-data".
Проблема в том, что файлы в веб-каталоге, возможно, могут бытьдоступ к самому блестящему серверу, но не к клиентам.
Короче говоря: настройте Unix-file-права для всех файлов, чтобы общий клиент мог получить доступ к файлам.Это должно быть сделано для всех файлов, которые должны быть общедоступными, таких как изображения, css-файлы и js-файлы.Конечно, он может включать и любые другие файлы, которые вы хотите использовать, например, PDF, Office-файлы и т. Д.
Unix-права должны быть 0744 для удобства чтения, последняя цифра для общественности, и в вашем случае, вероятно,изменить на chmod.
Для подробного объяснения относительно chmod вы можете отобразить man-страницу в командной строке с помощью man chmod.

В некоторых средах обычно все "публичные" файлыотсортированы в папках с именами «public» или «Public», то рекурсивно меняются только права доступа к файлам этих папок.Даже для общих папок здесь я использую множественное число, поскольку в разных каталогах всегда может быть несколько папок с одинаковым именем.На вашем сервере папка shared имеет ту же функциональность, но не все публичные файлы отсортированы в ней.Если вы предпочитаете имя папки shared вместо public, вам никогда не придется изменять, а только соответствующим образом настраивать права.

Причина, о которой я упоминал о пользователе-сервере "www-data" выше, заключается в том, чточто файлы в веб-каталоге должны иметь этого пользователя в качестве владельца, но не обязательно должны быть публичными.Все ваши r-файлы должны быть приватными, за исключением файлов, которые следует вызывать прямо в браузере.Таким образом, все файлы разделены публично и приватно.Владелец файла может быть настроен с помощью chown, который также может вызываться из командной строки, а с помощью man chown вы также можете показать подробное описание.

Об открытых r-файлах. Я не знаю, если онидолжен быть исполняемым на блестящих серверах, , если это так , то права доступа к файлам для этих файлов должны быть 0755.

Обновление
Также убедитесь,что все файлы существуют в вашем www-каталоге и что домен связан с нужной папкой.

0 голосов
/ 11 января 2019

Кажется, в вашем приложении отсутствует пакет.Проверьте журнал приложения по умолчанию, расположенный в /var/log/shiny-server.Также вы можете добавить следующую опцию в ваш конфигурационный файл /etc/shiny-server/shiny-server.conf:

preserve_logs true; (at the top level)

После перезапуска Shiny Server снова проверьте ваш лог-файл.Ищите недостающие пакеты или библиотеки.Надеюсь, это поможет.

...