[Archivesspace_Users_Group] Partial success with virtual hosts, help requested
Brian Hoffman
brianjhoffman at gmail.com
Wed Jun 24 17:36:13 EDT 2015
Hello,
This seems like a multipart issue, but here are some observations that may help.
1) There is a general guide for configuring HTTPS proxies here: https://github.com/archivesspace/archivesspace/blob/master/README_HTTPS.md
2) Any lines in the ArchivesSpace config.rb file that begin with the hash character (‘#’) will be ignored. So, the example you sent is not having any effect on your system.
3) You should not populate the backend_url and frontend_url values with proxy urls - the applications need to know the actual location of each other.
4) Instead, use the frontend_proxy_url and public_proxy_url values to configure your proxies. So your config should look something like:
AppConfig[:backend_url] = "http://localhost:8089"
AppConfig[:frontend_url] = "http://localhost:8080"
AppConfig[:frontend_prefix] = proc { "#{URI(AppConfig[:frontend_url]).path}/".gsub(%r{/+$}, "/") }
AppConfig[:solr_url] = "http://localhost:8090"
AppConfig[:indexer_url] = "http://localhost:8091"
AppConfig[:public_url] = "http://localhost:8081"
AppConfig[:public_prefix] = proc { "#{URI(AppConfig[:public_url]).path}/".gsub(%r{/+$}, "/") }
AppConfig[:frontend_proxy_url] = "https://aspdemo-staff.library.louisville.edu"
AppConfig[:public_proxy_url] = "http://aspdemo-public.library.louisville.edu"
I hope this helps.
Brian
On Jun 24, 2015, at 5:03 PM, calvin.miracle at louisville.edu wrote:
>
> Hello all,
>
> We have had some partial success in getting ArchivesSpace services setup as named virtual hosts
> under Apache. But we have some problems that we need help with.
>
> Our goals:
> - Provide separate URLS for staff login vs public interface;
> - Secure login to staff interface from off-campus;
> - Acceptance of production server to our enterprise security group, for visibility on the public internet;
> - Publish a URL for search interface that does not use port numbers.
>
> Our setup:
> - Our demo guest is meant to be a model for our production guest.
> - Our ArchivesSpace 1.1.2 demo guest runs under CentOS 7.
> - On the same guest we have httpd 2.4 running, listening on ports 80 and 443.
> - AS brings its services up on localhost 8080, 8081, 8089, 8090, and 8091.
> - On our demo AS guest, we are using a self-signed SSL certificate to simulate an
> eventual real SSL on our production guest. This creates a security exception that
> we can bypass at the browser. We’re trying to exercise the SSL Engine options in
> httpd.
> - Guest firewall ports set as: 80 and 443 open to campus network, AS application ports
> only available to localhost (the AS demo guest).
> - Guest IP address is 136.165.112.26. We have asked our campus network services
> to make this a permanent IP address for this guest; the guest gets it IP address via
> DHCP client
> - IP names assigned:
> aspdemo.library.louisville.edu (A-record, canonical, base name) to represent the guest itself
> aspdemo-staff.library.louisville.edu (C-name alias) to represent port 8080 application services
> aspdemo-public.library.louisville.edu (C-name alias) to represent port 8081 application services
> - httpd and config.rb configuration files appended below.
> - Demo instance of AS is using the supplied SOLR database engine.
>
> Here’s what we are seeing:
> - Browse to http://aspdemo.library.louisville.edu causes redirect to aspdemo-public, as expected.
> - Browse to http://aspdemo-public.library.louisville.edu shows AS application public page, as expected.
> - Browse to https://aspdemo-staff.library.louisville.edu shows security exception (1st time),
> then AS application frontend page, as expected.
> - Searches work OK on the public page.
> - Authentic users can login on aspdemo-staff page.
>
> - Our archives librarian see problems with imports. AS told her the import number
> was not found. She also reports problems in creating accession records; the system
> told her “The requested URL /accessions/72/edit was not found on this server.”
>
> - She also reports problems with editing existing records, creating new records one at a time
> from the accessions interface – anything that has to do with editing the contents of the
> database, basically everything we do except search and browse.
>
> Can anyone please give us some advice on these issues? We feel like we’re close to a vhost solution,
> but we are having problems getting AS settled into the scheme.
>
> Thanks,
>
> -- Calvin Miracle, University of Louisville Libraries
>
> httpd.conf
> -------------------------------------------------------------------------------------------------------------------------------
> #
> # This is the main Apache HTTP server configuration file. It contains the
> # configuration directives that give the server its instructions.
> # See <URL:http://httpd.apache.org/docs/2.4/> for detailed information.
> # In particular, see
> # <URL:http://httpd.apache.org/docs/2.4/mod/directives.html>
> # for a discussion of each configuration directive.
> #
> # Do NOT simply read the instructions in here without understanding
> # what they do. They're here only as hints or reminders. If you are unsure
> # consult the online docs. You have been warned.
> #
> # Configuration and logfile names: If the filenames you specify for many
> # of the server's control files begin with "/" (or "drive:/" for Win32), the
> # server will use that explicit path. If the filenames do *not* begin
> # with "/", the value of ServerRoot is prepended -- so 'log/access_log'
> # with ServerRoot set to '/www' will be interpreted by the
> # server as '/www/log/access_log', where as '/log/access_log' will be
> # interpreted as '/log/access_log'.
>
> #
> # ServerRoot: The top of the directory tree under which the server's
> # configuration, error, and log files are kept.
> #
> # Do not add a slash at the end of the directory path. If you point
> # ServerRoot at a non-local disk, be sure to specify a local disk on the
> # Mutex directive, if file-based mutexes are used. If you wish to share the
> # same ServerRoot for multiple httpd daemons, you will need to change at
> # least PidFile.
> #
> ServerRoot "/etc/httpd"
>
> #
> # Listen: Allows you to bind Apache to specific IP addresses and/or
> # ports, instead of the default. See also the <VirtualHost>
> # directive.
> #
> # Change this to Listen on specific IP addresses as shown below to
> # prevent Apache from glomming onto all bound IP addresses.
> #
> #Listen 12.34.56.78:80
> Listen 80
>
>
> #
> # Dynamic Shared Object (DSO) Support
> #
> # To be able to use the functionality of a module which was built as a DSO you
> # have to place corresponding `LoadModule' lines at this location so the
> # directives contained in it are actually available _before_ they are used.
> # Statically compiled modules (those listed by `httpd -l') do not need
> # to be loaded here.
> #
> # Example:
> # LoadModule foo_module modules/mod_foo.so
> #
> Include conf.modules.d/*.conf
>
> #
> # If you wish httpd to run as a different user or group, you must run
> # httpd as root initially and it will switch.
> #
> # User/Group: The name (or #number) of the user/group to run httpd as.
> # It is usually good practice to create a dedicated user and group for
> # running httpd, as with most system services.
> #
> User apache
> Group apache
>
> # 'Main' server configuration
> #
> # The directives in this section set up the values used by the 'main'
> # server, which responds to any requests that aren't handled by a
> # <VirtualHost> definition. These values also provide defaults for
> # any <VirtualHost> containers you may define later in the file.
> #
> # All of these directives may appear inside <VirtualHost> containers,
> # in which case these default settings will be overridden for the
> # virtual host being defined.
> #
>
> #
> # ServerAdmin: Your address, where problems with the server should be
> # e-mailed. This address appears on some server-generated pages, such
> # as error documents. e.g. admin at your-domain.com
> #
> ServerAdmin root at localhost
>
> #
> # ServerName gives the name and port that the server uses to identify itself.
> # This can often be determined automatically, but we recommend you specify
> # it explicitly to prevent problems during startup.
> #
> # If your host doesn't have a registered DNS name, enter its IP address here.
> #
> #ServerName www.example.com:80
> ServerName aspdemo.library.louisville.edu:80
>
> #
> # Deny access to the entirety of your server's filesystem. You must
> # explicitly permit access to web content directories in other
> # <Directory> blocks below.
> #
> <Directory />
> AllowOverride none
> Require all denied
> </Directory>
>
> #
> # Note that from this point forward you must specifically allow
> # particular features to be enabled - so if something's not working as
> # you might expect, make sure that you have specifically enabled it
> # below.
> #
>
> #
> # DocumentRoot: The directory out of which you will serve your
> # documents. By default, all requests are taken from this directory, but
> # symbolic links and aliases may be used to point to other locations.
> #
> DocumentRoot "/var/www/html"
>
> #
> # Relax access to content within /var/www.
> #
> <Directory "/var/www">
> AllowOverride None
> # Allow open access:
> Require all granted
> </Directory>
>
> # Further relax access to the default document root:
> #<Directory "/var/www/html">
> #
> # Possible values for the Options directive are "None", "All",
> # or any combination of:
> # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
> #
> # Note that "MultiViews" must be named *explicitly* --- "Options All"
> # doesn't give it to you.
> #
> # The Options directive is both complicated and important. Please see
> # http://httpd.apache.org/docs/2.4/mod/core.html#options
> # for more information.
> #
> # Options Indexes FollowSymLinks
>
> #
> # AllowOverride controls what directives may be placed in .htaccess files.
> # It can be "All", "None", or any combination of the keywords:
> # Options FileInfo AuthConfig Limit
> #
> # AllowOverride All
>
> #
> # Controls who can get stuff from this server.
> #
> # Require all denied
> #</Directory>
>
> #
> # DirectoryIndex: sets the file that Apache will serve if a directory
> # is requested.
> #
> <IfModule dir_module>
> DirectoryIndex index.html
> </IfModule>
>
>
> # cbm, June 2015: named virtual hosts added
>
> # NameVirtualHost *:443 this keyword will be deprecated
>
> <VirtualHost *:80>
> ServerName aspdemo.library.louisville.edu
> DocumentRoot /var/www/html
> Options Indexes FollowSymLinks
> </VirtualHost>
>
> <VirtualHost *:443>
> ServerName aspdemo-staff.library.louisville.edu
> SSLEngine On
> SSLCertificateFile "/etc/ssl/certs/self_signed/ASdemo_selfsigned.crt"
> SSLCertificateKeyFile "/etc/ssl/certs/self_signed/ASdemo_selfsigned.key"
> ProxyPreserveHost On
> ProxyPass / http://localhost:8080/
> ProxyPassReverse / http://localhost:8080/
> </VirtualHost>
>
> <VirtualHost *:80>
> ServerName aspdemo-public.library.louisville.edu
> ProxyPreserveHost Off
> ProxyPass / http://localhost:8081/
> ProxyPassReverse / http://localhost:8081/
> </VirtualHost>
>
>
>
> #
> # The following lines prevent .htaccess and .htpasswd files from being
> # viewed by Web clients.
> #
> <Files ".ht*">
> Require all denied
> </Files>
>
> #
> # ErrorLog: The location of the error log file.
> # If you do not specify an ErrorLog directive within a <VirtualHost>
> # container, error messages relating to that virtual host will be
> # logged here. If you *do* define an error logfile for a <VirtualHost>
> # container, that host's errors will be logged there and not here.
> #
> ErrorLog "logs/error_log"
>
> #
> # LogLevel: Control the number of messages logged to the error_log.
> # Possible values include: debug, info, notice, warn, error, crit,
> # alert, emerg.
> #
> LogLevel warn
>
> <IfModule log_config_module>
> #
> # The following directives define some format nicknames for use with
> # a CustomLog directive (see below).
> #
> LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
> LogFormat "%h %l %u %t \"%r\" %>s %b" common
>
> <IfModule logio_module>
> # You need to enable mod_logio.c to use %I and %O
> LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
> </IfModule>
>
> #
> # The location and format of the access logfile (Common Logfile Format).
> # If you do not define any access logfiles within a <VirtualHost>
> # container, they will be logged here. Contrariwise, if you *do*
> # define per-<VirtualHost> access logfiles, transactions will be
> # logged therein and *not* in this file.
> #
> #CustomLog "logs/access_log" common
>
> #
> # If you prefer a logfile with access, agent, and referer information
> # (Combined Logfile Format) you can use the following directive.
> #
> CustomLog "logs/access_log" combined
> </IfModule>
>
> <IfModule alias_module>
> #
> # Redirect: Allows you to tell clients about documents that used to
> # exist in your server's namespace, but do not anymore. The client
> # will make a new request for the document at its new location.
> # Example:
> # Redirect permanent /foo http://www.example.com/bar
>
> #
> # Alias: Maps web paths into filesystem paths and is used to
> # access content that does not live under the DocumentRoot.
> # Example:
> # Alias /webpath /full/filesystem/path
> #
> # If you include a trailing / on /webpath then the server will
> # require it to be present in the URL. You will also likely
> # need to provide a <Directory> section to allow access to
> # the filesystem path.
>
> #
> # ScriptAlias: This controls which directories contain server scripts.
> # ScriptAliases are essentially the same as Aliases, except that
> # documents in the target directory are treated as applications and
> # run by the server when requested rather than as documents sent to the
> # client. The same rules about trailing "/" apply to ScriptAlias
> # directives as to Alias.
> #
> ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
>
> </IfModule>
>
> #
> # "/var/www/cgi-bin" should be changed to whatever your ScriptAliased
> # CGI directory exists, if you have that configured.
> #
> <Directory "/var/www/cgi-bin">
> AllowOverride None
> Options None
> Require all granted
> </Directory>
>
> <IfModule mime_module>
> #
> # TypesConfig points to the file containing the list of mappings from
> # filename extension to MIME-type.
> #
> TypesConfig /etc/mime.types
>
> #
> # AddType allows you to add to or override the MIME configuration
> # file specified in TypesConfig for specific file types.
> #
> #AddType application/x-gzip .tgz
> #
> # AddEncoding allows you to have certain browsers uncompress
> # information on the fly. Note: Not all browsers support this.
> #
> #AddEncoding x-compress .Z
> #AddEncoding x-gzip .gz .tgz
> #
> # If the AddEncoding directives above are commented-out, then you
> # probably should define those extensions to indicate media types:
> #
> AddType application/x-compress .Z
> AddType application/x-gzip .gz .tgz
>
> #
> # AddHandler allows you to map certain file extensions to "handlers":
> # actions unrelated to filetype. These can be either built into the server
> # or added with the Action directive (see below)
> #
> # To use CGI scripts outside of ScriptAliased directories:
> # (You will also need to add "ExecCGI" to the "Options" directive.)
> #
> #AddHandler cgi-script .cgi
>
> # For type maps (negotiated resources):
> #AddHandler type-map var
>
> #
> # Filters allow you to process content before it is sent to the client.
> #
> # To parse .shtml files for server-side includes (SSI):
> # (You will also need to add "Includes" to the "Options" directive.)
> #
> AddType text/html .shtml
> AddOutputFilter INCLUDES .shtml
> </IfModule>
>
> #
> # Specify a default charset for all content served; this enables
> # interpretation of all content as UTF-8 by default. To use the
> # default browser choice (ISO-8859-1), or to allow the META tags
> # in HTML content to override this choice, comment out this
> # directive:
> #
> AddDefaultCharset UTF-8
>
> <IfModule mime_magic_module>
> #
> # The mod_mime_magic module allows the server to use various hints from the
> # contents of the file itself to determine its type. The MIMEMagicFile
> # directive tells the module where the hint definitions are located.
> #
> MIMEMagicFile conf/magic
> </IfModule>
>
> #
> # Customizable error responses come in three flavors:
> # 1) plain text 2) local redirects 3) external redirects
> #
> # Some examples:
> #ErrorDocument 500 "The server made a boo boo."
> #ErrorDocument 404 /missing.html
> #ErrorDocument 404 "/cgi-bin/missing_handler.pl"
> #ErrorDocument 402 http://www.example.com/subscription_info.html
> #
>
> #
> # EnableMMAP and EnableSendfile: On systems that support it,
> # memory-mapping or the sendfile syscall may be used to deliver
> # files. This usually improves server performance, but must
> # be turned off when serving from networked-mounted
> # filesystems or if support for these functions is otherwise
> # broken on your system.
> # Defaults if commented: EnableMMAP On, EnableSendfile Off
> #
> #EnableMMAP off
> EnableSendfile on
>
> # Supplemental configuration
> #
> # Load config files in the "/etc/httpd/conf.d" directory, if any.
> IncludeOptional conf.d/*.conf
>
>
>
>
>
> config.rb
> -------------------------------------------------------------------------------------------------------------------------------
> # Configuration defaults are shown below
>
> #AppConfig[:default_admin_password] = "admin"
> #AppConfig[:data_directory] = File.join(Dir.home, "ArchivesSpace")
> #AppConfig[:backup_directory] = proc { File.join(AppConfig[:data_directory], "demo_db_backups") }
> #AppConfig[:solr_index_directory] = proc { File.join(AppConfig[:data_directory], "solr_index") }
> #AppConfig[:solr_home_directory] = proc { File.join(AppConfig[:data_directory], "solr_home") }
> #AppConfig[:solr_indexing_frequency_seconds] = 30
> #
> #AppConfig[:default_page_size] = 10
> #AppConfig[:max_page_size] = 250
> #
> ## Log level for the backend, values: (everything) debug, info, warn, error, fatal (severe only)
> #AppConfig[:backend_log_level] = "debug"
> #
> ## A prefix added to cookies used by the application.
> ##
> ## Change this if you're running more than one instance of ArchivesSpace on the
> ## same hostname (i.e. multiple instances on different ports)
> #AppConfig[:cookie_prefix] = "archivesspace"
> #
> ## The periodic indexer can run using multiple threads to take advantage of
> ## multiple CPU cores.
> ##
> ## By setting the next two options, you can control how many CPU cores are used,
> ## and the amount of memory that will be consumed by the indexing process (more
> ## cores and/or more records per thread means more memory used).
> #AppConfig[:indexer_records_per_thread] = 25
> #AppConfig[:indexer_thread_count] = 4
> #
> #AppConfig[:allow_other_unmapped] = false
> #
> #AppConfig[:db_url] = proc { AppConfig.demo_db_url }
> #AppConfig[:db_max_connections] = 10
> ## Set to true if you have enabled MySQL binary logging
> #AppConfig[:mysql_binlog] = false
> #
> #AppConfig[:allow_unsupported_database] = false
> #AppConfig[:allow_non_utf8_mysql_database] = false
> #
> #AppConfig[:demo_db_backup_schedule] = "0 4 * * *"
> #AppConfig[:demo_db_backup_number_to_keep] = 7
> #
> #AppConfig[:solr_backup_directory] = proc { File.join(AppConfig[:data_directory], "solr_backups") }
> #AppConfig[:solr_backup_schedule] = "0 * * * *"
> #AppConfig[:solr_backup_number_to_keep] = 1
> #
> #AppConfig[:backend_url] = "http://localhost:8089"
> #AppConfig[:frontend_url] = "http://localhost:8080"
> #AppConfig[:frontend_prefix] = proc { "#{URI(AppConfig[:frontend_url]).path}/".gsub(%r{/+$}, "/") }
> #AppConfig[:solr_url] = "http://localhost:8090"
> #AppConfig[:indexer_url] = "http://localhost:8091"
> #AppConfig[:public_url] = "http://localhost:8081"
> #AppConfig[:public_prefix] = proc { "#{URI(AppConfig[:public_url]).path}/".gsub(%r{/+$}, "/") }
> #
> # cbm, 2014.01.26: Trying to correct the "View Published button" issue
> #AppConfig[:frontend_url] = "https://aspdemo-staff.library.louisville.edu"
> #AppConfig[:public_url] = "http://aspdemo-public.library.louisville.edu"
> #
> #
> ## Setting any of the four keys below to false will prevent the associated
> ## applications from starting. Temporarily disabling the frontend and public
> ## UIs and/or the indexer may help users who are running into memory-related
> ## issues during migration.
> #
> #AppConfig[:enable_backend] = true
> #AppConfig[:enable_frontend] = true
> #AppConfig[:enable_public] = true
> #AppConfig[:enable_solr] = true
> #AppConfig[:enable_indexer] = true
> #
> ## Some use cases want the ability to shutdown the Jetty service using Jetty's
> ## ShutdownHandler, which allows a POST request to a specific URI to signal
> ## server shutdown. The prefix for this URI path is set to /xkcd to reduce the
> ## possibility of a collision in the path configuration. So, full path would be
> ## /xkcd/shutdown?token={randomly generated password}
> ## The launcher creates a password to use this, which is stored
> ## in the data directory. This is not turned on by default.
> ##
> #AppConfig[:use_jetty_shutdown_handler] = false
> #AppConfig[:jetty_shutdown_path] = "/xkcd"
> #
> #
> ## If you have multiple instances of the backend running behind a load
> ## balancer, list the URL of each backend instance here. This is used by the
> ## real-time indexing, which needs to connect directly to each running
> ## instance.
> ##
> ## By default we assume you're not using a load balancer, so we just connect
> ## to the regular backend URL.
> ##
> #AppConfig[:backend_instance_urls] = proc { [AppConfig[:backend_url]] }
> #
> #AppConfig[:frontend_theme] = "default"
> #AppConfig[:public_theme] = "default"
> #
> #AppConfig[:session_expire_after_seconds] = 3600
> #
> #AppConfig[:search_username] = "search_indexer"
> #
> #AppConfig[:public_username] = "public_anonymous"
> #
> #AppConfig[:staff_username] = "staff_system"
> #
> #AppConfig[:authentication_sources] = []
> #
> #AppConfig[:realtime_index_backlog_ms] = 60000
> #
> #AppConfig[:notifications_backlog_ms] = 60000
> #AppConfig[:notifications_poll_frequency_ms] = 1000
> #
> #AppConfig[:max_usernames_per_source] = 50
> #
> #AppConfig[:demodb_snapshot_flag] = proc { File.join(AppConfig[:data_directory], "create_demodb_snapshot.txt") }
> #
> #AppConfig[:locale] = :en
> #
> ## Report Configuration
> ## :report_page_layout uses valid values for the CSS3 @page directive's
> ## size property: http://www.w3.org/TR/css3-page/#page-size-prop
> #AppConfig[:report_page_layout] = "letter landscape"
> #AppConfig[:report_pdf_font_paths] = proc { ["#{AppConfig[:backend_url]}/reports/static/fonts/dejavu/DejaVuSans.ttf"] }
> #AppConfig[:report_pdf_font_family] = "\"DejaVu Sans\", sans-serif"
> #
> ## Plug-ins to load. They will load in the order specified
> #AppConfig[:plugins] = ['local', 'aspace_feedback', 'aspace-public-formats']
> AppConfig[:plugins] = ['local']
> #
> #
> #
> ## The following are used by the aspace-public-formats plugin
> ## https://github.com/archivesspace/aspace-public-formats
> #AppConfig[:public_formats_resource_links] = []
> #AppConfig[:public_formats_digital_object_links] = []
> #AppConfig[:xsltproc_path] = nil
> #AppConfig[:xslt_path] = nil
> #
> #
> ## Allow an unauthenticated user to create an account
> #AppConfig[:allow_user_registration] = true
> #
> ## Help Configuration
> #AppConfig[:help_enabled] = true
> #AppConfig[:help_url] = "http://docs.archivesspace.org"
> #AppConfig[:help_topic_prefix] = "/Default_CSH.htm#"
> #
> ## Proxy URLs
> ## If you are serving user-facing applications via proxy
> ## (i.e., another domain or port, or via https) it is
> ## recommended that you record those URLs in your configuration
> #AppConfig[:frontend_proxy_url] = proc { AppConfig[:frontend_url] }
> #AppConfig[:public_proxy_url] = proc { AppConfig[:public_url] }
>
> #
> #AppConfig[:shared_storage] = proc { File.join(AppConfig[:data_directory], "shared") }
> #AppConfig[:import_job_path] = proc { File.join(AppConfig[:shared_storage], "import_jobs") }
> #AppConfig[:import_poll_seconds] = 5
> #AppConfig[:import_timeout_seconds] = 300
> #
> ## By default, only allow jobs to be cancelled if we're running against MySQL (since we can rollback)
> #AppConfig[:import_jobs_cancelable] = proc { (AppConfig[:db_url] != AppConfig.demo_db_url).to_s }
> #
> #AppConfig[:max_location_range] = 1000
> #
> #
> ## Jasper Reports
> ## (https://community.jaspersoft.com/project/jasperreports-library)
> ## require compilation. This can be done at startup. Please note, if you are
> ## using Java 8 and you want to compile at startup, keep this setting at false,
> ## but be sure to use the JDK version.
> #AppConfig[:enable_jasper] = true
> #AppConfig[:compile_jasper] = false
> #
> ## There are some conditions that has caused tree nodes ( ArchivalObjects, DO
> ## Components, and ClassificationTerms) to lose their Sequence pointers. This
> ## will resequence these tree nodes on startup.
> # AppConfig[:resequence_on_startup] = true
>
>
> _______________________________________________
> Archivesspace_Users_Group mailing list
> Archivesspace_Users_Group at lyralists.lyrasis.org
> http://lyralists.lyrasis.org/mailman/listinfo/archivesspace_users_group
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lyralists.lyrasis.org/pipermail/archivesspace_users_group/attachments/20150624/e8d99836/attachment.html>
More information about the Archivesspace_Users_Group
mailing list