diff --git a/README.md b/README.md index 3637db8..5a6c16c 100644 --- a/README.md +++ b/README.md @@ -1,31 +1,41 @@ Role Name ========= -A brief description of the role goes here. - -Requirements ------------- - -Any pre-requisites that may not be covered by Ansible itself or the role should be mentioned here. For instance, if the role uses the EC2 module, it may be a good idea to mention in this section that the boto package is required. +A role that installs the tomcat packages Role Variables -------------- -A description of the settable variables for this role should go here, including any variables that are in defaults/main.yml, vars/main.yml, and any variables that can/should be set via parameters to the role. Any variables that are read from other roles and/or the global scope (ie. hostvars, group vars, etc.) should be mentioned here as well. +The most important variables are listed below: + +``` yaml +tomcat_min_heap_size: 2048m +tomcat_heap_size: '{{ tomcat_min_heap_size }}' +tomcat_other_java_opts: "" +tomcat_javamelody: False +tomcat_install_admin: False +tomcat_manager_gui_user_enabled: True +tomcat_manager_gui_user: guiadmin +tomcat_manager_gui_r: "manager-gui" +#tomcat_manager_gui_pwd: *See the vault file* +tomcat_manager_script_user_enabled: False +tomcat_manager_script_user: scriptadmin +tomcat_manager_script_r: "manager-script" +#tomcat_manager_script_pwd: *See the vault file* +tomcat_manager_jmx_user_enabled: False +tomcat_manager_jmx_user: jmxadmin +tomcat_manager_jmx_r: "manager-jmx" +#tomcat_manager_jmx_pwd: *See the vault file* +tomcat_manager_status_user_enabled: False +tomcat_manager_status_user: statusadmin +tomcat_manager_status_r: "manager-status" +#tomcat_manager_status_pwd: *See the vault file* +``` Dependencies ------------ -A list of other roles hosted on Galaxy should go here, plus any details in regards to parameters that may need to be set for other roles, or variables that are used from other roles. - -Example Playbook ----------------- - -Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too: - - - hosts: servers - roles: - - { role: username.rolename, x: 42 } +openjdk, License ------- @@ -35,4 +45,4 @@ EUPL-1.2 Author Information ------------------ -An optional section for the role authors to include contact information, or a website (HTML is not allowed). +Andrea Dell'Amico, diff --git a/defaults/main.yml b/defaults/main.yml index 95d3c70..a10eafd 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -1,2 +1,135 @@ --- -# defaults file for ansible-role-template \ No newline at end of file +# The tomcat version is set at runtime. It changes from one distribution to the other. +#tomcat_version: 7 +# To force a tomcat version set the following variable: +# tomcat_fixed_version: 9 +tomcat_pkg_state: present +tomcat_service_enabled: True +tomcat_pkgs: + - 'tomcat{{ tomcat_version }}' + - 'libtomcat{{ tomcat_version }}-java' + - 'tomcat{{ tomcat_version }}-common' + - libapr1 + +tomcat8_additional_pkgs: + - jsvc + - libcommons-daemon-java + +tomcat_user: 'tomcat{{ tomcat_version }}' +tomcat_max_threads: 200 + +tomcat_min_heap_size: 2048m +tomcat_permgen_defined: True +tomcat_heap_size: '{{ tomcat_min_heap_size }}' +tomcat_permgen_size: 512m +tomcat_file_encoding: 'UTF-8' +tomcat_java_opts: "-Xms{{ tomcat_min_heap_size }} -Xmx{{ tomcat_heap_size }}" +tomcat_additional_java_8_opts: "-XX:+CrashOnOutOfMemoryError" +tomcat_java_gc_opts: "-XX:+UseConcMarkSweepGC" +#tomcat_other_java_opts: "-Djsse.enableSNIExtension=false" +tomcat_proxy_enabled: False +tomcat_proxy_http_host: 'localhost' +tomcat_proxy_http_port: '3128' +tomcat_proxy_https_host: '{{ tomcat_proxy_http_host }}' +tomcat_proxy_https_port: '{{ tomcat_proxy_http_port }}' +tomcat_proxy_opts: "-DproxySet=true -Dhttp.proxyHost={{ tomcat_proxy_http_host }} -Dhttp.proxyPort={{ tomcat_proxy_http_port }} -Dhttps.proxyHost={{ tomcat_proxy_https_host }} -Dhttps.proxyPort={{ tomcat_proxy_https_port }}" +tomcat_other_java_opts: "" +tomcat_install_server_xml: True +tomcat_install_default_conf: True +tomcat_load_additional_default_conf: True +tomcat_http_enabled: True +tomcat_http_port: 8080 +tomcat_http_address: 0.0.0.0 +tomcat_webapps_autodeploy: False +tomcat_webapps_unpack: False +tomcat_ajp_enabled: False +tomcat_ajp_port: 8009 +tomcat_ajp_address: 127.0.0.1 +tomcat_direct_access: False +tomcat_reverse_proxy_name_enabled: False +tomcat_reverse_proxy_name: '{{ ansible_fqdn }}' +tomcat_reverse_proxy_port: '{{ http_port | default(80) }}' +# There is a bug that kills tomcat after 50 days if the shutdown port is enabled +# Disable the shutdown port by default +#tomcat_shutdown_port: 8005 +tomcat_shutdown_port: -1 +tomcat_shutdown_pwd: "{{ lookup('password', '/tmp/passwordfile chars=ascii_letters,digits') }}" +tomcat_restart_timeout: 300 +tomcat_max_post_size: 1000000 +tomcat_catalina_home_dir: '/usr/share/tomcat{{ tomcat_version }}' +tomcat_catalina_base_dir: '/var/lib/tomcat{{ tomcat_version }}' +tomcat_conf_dir: '/etc/tomcat{{ tomcat_version }}' +tomcat_webapps_dir: '{{ tomcat_catalina_base_dir }}/webapps' +tomcat_common_dir: '{{ tomcat_catalina_base_dir }}/common/' +tomcat_common_classes_dir: '{{ tomcat_catalina_base_dir }}/common/classes' +tomcat_tmp_dir: '{{ tomcat_catalina_base_dir }}/tmp/tomcat' + +# JMX and debugging +tomcat_enable_remote_debugging: False +tomcat_remote_debugging_host: '0.0.0.0' +tomcat_remote_debugging_port: ':8100' +tomcat_remote_debugging_uri: '{{ tomcat_remote_debugging_host }}:{{ tomcat_remote_debugging_port }}' +# +tomcat_jmx_enabled: False +tomcat_jmx_auth_enabled: False +tomcat_jmx_port: 8082 +tomcat_jmx_auth_dir: '{{ tomcat_conf_dir }}' +tomcat_jmx_use_ssl: False +# The following work with jdk >= 7.0.25 only +tomcat_jmx_disable_additional_ports: True +tomcat_jmx_localhost_only: False +# tomcat_jmx_monitorpass: define_in_a_vault_file +# tomcat_jmx_controlpass: define_in_a_vault_file + +# Metrics monitoring via javamelody +tomcat_javamelody: False +#tomcat_javamelody_version: latest +tomcat_javamelody_version: 1.82.0 + +# tomcat logging +tomcat_logdir: '/var/log/tomcat{{ tomcat_version }}' +tomcat_use_log4j: True +tomcat_install_the_log4j_properties: True +tomcat_retain_old_logs: 30 +tomcat_log_rotation_threshold: "ALL" +tomcat_log_max_file_size: "100MB" +tomcat_log_level: INFO +tomcat_log_logger: CATALINA +tomcat_access_log_enabled: True +tomcat_access_log_rotation_freq: "daily" +# +# Define them if you want to send all the logs to an ELK installation +tomcat_send_to_logstash: False +tomcat_logstash_collector_host: logstash +tomcat_logstash_collector_socketappender_port: 4560 +tomcat_logstash_collector_socketappender_reconndelay: 10000 +# Set to LOGSTASH only if you do not want local logs +tomcat_logstash_logger: CATALINA, LOGSTASH + + +#tomcat_access_log_file_name: localhost_access.log +# +# Administrative interface +tomcat_install_admin: False +tomcat_manager_gui_user_enabled: True +tomcat_manager_gui_user: guiadmin +tomcat_manager_gui_r: "manager-gui" +#tomcat_manager_gui_pwd: *See the vault file* +tomcat_manager_script_user_enabled: False +tomcat_manager_script_user: scriptadmin +tomcat_manager_script_r: "manager-script" +#tomcat_manager_script_pwd: *See the vault file* +tomcat_manager_jmx_user_enabled: False +tomcat_manager_jmx_user: jmxadmin +tomcat_manager_jmx_r: "manager-jmx" +#tomcat_manager_jmx_pwd: *See the vault file* +tomcat_manager_status_user_enabled: False +tomcat_manager_status_user: statusadmin +tomcat_manager_status_r: "manager-status" +#tomcat_manager_status_pwd: *See the vault file* +# +tomcat_install_jdbc: False +tomcat_install_pg_jdbc: '{{ tomcat_install_jdbc }}' +# Not used yet +tomcat_install_mysql_jdbc: False + diff --git a/files/catalina.properties b/files/catalina.properties new file mode 100644 index 0000000..c57b4e8 --- /dev/null +++ b/files/catalina.properties @@ -0,0 +1,131 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# +# List of comma-separated packages that start with or equal this string +# will cause a security exception to be thrown when +# passed to checkPackageAccess unless the +# corresponding RuntimePermission ("accessClassInPackage."+package) has +# been granted. +package.access=sun.,org.apache.catalina.,org.apache.coyote.,org.apache.tomcat.,org.apache.jasper. +# +# List of comma-separated packages that start with or equal this string +# will cause a security exception to be thrown when +# passed to checkPackageDefinition unless the +# corresponding RuntimePermission ("defineClassInPackage."+package) has +# been granted. +# +# by default, no packages are restricted for definition, and none of +# the class loaders supplied with the JDK call checkPackageDefinition. +# +package.definition=sun.,java.,org.apache.catalina.,org.apache.coyote.,org.apache.tomcat.,org.apache.jasper. + +# +# +# List of comma-separated paths defining the contents of the "common" +# classloader. Prefixes should be used to define what is the repository type. +# Path may be relative to the CATALINA_HOME or CATALINA_BASE path or absolute. +# If left as blank,the JVM system loader will be used as Catalina's "common" +# loader. +# Examples: +# "foo": Add this folder as a class repository +# "foo/*.jar": Add all the JARs of the specified folder as class +# repositories +# "foo/bar.jar": Add bar.jar as a class repository +common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar,${catalina.home}/common/classes,${catalina.home}/common/*.jar,${catalina.base}/common/classes,${catalina.base}/common/*.jar + +# +# List of comma-separated paths defining the contents of the "server" +# classloader. Prefixes should be used to define what is the repository type. +# Path may be relative to the CATALINA_HOME or CATALINA_BASE path or absolute. +# If left as blank, the "common" loader will be used as Catalina's "server" +# loader. +# Examples: +# "foo": Add this folder as a class repository +# "foo/*.jar": Add all the JARs of the specified folder as class +# repositories +# "foo/bar.jar": Add bar.jar as a class repository +server.loader=${catalina.home}/server/classes,${catalina.home}/server/*.jar,${catalina.base}/server/classes,${catalina.base}/server/*.jar + +# +# List of comma-separated paths defining the contents of the "shared" +# classloader. Prefixes should be used to define what is the repository type. +# Path may be relative to the CATALINA_BASE path or absolute. If left as blank, +# the "common" loader will be used as Catalina's "shared" loader. +# Examples: +# "foo": Add this folder as a class repository +# "foo/*.jar": Add all the JARs of the specified folder as class +# repositories +# "foo/bar.jar": Add bar.jar as a class repository +# Please note that for single jars, e.g. bar.jar, you need the URL form +# starting with file:. +shared.loader=${catalina.home}/shared/classes,${catalina.home}/shared/*.jar,${catalina.base}/shared/classes,${catalina.base}/shared/*.jar + +# List of JAR files that should not be scanned using the JarScanner +# functionality. This is typically used to scan JARs for configuration +# information. JARs that do not contain such information may be excluded from +# the scan to speed up the scanning process. This is the default list. JARs on +# this list are excluded from all scans. Scan specific lists (to exclude JARs +# from individual scans) follow this. The list must be a comma separated list of +# JAR file names. +# The JARs listed below include: +# - Tomcat Bootstrap JARs +# - Tomcat API JARs +# - Catalina JARs +# - Jasper JARs +# - Tomcat JARs +# - Common non-Tomcat JARs +# - Test JARs (JUnit, Cobertura and dependencies) +tomcat.util.scan.DefaultJarScanner.jarsToSkip=\ +bootstrap.jar,commons-daemon.jar,tomcat-juli.jar,\ +annotations-api.jar,el-api.jar,jsp-api.jar,servlet-api.jar,websocket-api.jar,\ +catalina.jar,catalina-ant.jar,catalina-ha.jar,catalina-tribes.jar,\ +jasper.jar,jasper-el.jar,ecj-*.jar,\ +tomcat-api.jar,tomcat-util.jar,tomcat-coyote.jar,tomcat-dbcp.jar,\ +tomcat-jni.jar,tomcat-spdy.jar,\ +tomcat-i18n-en.jar,tomcat-i18n-es.jar,tomcat-i18n-fr.jar,tomcat-i18n-ja.jar,\ +tomcat-juli-adapters.jar,catalina-jmx-remote.jar,catalina-ws.jar,\ +tomcat-jdbc.jar,\ +tools.jar,\ +commons-beanutils*.jar,commons-codec*.jar,commons-collections*.jar,\ +commons-dbcp*.jar,commons-digester*.jar,commons-fileupload*.jar,\ +commons-httpclient*.jar,commons-io*.jar,commons-lang*.jar,commons-logging*.jar,\ +commons-math*.jar,commons-pool*.jar,\ +jstl.jar,\ +geronimo-spec-jaxrpc*.jar,wsdl4j*.jar,\ +ant.jar,ant-junit*.jar,aspectj*.jar,jmx.jar,h2*.jar,hibernate*.jar,httpclient*.jar,\ +jmx-tools.jar,jta*.jar,log4j.jar,log4j-1*.jar,mail*.jar,slf4j*.jar,\ +xercesImpl.jar,xmlParserAPIs.jar,xml-apis.jar,\ +junit.jar,junit-*.jar,hamcrest*.jar,org.hamcrest*.jar,ant-launcher.jar,\ +cobertura-*.jar,asm-*.jar,dom4j-*.jar,icu4j-*.jar,jaxen-*.jar,jdom-*.jar,\ +jetty-*.jar,oro-*.jar,servlet-api-*.jar,tagsoup-*.jar,xmlParserAPIs-*.jar,\ +xom-*.jar + +# Additional JARs (over and above the default JARs listed above) to skip when +# scanning for Servlet 3.0 pluggability features. These features include web +# fragments, annotations, SCIs and classes that match @HandlesTypes. The list +# must be a comma separated list of JAR file names. +org.apache.catalina.startup.ContextConfig.jarsToSkip= + +# Additional JARs (over and above the default JARs listed above) to skip when +# scanning for TLDs. The list must be a comma separated list of JAR file names. +org.apache.catalina.startup.TldConfig.jarsToSkip=tomcat7-websocket.jar + +# +# String cache configuration. +tomcat.util.buf.StringCache.byte.enabled=true +#tomcat.util.buf.StringCache.char.enabled=true +#tomcat.util.buf.StringCache.trainThreshold=500000 +#tomcat.util.buf.StringCache.cacheSize=5000 diff --git a/files/jmxremote.access b/files/jmxremote.access new file mode 100644 index 0000000..c5aab07 --- /dev/null +++ b/files/jmxremote.access @@ -0,0 +1,2 @@ +monitorRole readonly +controlRole readwrite diff --git a/files/logging.properties b/files/logging.properties new file mode 100644 index 0000000..6eeb181 --- /dev/null +++ b/files/logging.properties @@ -0,0 +1,49 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler + +.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler + +############################################################ +# Handler specific properties. +# Describes specific configuration info for Handlers. +############################################################ + +1catalina.org.apache.juli.FileHandler.level = FINE +1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs +1catalina.org.apache.juli.FileHandler.prefix = catalina. + +2localhost.org.apache.juli.FileHandler.level = FINE +2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs +2localhost.org.apache.juli.FileHandler.prefix = localhost. + +java.util.logging.ConsoleHandler.level = FINE +java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter + +############################################################ +# Facility specific properties. +# Provides extra control for each logger. +############################################################ + +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler + +# For example, set the com.xyz.foo logger to only log SEVERE +# messages: +#org.apache.catalina.startup.ContextConfig.level = FINE +#org.apache.catalina.startup.HostConfig.level = FINE +#org.apache.catalina.session.ManagerBase.level = FINE +#org.apache.catalina.core.AprLifecycleListener.level=FINE diff --git a/files/tomcat6-juli-adapters.jar b/files/tomcat6-juli-adapters.jar new file mode 100644 index 0000000..8b75f23 Binary files /dev/null and b/files/tomcat6-juli-adapters.jar differ diff --git a/files/tomcat6-juli-log4j.jar b/files/tomcat6-juli-log4j.jar new file mode 100644 index 0000000..a8c8b4f Binary files /dev/null and b/files/tomcat6-juli-log4j.jar differ diff --git a/files/tomcat7-juli-adapters.jar b/files/tomcat7-juli-adapters.jar new file mode 100644 index 0000000..1eedbfc Binary files /dev/null and b/files/tomcat7-juli-adapters.jar differ diff --git a/files/tomcat7-juli-log4j.jar b/files/tomcat7-juli-log4j.jar new file mode 100644 index 0000000..b09bf78 Binary files /dev/null and b/files/tomcat7-juli-log4j.jar differ diff --git a/handlers/main.yml b/handlers/main.yml index 27474e0..d6efc31 100644 --- a/handlers/main.yml +++ b/handlers/main.yml @@ -1,2 +1,12 @@ --- -# handlers file for ansible-role-template \ No newline at end of file +- name: tomcat restart + service: name='tomcat{{ tomcat_version }}' state=restarted sleep=20 + when: tomcat_service_enabled + +- name: enable tomcat + service: name='tomcat{{ tomcat_version }}' state=started enabled=yes + when: tomcat_service_enabled + +- name: disable tomcat + service: name='tomcat{{ tomcat_version }}' state=started enabled=no + when: not tomcat_service_enabled diff --git a/meta/main.yml b/meta/main.yml index 1126a5e..b2622c0 100644 --- a/meta/main.yml +++ b/meta/main.yml @@ -1,61 +1,28 @@ galaxy_info: - author: your name - description: your description + author: Andrea Dell'Amico + description: Systems Architect company: ISTI-CNR - # If the issue tracker for your role is not on github, uncomment the - # next line and provide a value issue_tracker_url: https://redmine-s2i2s.isti.cnr.it/projects/provisioning - # Some suggested licenses: - # - BSD (default) - # - MIT - # - GPLv2 - # - GPLv3 - # - Apache - # - CC-BY - license: EUPL-1.2 + license: EUPL 1.2+ min_ansible_version: 2.8 - # If this a Container Enabled role, provide the minimum Ansible Container version. - # min_ansible_container_version: - - # Optionally specify the branch Galaxy will use when accessing the GitHub - # repo for this role. During role install, if no tags are available, - # Galaxy will use this branch. During import Galaxy will access files on - # this branch. If Travis integration is configured, only notifications for this - # branch will be accepted. Otherwise, in all cases, the repo's default branch - # (usually master) will be used. - #github_branch: - - # - # Provide a list of supported platforms, and for each platform a list of versions. - # If you don't wish to enumerate all versions for a particular platform, use 'all'. # To view available platforms and versions (or releases), visit: # https://galaxy.ansible.com/api/v1/platforms/ # - # platforms: - # - name: Fedora - # versions: - # - all - # - 25 - # - name: SomePlatform - # versions: - # - all - # - 1.0 - # - 7 - # - 99.99 + platforms: + - name: Ubuntu + versions: + - bionic - galaxy_tags: [] - # List tags for your role here, one per line. A tag is a keyword that describes - # and categorizes the role. Users find roles by searching for tags. Be sure to - # remove the '[]' above, if you add tags to this list. - # - # NOTE: A tag is limited to a single word comprised of alphanumeric characters. - # Maximum 20 tags per role. + galaxy_tags: + - tomcat -dependencies: [] - # List your role dependencies here, one per line. Be sure to remove the '[]' above, - # if you add dependencies to this list. +dependencies: + - src: git+https://gitea-s2i2s.isti.cnr.it/ISTI-ansible-roles/ansible-role-openjdk.git + version: master + name: openjdk + state: latest diff --git a/tasks/access_log.yml b/tasks/access_log.yml new file mode 100644 index 0000000..72d960a --- /dev/null +++ b/tasks/access_log.yml @@ -0,0 +1,6 @@ +--- +- name: Install a logrotate entry for the access log file + template: src=tomcat_access.logrotate.j2 dest=/etc/logrotate.d/tomcat_access owner=root group=root mode=0644 + when: tomcat_access_log_enabled + tags: tomcat + diff --git a/tasks/main.yml b/tasks/main.yml index 53c6cae..96f5209 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -1,2 +1,24 @@ --- -# tasks file for ansible-role-template \ No newline at end of file +- import_tasks: tomcat-pkgs.yml +- import_tasks: tomcat-admin.yml + when: tomcat_install_admin +- import_tasks: tomcat-jmx.yml + when: + - tomcat_jmx_enabled + - tomcat_jmx_auth_enabled + tags: [ 'tomcat', 'jmx' ] +- import_tasks: tomcat-log4j-logging.yml + when: + - tomcat_use_log4j + - tomcat_version <= 7 + tags: [ 'tomcat', 'tomcat_log4j' ] +- import_tasks: tomcat-logger-logging.yml + when: not tomcat_use_log4j or tomcat_version > 7 +- import_tasks: access_log.yml + when: tomcat_access_log_enabled +- import_tasks: pgsql_jdbc.yml + when: tomcat_install_pg_jdbc +- import_tasks: not_pgsql_jdbc.yml + when: not tomcat_install_pg_jdbc + + diff --git a/tasks/not_pgsql_jdbc.yml b/tasks/not_pgsql_jdbc.yml new file mode 100644 index 0000000..b029a4c --- /dev/null +++ b/tasks/not_pgsql_jdbc.yml @@ -0,0 +1,9 @@ +--- +- name: Do not load the postgresql jdbc driver on tomcat if not needed + file: dest={{ tomcat_catalina_home_dir }}/lib/{{ item }} state=absent + with_items: + - postgresql-jdbc4.jar + when: not tomcat_install_pg_jdbc + notify: tomcat restart + tags: tomcat + diff --git a/tasks/pgsql_jdbc.yml b/tasks/pgsql_jdbc.yml new file mode 100644 index 0000000..1456dd1 --- /dev/null +++ b/tasks/pgsql_jdbc.yml @@ -0,0 +1,16 @@ +--- +# Postgresql JDBC +- name: Install the jdbc package if needed + apt: pkg=libpostgresql-jdbc-java state=present + when: tomcat_install_pg_jdbc + tags: [ 'tomcat', 'tomcat_jdbc' ] + +- name: Configure tomcat to use the global postgresql jdbc driver + file: src=/usr/share/java/{{ item }} dest=/usr/share/tomcat{{ tomcat_version }}/lib/{{ item }} state=link + with_items: + - postgresql-jdbc4.jar + when: tomcat_install_pg_jdbc + notify: + tomcat restart + tags: [ 'tomcat', 'tomcat_jdbc' ] + diff --git a/tasks/tomcat-admin.yml b/tasks/tomcat-admin.yml new file mode 100644 index 0000000..d1e0849 --- /dev/null +++ b/tasks/tomcat-admin.yml @@ -0,0 +1,10 @@ +--- +- name: Install the tomcat console management package + apt: pkg=tomcat{{ tomcat_version }}-admin state={{ tomcat_pkg_state }} + tags: tomcat + +- name: Install the tomcat users file + template: src=tomcat-users.xml.j2 dest={{ tomcat_conf_dir }}/tomcat-users.xml owner=root group={{ tomcat_user }} mode=0640 + notify: tomcat restart + tags: tomcat + diff --git a/tasks/tomcat-jmx.yml b/tasks/tomcat-jmx.yml new file mode 100644 index 0000000..5d9d20e --- /dev/null +++ b/tasks/tomcat-jmx.yml @@ -0,0 +1,16 @@ +--- +- name: Distribute the jmx authorization file + template: src=jmxremote.passwd.j2 dest={{ tomcat_jmx_auth_dir }}/jmxremote.passwd owner={{ tomcat_user }} mode=0600 + when: + - tomcat_jmx_enabled + - tomcat_jmx_auth_enabled + notify: tomcat restart + tags: [ 'tomcat', 'jmx' ] + +- name: Distribute the jmx role file + copy: src=jmxremote.access dest={{ tomcat_jmx_auth_dir }}/jmxremote.access owner=root mode=0644 + when: + - tomcat_jmx_enabled + - tomcat_jmx_auth_enabled + notify: tomcat restart + tags: [ 'tomcat', 'jmx' ] diff --git a/tasks/tomcat-log4j-logging.yml b/tasks/tomcat-log4j-logging.yml new file mode 100644 index 0000000..cc11deb --- /dev/null +++ b/tasks/tomcat-log4j-logging.yml @@ -0,0 +1,41 @@ +--- +# Manage tomcat internal logs with log4j +- name: Install log4j + apt: pkg=liblog4j1.2-java state={{ tomcat_pkg_state }} + notify: tomcat restart + tags: [ 'tomcat', 'tomcat_log4j' ] + +- name: Install tomcat-juli-adapters + copy: src=tomcat{{ tomcat_version }}-juli-adapters.jar dest=/usr/share/java/tomcat-juli-adapters.jar + tags: [ 'tomcat', 'tomcat_log4j' ] + +- name: Install tomcat-juli + copy: src=tomcat{{ tomcat_version }}-juli-log4j.jar dest=/usr/share/java/tomcat-juli-log4j.jar + tags: [ 'tomcat', 'tomcat_log4j' ] + +- name: Configure tomcat to use the log4j system library + file: src=/usr/share/java/{{ item }} dest={{ tomcat_catalina_home_dir }}/lib/{{ item }} state=link + with_items: + - log4j-1.2.jar + - tomcat-juli-adapters.jar + notify: tomcat restart + tags: [ 'tomcat', 'tomcat_log4j' ] + +- name: Configure tomcat to use the log4j version of the juli library + file: src=/usr/share/java/{{ item }} dest={{ tomcat_catalina_home_dir }}/bin/tomcat-juli.jar state=link + with_items: + - tomcat-juli-log4j.jar + notify: tomcat restart + tags: [ 'tomcat', 'tomcat_log4j' ] + +- name: Install log4j.properties + template: src=log4j.properties.j2 dest={{ tomcat_catalina_home_dir }}/lib/log4j.properties mode=0644 owner=root group=root + when: tomcat_install_the_log4j_properties + notify: tomcat restart + tags: [ 'tomcat', 'tomcat_log4j' ] + +- name: Remove logging.properties + file: dest=/etc/tomcat{{ tomcat_version }}/logging.properties state=absent + notify: tomcat restart + tags: [ 'tomcat', 'tomcat_log4j' ] + diff --git a/tasks/tomcat-logger-logging.yml b/tasks/tomcat-logger-logging.yml new file mode 100644 index 0000000..cae8c9b --- /dev/null +++ b/tasks/tomcat-logger-logging.yml @@ -0,0 +1,26 @@ +--- +- name: Remove the system log4j library from the tomcat libdir + file: dest={{ tomcat_catalina_home_dir }}/lib/{{ item }} state=absent + with_items: + - log4j-1.2.jar + - tomcat-juli-adapters.jar + notify: tomcat restart + tags: tomcat + +- name: Configure tomcat to use the standard version of the juli library + file: src=/usr/share/java/{{ item }} dest={{ tomcat_catalina_home_dir }}/bin/{{ item }} state=link + with_items: + - 'tomcat{{ tomcat_version }}-juli.jar' + notify: tomcat restart + tags: tomcat + +- name: Remove the system log4j.properties + file: dest={{ tomcat_catalina_home_dir }}/lib/log4j.properties state=absent + notify: tomcat restart + tags: tomcat + +- name: Install logging.properties + copy: src=logging.properties dest=/etc/tomcat{{ tomcat_version }}/logging.properties owner=root group=root mode=0644 + notify: tomcat restart + tags: tomcat + diff --git a/tasks/tomcat-pkgs.yml b/tasks/tomcat-pkgs.yml new file mode 100644 index 0000000..2015317 --- /dev/null +++ b/tasks/tomcat-pkgs.yml @@ -0,0 +1,111 @@ +--- +- name: Set the tomcat version for ubuntu Trusy + set_fact: + tomcat_version: 7 + when: + - ansible_distribution_major_version <= '16' + - tomcat_fixed_version is not defined + tags: [ 'tomcat', 'tomcat_ver', 'tomcat_conf', 'tomcat_javamelody' ] + +- name: Set the tomcat version for Ubuntu bionic + set_fact: + tomcat_version: 8 + when: + - ansible_distribution_major_version == '18' + - tomcat_fixed_version is not defined + tags: [ 'tomcat', 'tomcat_ver', 'tomcat_conf', 'tomcat_javamelody' ] + +- name: Impose a tomcat version + set_fact: + tomcat_version: '{{ tomcat_fixed_version }}' + when: tomcat_fixed_version is defined + tags: [ 'tomcat', 'tomcat_ver', 'tomcat_conf', 'tomcat_javamelody' ] + +- name: Print the Tomcat version + debug: + msg: "The Tomcat version we are going to install is {{ tomcat_version }}" + tags: [ 'tomcat', 'tomcat_ver', 'tomcat_conf', 'tomcat_javamelody' ] + +- name: Install the tomcat packages + apt: pkg={{ tomcat_pkgs }} state={{ tomcat_pkg_state }} cache_valid_time=1800 + tags: tomcat + +- name: Install additional packages needed by tomcat 8+ + apt: pkg={{ tomcat8_additional_pkgs }} state={{ tomcat_pkg_state }} cache_valid_time=1800 + when: tomcat_version >= 8 + tags: [ 'tomcat', 'tomcat_javamelody', 'tomcat_conf', 'tomcat_javamelody' ] + +- name: Create the tomcat tmp directory + file: dest={{ tomcat_tmp_dir }} state=directory owner={{ tomcat_user }} group={{ tomcat_user }} + notify: tomcat restart + tags: tomcat + +- name: Create the catalina temp directory, if different from the default + file: dest={{ catalina_tmp_directory }} state=directory owner={{ tomcat_user }} group={{ tomcat_user }} + when: catalina_tmp_directory is defined + notify: tomcat restart + tags: tomcat + +- name: Configure tomcat defaults + template: src=tomcat-default.j2 dest=/etc/default/tomcat{{ tomcat_version }} + when: tomcat_install_default_conf | bool + notify: tomcat restart + tags: [ 'tomcat', 'tomcat_default' ] + +- name: Configure tomcat server.xml + template: src=tomcat-server.xml.j2 dest={{ tomcat_conf_dir }}/server.xml + when: tomcat_install_server_xml | bool + notify: tomcat restart + tags: [ 'tomcat', 'tomcat_serverxml' ] + +- name: Configure tomcat web.xml + template: src=tomcat-web.xml.j2 dest={{ tomcat_conf_dir }}/web.xml + notify: tomcat restart + tags: [ 'tomcat', 'tomcat_serverxml' ] + +- name: Install a slightly modified catalina.properties + copy: src=catalina.properties dest={{ tomcat_conf_dir }}/catalina.properties owner=root group={{ tomcat_user }} mode=0644 + when: tomcat_install_default_conf | bool + notify: tomcat restart + tags: [ 'tomcat', 'tomcat_catalinaprops' ] + +- name: Create some directories that the package do not creates itself + file: dest={{ tomcat_catalina_home_dir }}/{{ item }} state=directory owner={{ tomcat_user }} group={{ tomcat_user }} mode=0755 + with_items: + - common/classes + - server/classes + - shared/classes + tags: tomcat + +- name: On tomcat8, create a link to commons-daemon.jar to avoid exceptions at startup + file: src=/usr/share/java/{{ item }} dest={{ tomcat_catalina_home_dir }}/bin/{{ item }} state=link owner=root group=root mode=0644 + with_items: + - commons-daemon.jar + when: tomcat_version >= 8 + tags: [ 'tomcat', 'tomcat_conf' ] + +- name: Install the javamelody dependency jar into the Java shared libs directory + maven_artifact: artifact_id=jrobin version=latest group_id=org.jrobin extension=jar dest=/usr/share/java/jrobin.jar verify_checksum=always mode=0644 owner=root group=root repository_url=https://repo1.maven.org/maven2 + when: tomcat_javamelody | bool + tags: [ 'tomcat', 'tomcat_javamelody', 'tomcat_conf' ] + +- name: Install the javamelody-core jar into the Java shared libs directory + maven_artifact: artifact_id=javamelody-core version={{ tomcat_javamelody_version }} group_id=net.bull.javamelody extension=jar dest=/usr/share/java/javamelody-core.jar verify_checksum=always mode=0644 owner=root group=root repository_url=https://repo1.maven.org/maven2 + when: tomcat_javamelody | bool + tags: [ 'tomcat', 'tomcat_javamelody', 'tomcat_conf' ] + +- name: Create a link to the the javamelody jar and its dependencies if the javamelody support is enabled + file: src=../../java/{{ item }} dest={{ tomcat_catalina_home_dir }}/lib/{{ item }} state=link owner=root group=root mode=0644 + with_items: + - javamelody-core.jar + - jrobin.jar + when: tomcat_javamelody | bool + tags: [ 'tomcat', 'tomcat_javamelody', 'tomcat_conf' ] + +- name: Remove the javamelody jar and its dependencies if the javamelody support is disabled + file: dest={{ tomcat_catalina_home_dir }}/lib/{{ item }} state=absent + with_items: + - javamelody-core.jar + - jrobin.jar + when: not tomcat_javamelody | bool + tags: [ 'tomcat', 'tomcat_javamelody', 'tomcat_conf' ] diff --git a/templates/jmxremote.passwd.j2 b/templates/jmxremote.passwd.j2 new file mode 100644 index 0000000..cfca21c --- /dev/null +++ b/templates/jmxremote.passwd.j2 @@ -0,0 +1,2 @@ +monitorRole {{ tomcat_jmx_monitorpass }} +controlRole {{ tomcat_jmx_controlpass }} diff --git a/templates/log4j.properties.j2 b/templates/log4j.properties.j2 new file mode 100644 index 0000000..12dfa95 --- /dev/null +++ b/templates/log4j.properties.j2 @@ -0,0 +1,68 @@ +{% if tomcat_send_to_logstash %} +log4j.rootLogger = {{ tomcat_log_level }}, {{ tomcat_logstash_logger }} +{% else %} +log4j.rootLogger = {{ tomcat_log_level }}, {{ tomcat_log_logger }} +{% endif %} + +# Define all the appenders +log4j.appender.CATALINA = org.apache.log4j.RollingFileAppender +log4j.appender.CATALINA.File = ${catalina.base}/logs/catalina.log +log4j.appender.CATALINA.Append = true +log4j.appender.CATALINA.Encoding = UTF-8 +log4j.appender.CATALINA.Threshold = {{ tomcat_log_rotation_threshold }} +log4j.appender.CATALINA.MaxFileSize = {{ tomcat_log_max_file_size }} +log4j.appender.CATALINA.MaxBackupIndex = {{ tomcat_retain_old_logs }} +log4j.appender.CATALINA.layout = org.apache.log4j.PatternLayout +log4j.appender.CATALINA.layout.ConversionPattern = %d [%t] %-5p %c- %m%n + +log4j.appender.LOCALHOST = org.apache.log4j.RollingFileAppender +log4j.appender.LOCALHOST.File = ${catalina.base}/logs/localhost.log +log4j.appender.LOCALHOST.Append = true +log4j.appender.LOCALHOST.Encoding = UTF-8 +log4j.appender.LOCALHOST.Threshold = {{ tomcat_log_rotation_threshold }} +log4j.appender.LOCALHOST.MaxFileSize = {{ tomcat_log_max_file_size }} +log4j.appender.LOCALHOST.MaxBackupIndex = {{ tomcat_retain_old_logs }} +log4j.appender.LOCALHOST.layout = org.apache.log4j.PatternLayout +log4j.appender.LOCALHOST.layout.ConversionPattern = %d [%t] %-5p %c- %m%n + +log4j.appender.MANAGER = org.apache.log4j.RollingFileAppender +log4j.appender.MANAGER.File = ${catalina.base}/logs/manager.log +log4j.appender.MANAGER.Append = true +log4j.appender.MANAGER.Encoding = UTF-8 +log4j.appender.MANAGER.Threshold = {{ tomcat_log_rotation_threshold }} +log4j.appender.MANAGER.MaxFileSize = {{ tomcat_log_max_file_size }} +log4j.appender.MANAGER.MaxBackupIndex = {{ tomcat_retain_old_logs }} +log4j.appender.MANAGER.layout = org.apache.log4j.PatternLayout +log4j.appender.MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n + +log4j.appender.HOST-MANAGER = org.apache.log4j.RollingFileAppender +log4j.appender.HOST-MANAGER.File = ${catalina.base}/logs/host-manager.log +log4j.appender.HOST-MANAGER.Append = true +log4j.appender.HOST-MANAGER.Encoding = UTF-8 +log4j.appender.HOST-MANAGER.Threshold = {{ tomcat_log_rotation_threshold }} +log4j.appender.HOST-MANAGER.MaxFileSize = {{ tomcat_log_max_file_size }} +log4j.appender.HOST-MANAGER.MaxBackupIndex = {{ tomcat_retain_old_logs }} +log4j.appender.HOST-MANAGER.layout = org.apache.log4j.PatternLayout +log4j.appender.HOST-MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n + +{% if tomcat_send_to_logstash %} +log4j.appender.LOGSTASH=org.apache.log4j.net.SocketAppender +log4j.appender.LOGSTASH.remoteHost={{ tomcat_logstash_collector_host }} +log4j.appender.LOGSTASH.port={{ tomcat_logstash_collector_socketappender_port }} +log4j.appender.LOGSTASH.ReconnectionDelay={{ tomcat_logstash_collector_socketappender_reconndelay }} +log4j.appender.LOGSTASH.LocationInfo=true +log4j.appender.LOGSTASH.layout = org.apache.log4j.PatternLayout +log4j.appender.LOGSTASH.layout.ConversionPattern = %d [%t] %-5p %c- %m%n +{% endif %} + +log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender +log4j.appender.CONSOLE.Encoding = UTF-8 +log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout +log4j.appender.CONSOLE.layout.ConversionPattern = %d [%t] %-5p %c- %m%n + +# Configure which loggers log to which appenders +log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost] = {{ tomcat_log_level }}, LOCALHOST +log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager] =\ + {{ tomcat_log_level }}, MANAGER +log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager] =\ + {{ tomcat_log_level }}, HOST-MANAGER diff --git a/templates/tomcat-default.j2 b/templates/tomcat-default.j2 new file mode 100644 index 0000000..698f436 --- /dev/null +++ b/templates/tomcat-default.j2 @@ -0,0 +1,71 @@ +{% if limits_nofile_value is defined %} +ulimit -Hn {{ limits_nofile_value }} +ulimit -Sn {{ limits_nofile_value }} +{% endif %} + +# Run Tomcat as this user ID. Not setting this or leaving it blank will use the +# default of tomcat{{ tomcat_version}}. +TOMCAT{{ tomcat_version}}_USER={{ tomcat_user }} + +# Run Tomcat as this group ID. Not setting this or leaving it blank will use +# the default of tomcat{{ tomcat_version}}. +TOMCAT{{ tomcat_version}}_GROUP={{ tomcat_user }} + +# The home directory of the Java development kit (JDK). You need at least +# JDK version 1.5. If JAVA_HOME is not set, some common directories for +# OpenJDK, the Sun JDK, and various J2SE 1.5 versions are tried. +{% if jdk_java_home is defined %} +JAVA_HOME={{ jdk_java_home }} +{% endif %} + +JAVA_OPTS="-server -Djava.awt.headless=true -Dfile.encoding={{ tomcat_file_encoding }}" +{% if jdk_default <= 7 %} +{% if tomcat_permgen_defined %} +{% if tomcat_permgen_size is defined %} +JAVA_OPTS="-XX:MaxPermSize={{ tomcat_permgen_size }} $JAVA_OPTS" +{% endif %} +{% endif %} +{% endif %} +{% if jdk_default >= 8 %} +JAVA_OPTS="{{ tomcat_additional_java_8_opts }} $JAVA_OPTS" +{% endif %} +{% if tomcat_java_opts is defined %} +JAVA_OPTS="{{ tomcat_java_opts }} $JAVA_OPTS" +{% endif %} +{% if tomcat_java_gc_opts is defined %} +JAVA_OPTS="${JAVA_OPTS} {{ tomcat_java_gc_opts }}" +{% endif %} +{% if tomcat_proxy_enabled %} +JAVA_OPTS="${JAVA_OPTS} {{ tomcat_proxy_opts }}" +{% endif %} +{% if tomcat_other_java_opts is defined %} +JAVA_OPTS="${JAVA_OPTS} {{ tomcat_other_java_opts }}" +{% endif %} +{% if tomcat_jmx_enabled %} +JAVA_OPTS="${JAVA_OPTS} -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port={{ tomcat_jmx_port }} -Dcom.sun.management.jmxremote.ssl={{ tomcat_jmx_use_ssl }} -Dcom.sun.management.jmxremote.local.only={{ tomcat_jmx_localhost_only }}" +{% if tomcat_jmx_auth_enabled %} +JAVA_OPTS="${JAVA_OPTS} -Dcom.sun.management.jmxremote.password.file={{ tomcat_jmx_auth_dir }}/jmxremote.password -Dcom.sun.management.jmxremote.access.file={{ tomcat_jmx_auth_dir }}/jmxremote.access" +{% else %} +JAVA_OPTS="${JAVA_OPTS} -Dcom.sun.management.jmxremote.authenticate=false" +{% endif %} +{% if tomcat_jmx_disable_additional_ports %} +JAVA_OPTS="${JAVA_OPTS} -XX:+DisableAttachMechanism -Dcom.sun.management.jmxremote.rmi.port={{ tomcat_jmx_port }}" +{% endif %} +{% endif %} +{% if tomcat_enable_remote_debugging %} +# You will be able to use a java debugger on URI {{ tomcat_remote_debugging_uri }}. +JAVA_OPTS="${JAVA_OPTS} -agentlib:jdwp=transport=dt_socket,address={{ tomcat_remote_debugging_uri }},server=y,suspend=n" +# Obsolete +#JAVA_OPTS="${JAVA_OPTS} -Xdebug -Xrunjdwp:transport=dt_socket,address={{ tomcat_remote_debugging_uri }},server=y,suspend=n" +{% endif %} +# Location of the JVM temporary directory +# WARNING: This directory will be destroyed and recreated at every startup ! +JVM_TMP={{ tomcat_tmp_dir }} +{% if catalina_tmp_directory is defined %} +export CATALINA_TMPDIR={{ catalina_tmp_directory }} +{% endif %} +{% if tomcat_load_additional_default_conf %} +if [ -f /etc/default/tomcat.local ] ; then + . /etc/default/tomcat.local +fi +{% endif %} diff --git a/templates/tomcat-server.xml.j2 b/templates/tomcat-server.xml.j2 new file mode 100644 index 0000000..9dc83aa --- /dev/null +++ b/templates/tomcat-server.xml.j2 @@ -0,0 +1,176 @@ + + + +{% if tomcat_shutdown_port == -1 %} + +{% else %} + + {% endif %} + + + + + + + + + + + + + + + + + + + +{% if tomcat_http_enabled %} + + +{% endif %} + + +{% if tomcat_http_enabled %} + + + +{% endif %} +{% if tomcat_ajp_enabled %} + + +{% endif %} + + + + + + + + + + + + + + + + + + + + +{% if tomcat_access_log_enabled %} + + + + +{% endif %} + + + + diff --git a/templates/tomcat-users.xml.j2 b/templates/tomcat-users.xml.j2 new file mode 100644 index 0000000..f2563e4 --- /dev/null +++ b/templates/tomcat-users.xml.j2 @@ -0,0 +1,40 @@ + + + + +{% if tomcat_manager_gui_user_enabled %} + + +{% endif %} +{% if tomcat_manager_script_user_enabled %} + + +{% endif %} +{% if tomcat_manager_jmx_user_enabled %} + + +{% endif %} +{% if tomcat_manager_status_user_enabled %} + + +{% endif %} + diff --git a/templates/tomcat-web.xml.j2 b/templates/tomcat-web.xml.j2 new file mode 100644 index 0000000..d27fdfb --- /dev/null +++ b/templates/tomcat-web.xml.j2 @@ -0,0 +1,4344 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + org.apache.catalina.servlets.DefaultServlet + + debug + 0 + + + listings + false + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + jsp + org.apache.jasper.servlet.JspServlet + + fork + false + + + xpoweredBy + false + + 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + / + + + + + jsp + *.jsp + *.jspx + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +{% if tomcat_javamelody %} + + + + + javamelody + net.bull.javamelody.MonitoringFilter + + + log + true + + + + + javamelody + /* + + + net.bull.javamelody.SessionListener + +{% endif %} + + + + + + + 30 + + + + + + + + + + + + 123 + application/vnd.lotus-1-2-3 + + + 3dml + text/vnd.in3d.3dml + + + 3g2 + video/3gpp2 + + + 3gp + video/3gpp + + + 7z + application/x-7z-compressed + + + aab + application/x-authorware-bin + + + aac + audio/x-aac + + + aam + application/x-authorware-map + + + aas + application/x-authorware-seg + + + abs + audio/x-mpeg + + + abw + application/x-abiword + + + ac + application/pkix-attr-cert + + + acc + application/vnd.americandynamics.acc + + + ace + application/x-ace-compressed + + + acu + application/vnd.acucobol + + + acutc + application/vnd.acucorp + + + adp + audio/adpcm + + + aep + application/vnd.audiograph + + + afm + application/x-font-type1 + + + afp + application/vnd.ibm.modcap + + + ahead + application/vnd.ahead.space + + + ai + application/postscript + + + aif + audio/x-aiff + + + aifc + audio/x-aiff + + + aiff + audio/x-aiff + + + aim + application/x-aim + + + air + application/vnd.adobe.air-application-installer-package+zip + + + ait + application/vnd.dvb.ait + + + ami + application/vnd.amiga.ami + + + anx + application/annodex + + + apk + application/vnd.android.package-archive + + + application + application/x-ms-application + + + apr + application/vnd.lotus-approach + + + art + image/x-jg + + + asc + application/pgp-signature + + + asf + video/x-ms-asf + + + asm + text/x-asm + + + aso + application/vnd.accpac.simply.aso + + + asx + video/x-ms-asf + + + atc + application/vnd.acucorp + + + atom + application/atom+xml + + + atomcat + application/atomcat+xml + + + atomsvc + application/atomsvc+xml + + + atx + application/vnd.antix.game-component + + + au + audio/basic + + + avi + video/x-msvideo + + + avx + video/x-rad-screenplay + + + aw + application/applixware + + + axa + audio/annodex + + + axv + video/annodex + + + azf + application/vnd.airzip.filesecure.azf + + + azs + application/vnd.airzip.filesecure.azs + + + azw + application/vnd.amazon.ebook + + + bat + application/x-msdownload + + + bcpio + application/x-bcpio + + + bdf + application/x-font-bdf + + + bdm + application/vnd.syncml.dm+wbxml + + + bed + application/vnd.realvnc.bed + + + bh2 + application/vnd.fujitsu.oasysprs + + + bin + application/octet-stream + + + bmi + application/vnd.bmi + + + bmp + image/bmp + + + body + text/html + + + book + application/vnd.framemaker + + + box + application/vnd.previewsystems.box + + + boz + application/x-bzip2 + + + bpk + application/octet-stream + + + btif + image/prs.btif + + + bz + application/x-bzip + + + bz2 + application/x-bzip2 + + + c + text/x-c + + + c11amc + application/vnd.cluetrust.cartomobile-config + + + c11amz + application/vnd.cluetrust.cartomobile-config-pkg + + + c4d + application/vnd.clonk.c4group + + + c4f + application/vnd.clonk.c4group + + + c4g + application/vnd.clonk.c4group + + + c4p + application/vnd.clonk.c4group + + + c4u + application/vnd.clonk.c4group + + + cab + application/vnd.ms-cab-compressed + + + cap + application/vnd.tcpdump.pcap + + + car + application/vnd.curl.car + + + cat + application/vnd.ms-pki.seccat + + + cc + text/x-c + + + cct + application/x-director + + + ccxml + application/ccxml+xml + + + cdbcmsg + application/vnd.contact.cmsg + + + cdf + application/x-cdf + + + cdkey + application/vnd.mediastation.cdkey + + + cdmia + application/cdmi-capability + + + cdmic + application/cdmi-container + + + cdmid + application/cdmi-domain + + + cdmio + application/cdmi-object + + + cdmiq + application/cdmi-queue + + + cdx + chemical/x-cdx + + + cdxml + application/vnd.chemdraw+xml + + + cdy + application/vnd.cinderella + + + cer + application/pkix-cert + + + cgm + image/cgm + + + chat + application/x-chat + + + chm + application/vnd.ms-htmlhelp + + + chrt + application/vnd.kde.kchart + + + cif + chemical/x-cif + + + cii + application/vnd.anser-web-certificate-issue-initiation + + + cil + application/vnd.ms-artgalry + + + cla + application/vnd.claymore + + + class + application/java + + + clkk + application/vnd.crick.clicker.keyboard + + + clkp + application/vnd.crick.clicker.palette + + + clkt + application/vnd.crick.clicker.template + + + clkw + application/vnd.crick.clicker.wordbank + + + clkx + application/vnd.crick.clicker + + + clp + application/x-msclip + + + cmc + application/vnd.cosmocaller + + + cmdf + chemical/x-cmdf + + + cml + chemical/x-cml + + + cmp + application/vnd.yellowriver-custom-menu + + + cmx + image/x-cmx + + + cod + application/vnd.rim.cod + + + com + application/x-msdownload + + + conf + text/plain + + + cpio + application/x-cpio + + + cpp + text/x-c + + + cpt + application/mac-compactpro + + + crd + application/x-mscardfile + + + crl + application/pkix-crl + + + crt + application/x-x509-ca-cert + + + cryptonote + application/vnd.rig.cryptonote + + + csh + application/x-csh + + + csml + chemical/x-csml + + + csp + application/vnd.commonspace + + + css + text/css + + + cst + application/x-director + + + csv + text/csv + + + cu + application/cu-seeme + + + curl + text/vnd.curl + + + cww + application/prs.cww + + + cxt + application/x-director + + + cxx + text/x-c + + + dae + model/vnd.collada+xml + + + daf + application/vnd.mobius.daf + + + dataless + application/vnd.fdsn.seed + + + davmount + application/davmount+xml + + + dcr + application/x-director + + + dcurl + text/vnd.curl.dcurl + + + dd2 + application/vnd.oma.dd2+xml + + + ddd + application/vnd.fujixerox.ddd + + + deb + application/x-debian-package + + + def + text/plain + + + deploy + application/octet-stream + + + der + application/x-x509-ca-cert + + + dfac + application/vnd.dreamfactory + + + dib + image/bmp + + + dic + text/x-c + + + dir + application/x-director + + + dis + application/vnd.mobius.dis + + + dist + application/octet-stream + + + distz + application/octet-stream + + + djv + image/vnd.djvu + + + djvu + image/vnd.djvu + + + dll + application/x-msdownload + + + dmg + application/octet-stream + + + dmp + application/vnd.tcpdump.pcap + + + dms + application/octet-stream + + + dna + application/vnd.dna + + + doc + application/msword + + + docm + application/vnd.ms-word.document.macroenabled.12 + + + docx + application/vnd.openxmlformats-officedocument.wordprocessingml.document + + + dot + application/msword + + + dotm + application/vnd.ms-word.template.macroenabled.12 + + + dotx + application/vnd.openxmlformats-officedocument.wordprocessingml.template + + + dp + application/vnd.osgi.dp + + + dpg + application/vnd.dpgraph + + + dra + audio/vnd.dra + + + dsc + text/prs.lines.tag + + + dssc + application/dssc+der + + + dtb + application/x-dtbook+xml + + + dtd + application/xml-dtd + + + dts + audio/vnd.dts + + + dtshd + audio/vnd.dts.hd + + + dump + application/octet-stream + + + dv + video/x-dv + + + dvb + video/vnd.dvb.file + + + dvi + application/x-dvi + + + dwf + model/vnd.dwf + + + dwg + image/vnd.dwg + + + dxf + image/vnd.dxf + + + dxp + application/vnd.spotfire.dxp + + + dxr + application/x-director + + + ecelp4800 + audio/vnd.nuera.ecelp4800 + + + ecelp7470 + audio/vnd.nuera.ecelp7470 + + + ecelp9600 + audio/vnd.nuera.ecelp9600 + + + ecma + application/ecmascript + + + edm + application/vnd.novadigm.edm + + + edx + application/vnd.novadigm.edx + + + efif + application/vnd.picsel + + + ei6 + application/vnd.pg.osasli + + + elc + application/octet-stream + + + eml + message/rfc822 + + + emma + application/emma+xml + + + eol + audio/vnd.digital-winds + + + eot + application/vnd.ms-fontobject + + + eps + application/postscript + + + epub + application/epub+zip + + + es3 + application/vnd.eszigno3+xml + + + esf + application/vnd.epson.esf + + + et3 + application/vnd.eszigno3+xml + + + etx + text/x-setext + + + exe + application/octet-stream + + + exi + application/exi + + + ext + application/vnd.novadigm.ext + + + ez + application/andrew-inset + + + ez2 + application/vnd.ezpix-album + + + ez3 + application/vnd.ezpix-package + + + f + text/x-fortran + + + f4v + video/x-f4v + + + f77 + text/x-fortran + + + f90 + text/x-fortran + + + fbs + image/vnd.fastbidsheet + + + fcs + application/vnd.isac.fcs + + + fdf + application/vnd.fdf + + + fe_launch + application/vnd.denovo.fcselayout-link + + + fg5 + application/vnd.fujitsu.oasysgp + + + fgd + application/x-director + + + fh + image/x-freehand + + + fh4 + image/x-freehand + + + fh5 + image/x-freehand + + + fh7 + image/x-freehand + + + fhc + image/x-freehand + + + fig + application/x-xfig + + + flac + audio/flac + + + fli + video/x-fli + + + flo + application/vnd.micrografx.flo + + + flv + video/x-flv + + + flw + application/vnd.kde.kivio + + + flx + text/vnd.fmi.flexstor + + + fly + text/vnd.fly + + + fm + application/vnd.framemaker + + + fnc + application/vnd.frogans.fnc + + + for + text/x-fortran + + + fpx + image/vnd.fpx + + + frame + application/vnd.framemaker + + + fsc + application/vnd.fsc.weblaunch + + + fst + image/vnd.fst + + + ftc + application/vnd.fluxtime.clip + + + fti + application/vnd.anser-web-funds-transfer-initiation + + + fvt + video/vnd.fvt + + + fxp + application/vnd.adobe.fxp + + + fxpl + application/vnd.adobe.fxp + + + fzs + application/vnd.fuzzysheet + + + g2w + application/vnd.geoplan + + + g3 + image/g3fax + + + g3w + application/vnd.geospace + + + gac + application/vnd.groove-account + + + gbr + application/rpki-ghostbusters + + + gdl + model/vnd.gdl + + + geo + application/vnd.dynageo + + + gex + application/vnd.geometry-explorer + + + ggb + application/vnd.geogebra.file + + + ggt + application/vnd.geogebra.tool + + + ghf + application/vnd.groove-help + + + gif + image/gif + + + gim + application/vnd.groove-identity-message + + + gmx + application/vnd.gmx + + + gnumeric + application/x-gnumeric + + + gph + application/vnd.flographit + + + gqf + application/vnd.grafeq + + + gqs + application/vnd.grafeq + + + gram + application/srgs + + + gre + application/vnd.geometry-explorer + + + grv + application/vnd.groove-injector + + + grxml + application/srgs+xml + + + gsf + application/x-font-ghostscript + + + gtar + application/x-gtar + + + gtm + application/vnd.groove-tool-message + + + gtw + model/vnd.gtw + + + gv + text/vnd.graphviz + + + gxt + application/vnd.geonext + + + gz + application/x-gzip + + + h + text/x-c + + + h261 + video/h261 + + + h263 + video/h263 + + + h264 + video/h264 + + + hal + application/vnd.hal+xml + + + hbci + application/vnd.hbci + + + hdf + application/x-hdf + + + hh + text/x-c + + + hlp + application/winhlp + + + hpgl + application/vnd.hp-hpgl + + + hpid + application/vnd.hp-hpid + + + hps + application/vnd.hp-hps + + + hqx + application/mac-binhex40 + + + htc + text/x-component + + + htke + application/vnd.kenameaapp + + + htm + text/html + + + html + text/html + + + hvd + application/vnd.yamaha.hv-dic + + + hvp + application/vnd.yamaha.hv-voice + + + hvs + application/vnd.yamaha.hv-script + + + i2g + application/vnd.intergeo + + + icc + application/vnd.iccprofile + + + ice + x-conference/x-cooltalk + + + icm + application/vnd.iccprofile + + + ico + image/x-icon + + + ics + text/calendar + + + ief + image/ief + + + ifb + text/calendar + + + ifm + application/vnd.shana.informed.formdata + + + iges + model/iges + + + igl + application/vnd.igloader + + + igm + application/vnd.insors.igm + + + igs + model/iges + + + igx + application/vnd.micrografx.igx + + + iif + application/vnd.shana.informed.interchange + + + imp + application/vnd.accpac.simply.imp + + + ims + application/vnd.ms-ims + + + in + text/plain + + + ink + application/inkml+xml + + + inkml + application/inkml+xml + + + iota + application/vnd.astraea-software.iota + + + ipfix + application/ipfix + + + ipk + application/vnd.shana.informed.package + + + irm + application/vnd.ibm.rights-management + + + irp + application/vnd.irepository.package+xml + + + iso + application/octet-stream + + + itp + application/vnd.shana.informed.formtemplate + + + ivp + application/vnd.immervision-ivp + + + ivu + application/vnd.immervision-ivu + + + jad + text/vnd.sun.j2me.app-descriptor + + + jam + application/vnd.jam + + + jar + application/java-archive + + + java + text/x-java-source + + + jisp + application/vnd.jisp + + + jlt + application/vnd.hp-jlyt + + + jnlp + application/x-java-jnlp-file + + + joda + application/vnd.joost.joda-archive + + + jpe + image/jpeg + + + jpeg + image/jpeg + + + jpg + image/jpeg + + + jpgm + video/jpm + + + jpgv + video/jpeg + + + jpm + video/jpm + + + js + application/javascript + + + jsf + text/plain + + + json + application/json + + + jspf + text/plain + + + kar + audio/midi + + + karbon + application/vnd.kde.karbon + + + kfo + application/vnd.kde.kformula + + + kia + application/vnd.kidspiration + + + kml + application/vnd.google-earth.kml+xml + + + kmz + application/vnd.google-earth.kmz + + + kne + application/vnd.kinar + + + knp + application/vnd.kinar + + + kon + application/vnd.kde.kontour + + + kpr + application/vnd.kde.kpresenter + + + kpt + application/vnd.kde.kpresenter + + + ksp + application/vnd.kde.kspread + + + ktr + application/vnd.kahootz + + + ktx + image/ktx + + + ktz + application/vnd.kahootz + + + kwd + application/vnd.kde.kword + + + kwt + application/vnd.kde.kword + + + lasxml + application/vnd.las.las+xml + + + latex + application/x-latex + + + lbd + application/vnd.llamagraphics.life-balance.desktop + + + lbe + application/vnd.llamagraphics.life-balance.exchange+xml + + + les + application/vnd.hhe.lesson-player + + + lha + application/octet-stream + + + link66 + application/vnd.route66.link66+xml + + + list + text/plain + + + list3820 + application/vnd.ibm.modcap + + + listafp + application/vnd.ibm.modcap + + + log + text/plain + + + lostxml + application/lost+xml + + + lrf + application/octet-stream + + + lrm + application/vnd.ms-lrm + + + ltf + application/vnd.frogans.ltf + + + lvp + audio/vnd.lucent.voice + + + lwp + application/vnd.lotus-wordpro + + + lzh + application/octet-stream + + + m13 + application/x-msmediaview + + + m14 + application/x-msmediaview + + + m1v + video/mpeg + + + m21 + application/mp21 + + + m2a + audio/mpeg + + + m2v + video/mpeg + + + m3a + audio/mpeg + + + m3u + audio/x-mpegurl + + + m3u8 + application/vnd.apple.mpegurl + + + m4a + audio/mp4 + + + m4b + audio/mp4 + + + m4r + audio/mp4 + + + m4u + video/vnd.mpegurl + + + m4v + video/mp4 + + + ma + application/mathematica + + + mac + image/x-macpaint + + + mads + application/mads+xml + + + mag + application/vnd.ecowin.chart + + + maker + application/vnd.framemaker + + + man + text/troff + + + mathml + application/mathml+xml + + + mb + application/mathematica + + + mbk + application/vnd.mobius.mbk + + + mbox + application/mbox + + + mc1 + application/vnd.medcalcdata + + + mcd + application/vnd.mcd + + + mcurl + text/vnd.curl.mcurl + + + mdb + application/x-msaccess + + + mdi + image/vnd.ms-modi + + + me + text/troff + + + mesh + model/mesh + + + meta4 + application/metalink4+xml + + + mets + application/mets+xml + + + mfm + application/vnd.mfmp + + + mft + application/rpki-manifest + + + mgp + application/vnd.osgeo.mapguide.package + + + mgz + application/vnd.proteus.magazine + + + mid + audio/midi + + + midi + audio/midi + + + mif + application/x-mif + + + mime + message/rfc822 + + + mj2 + video/mj2 + + + mjp2 + video/mj2 + + + mlp + application/vnd.dolby.mlp + + + mmd + application/vnd.chipnuts.karaoke-mmd + + + mmf + application/vnd.smaf + + + mmr + image/vnd.fujixerox.edmics-mmr + + + mny + application/x-msmoney + + + mobi + application/x-mobipocket-ebook + + + mods + application/mods+xml + + + mov + video/quicktime + + + movie + video/x-sgi-movie + + + mp1 + audio/mpeg + + + mp2 + audio/mpeg + + + mp21 + application/mp21 + + + mp2a + audio/mpeg + + + mp3 + audio/mpeg + + + mp4 + video/mp4 + + + mp4a + audio/mp4 + + + mp4s + application/mp4 + + + mp4v + video/mp4 + + + mpa + audio/mpeg + + + mpc + application/vnd.mophun.certificate + + + mpe + video/mpeg + + + mpeg + video/mpeg + + + mpega + audio/x-mpeg + + + mpg + video/mpeg + + + mpg4 + video/mp4 + + + mpga + audio/mpeg + + + mpkg + application/vnd.apple.installer+xml + + + mpm + application/vnd.blueice.multipass + + + mpn + application/vnd.mophun.application + + + mpp + application/vnd.ms-project + + + mpt + application/vnd.ms-project + + + mpv2 + video/mpeg2 + + + mpy + application/vnd.ibm.minipay + + + mqy + application/vnd.mobius.mqy + + + mrc + application/marc + + + mrcx + application/marcxml+xml + + + ms + text/troff + + + mscml + application/mediaservercontrol+xml + + + mseed + application/vnd.fdsn.mseed + + + mseq + application/vnd.mseq + + + msf + application/vnd.epson.msf + + + msh + model/mesh + + + msi + application/x-msdownload + + + msl + application/vnd.mobius.msl + + + msty + application/vnd.muvee.style + + + mts + model/vnd.mts + + + mus + application/vnd.musician + + + musicxml + application/vnd.recordare.musicxml+xml + + + mvb + application/x-msmediaview + + + mwf + application/vnd.mfer + + + mxf + application/mxf + + + mxl + application/vnd.recordare.musicxml + + + mxml + application/xv+xml + + + mxs + application/vnd.triscape.mxs + + + mxu + video/vnd.mpegurl + + + n-gage + application/vnd.nokia.n-gage.symbian.install + + + n3 + text/n3 + + + nb + application/mathematica + + + nbp + application/vnd.wolfram.player + + + nc + application/x-netcdf + + + ncx + application/x-dtbncx+xml + + + ngdat + application/vnd.nokia.n-gage.data + + + nlu + application/vnd.neurolanguage.nlu + + + nml + application/vnd.enliven + + + nnd + application/vnd.noblenet-directory + + + nns + application/vnd.noblenet-sealer + + + nnw + application/vnd.noblenet-web + + + npx + image/vnd.net-fpx + + + nsf + application/vnd.lotus-notes + + + oa2 + application/vnd.fujitsu.oasys2 + + + oa3 + application/vnd.fujitsu.oasys3 + + + oas + application/vnd.fujitsu.oasys + + + obd + application/x-msbinder + + + oda + application/oda + + + + odb + application/vnd.oasis.opendocument.database + + + + odc + application/vnd.oasis.opendocument.chart + + + + odf + application/vnd.oasis.opendocument.formula + + + odft + application/vnd.oasis.opendocument.formula-template + + + + odg + application/vnd.oasis.opendocument.graphics + + + + odi + application/vnd.oasis.opendocument.image + + + + odm + application/vnd.oasis.opendocument.text-master + + + + odp + application/vnd.oasis.opendocument.presentation + + + + ods + application/vnd.oasis.opendocument.spreadsheet + + + + odt + application/vnd.oasis.opendocument.text + + + oga + audio/ogg + + + ogg + audio/ogg + + + ogv + video/ogg + + + + ogx + application/ogg + + + onepkg + application/onenote + + + onetmp + application/onenote + + + onetoc + application/onenote + + + onetoc2 + application/onenote + + + opf + application/oebps-package+xml + + + oprc + application/vnd.palm + + + org + application/vnd.lotus-organizer + + + osf + application/vnd.yamaha.openscoreformat + + + osfpvg + application/vnd.yamaha.openscoreformat.osfpvg+xml + + + otc + application/vnd.oasis.opendocument.chart-template + + + otf + application/x-font-otf + + + + otg + application/vnd.oasis.opendocument.graphics-template + + + + oth + application/vnd.oasis.opendocument.text-web + + + oti + application/vnd.oasis.opendocument.image-template + + + + otp + application/vnd.oasis.opendocument.presentation-template + + + + ots + application/vnd.oasis.opendocument.spreadsheet-template + + + + ott + application/vnd.oasis.opendocument.text-template + + + oxps + application/oxps + + + oxt + application/vnd.openofficeorg.extension + + + p + text/x-pascal + + + p10 + application/pkcs10 + + + p12 + application/x-pkcs12 + + + p7b + application/x-pkcs7-certificates + + + p7c + application/pkcs7-mime + + + p7m + application/pkcs7-mime + + + p7r + application/x-pkcs7-certreqresp + + + p7s + application/pkcs7-signature + + + p8 + application/pkcs8 + + + pas + text/x-pascal + + + paw + application/vnd.pawaafile + + + pbd + application/vnd.powerbuilder6 + + + pbm + image/x-portable-bitmap + + + pcap + application/vnd.tcpdump.pcap + + + pcf + application/x-font-pcf + + + pcl + application/vnd.hp-pcl + + + pclxl + application/vnd.hp-pclxl + + + pct + image/pict + + + pcurl + application/vnd.curl.pcurl + + + pcx + image/x-pcx + + + pdb + application/vnd.palm + + + pdf + application/pdf + + + pfa + application/x-font-type1 + + + pfb + application/x-font-type1 + + + pfm + application/x-font-type1 + + + pfr + application/font-tdpfr + + + pfx + application/x-pkcs12 + + + pgm + image/x-portable-graymap + + + pgn + application/x-chess-pgn + + + pgp + application/pgp-encrypted + + + pic + image/pict + + + pict + image/pict + + + pkg + application/octet-stream + + + pki + application/pkixcmp + + + pkipath + application/pkix-pkipath + + + plb + application/vnd.3gpp.pic-bw-large + + + plc + application/vnd.mobius.plc + + + plf + application/vnd.pocketlearn + + + pls + audio/x-scpls + + + pml + application/vnd.ctc-posml + + + png + image/png + + + pnm + image/x-portable-anymap + + + pnt + image/x-macpaint + + + portpkg + application/vnd.macports.portpkg + + + pot + application/vnd.ms-powerpoint + + + potm + application/vnd.ms-powerpoint.template.macroenabled.12 + + + potx + application/vnd.openxmlformats-officedocument.presentationml.template + + + ppam + application/vnd.ms-powerpoint.addin.macroenabled.12 + + + ppd + application/vnd.cups-ppd + + + ppm + image/x-portable-pixmap + + + pps + application/vnd.ms-powerpoint + + + ppsm + application/vnd.ms-powerpoint.slideshow.macroenabled.12 + + + ppsx + application/vnd.openxmlformats-officedocument.presentationml.slideshow + + + ppt + application/vnd.ms-powerpoint + + + pptm + application/vnd.ms-powerpoint.presentation.macroenabled.12 + + + pptx + application/vnd.openxmlformats-officedocument.presentationml.presentation + + + pqa + application/vnd.palm + + + prc + application/x-mobipocket-ebook + + + pre + application/vnd.lotus-freelance + + + prf + application/pics-rules + + + ps + application/postscript + + + psb + application/vnd.3gpp.pic-bw-small + + + psd + image/vnd.adobe.photoshop + + + psf + application/x-font-linux-psf + + + pskcxml + application/pskc+xml + + + ptid + application/vnd.pvi.ptid1 + + + pub + application/x-mspublisher + + + pvb + application/vnd.3gpp.pic-bw-var + + + pwn + application/vnd.3m.post-it-notes + + + pya + audio/vnd.ms-playready.media.pya + + + pyv + video/vnd.ms-playready.media.pyv + + + qam + application/vnd.epson.quickanime + + + qbo + application/vnd.intu.qbo + + + qfx + application/vnd.intu.qfx + + + qps + application/vnd.publishare-delta-tree + + + qt + video/quicktime + + + qti + image/x-quicktime + + + qtif + image/x-quicktime + + + qwd + application/vnd.quark.quarkxpress + + + qwt + application/vnd.quark.quarkxpress + + + qxb + application/vnd.quark.quarkxpress + + + qxd + application/vnd.quark.quarkxpress + + + qxl + application/vnd.quark.quarkxpress + + + qxt + application/vnd.quark.quarkxpress + + + ra + audio/x-pn-realaudio + + + ram + audio/x-pn-realaudio + + + rar + application/x-rar-compressed + + + ras + image/x-cmu-raster + + + rcprofile + application/vnd.ipunplugged.rcprofile + + + rdf + application/rdf+xml + + + rdz + application/vnd.data-vision.rdz + + + rep + application/vnd.businessobjects + + + res + application/x-dtbresource+xml + + + rgb + image/x-rgb + + + rif + application/reginfo+xml + + + rip + audio/vnd.rip + + + rl + application/resource-lists+xml + + + rlc + image/vnd.fujixerox.edmics-rlc + + + rld + application/resource-lists-diff+xml + + + rm + application/vnd.rn-realmedia + + + rmi + audio/midi + + + rmp + audio/x-pn-realaudio-plugin + + + rms + application/vnd.jcp.javame.midlet-rms + + + rnc + application/relax-ng-compact-syntax + + + roa + application/rpki-roa + + + roff + text/troff + + + rp9 + application/vnd.cloanto.rp9 + + + rpss + application/vnd.nokia.radio-presets + + + rpst + application/vnd.nokia.radio-preset + + + rq + application/sparql-query + + + rs + application/rls-services+xml + + + rsd + application/rsd+xml + + + rss + application/rss+xml + + + rtf + application/rtf + + + rtx + text/richtext + + + s + text/x-asm + + + saf + application/vnd.yamaha.smaf-audio + + + sbml + application/sbml+xml + + + sc + application/vnd.ibm.secure-container + + + scd + application/x-msschedule + + + scm + application/vnd.lotus-screencam + + + scq + application/scvp-cv-request + + + scs + application/scvp-cv-response + + + scurl + text/vnd.curl.scurl + + + sda + application/vnd.stardivision.draw + + + sdc + application/vnd.stardivision.calc + + + sdd + application/vnd.stardivision.impress + + + sdkd + application/vnd.solent.sdkm+xml + + + sdkm + application/vnd.solent.sdkm+xml + + + sdp + application/sdp + + + sdw + application/vnd.stardivision.writer + + + see + application/vnd.seemail + + + seed + application/vnd.fdsn.seed + + + sema + application/vnd.sema + + + semd + application/vnd.semd + + + semf + application/vnd.semf + + + ser + application/java-serialized-object + + + setpay + application/set-payment-initiation + + + setreg + application/set-registration-initiation + + + sfd-hdstx + application/vnd.hydrostatix.sof-data + + + sfs + application/vnd.spotfire.sfs + + + sgl + application/vnd.stardivision.writer-global + + + sgm + text/sgml + + + sgml + text/sgml + + + sh + application/x-sh + + + shar + application/x-shar + + + shf + application/shf+xml + + + + sig + application/pgp-signature + + + silo + model/mesh + + + sis + application/vnd.symbian.install + + + sisx + application/vnd.symbian.install + + + sit + application/x-stuffit + + + sitx + application/x-stuffitx + + + skd + application/vnd.koan + + + skm + application/vnd.koan + + + skp + application/vnd.koan + + + skt + application/vnd.koan + + + sldm + application/vnd.ms-powerpoint.slide.macroenabled.12 + + + sldx + application/vnd.openxmlformats-officedocument.presentationml.slide + + + slt + application/vnd.epson.salt + + + sm + application/vnd.stepmania.stepchart + + + smf + application/vnd.stardivision.math + + + smi + application/smil+xml + + + smil + application/smil+xml + + + smzip + application/vnd.stepmania.package + + + snd + audio/basic + + + snf + application/x-font-snf + + + so + application/octet-stream + + + spc + application/x-pkcs7-certificates + + + spf + application/vnd.yamaha.smaf-phrase + + + spl + application/x-futuresplash + + + spot + text/vnd.in3d.spot + + + spp + application/scvp-vp-response + + + spq + application/scvp-vp-request + + + spx + audio/ogg + + + src + application/x-wais-source + + + sru + application/sru+xml + + + srx + application/sparql-results+xml + + + sse + application/vnd.kodak-descriptor + + + ssf + application/vnd.epson.ssf + + + ssml + application/ssml+xml + + + st + application/vnd.sailingtracker.track + + + stc + application/vnd.sun.xml.calc.template + + + std + application/vnd.sun.xml.draw.template + + + stf + application/vnd.wt.stf + + + sti + application/vnd.sun.xml.impress.template + + + stk + application/hyperstudio + + + stl + application/vnd.ms-pki.stl + + + str + application/vnd.pg.format + + + stw + application/vnd.sun.xml.writer.template + + + sub + text/vnd.dvb.subtitle + + + sus + application/vnd.sus-calendar + + + susp + application/vnd.sus-calendar + + + sv4cpio + application/x-sv4cpio + + + sv4crc + application/x-sv4crc + + + svc + application/vnd.dvb.service + + + svd + application/vnd.svd + + + svg + image/svg+xml + + + svgz + image/svg+xml + + + swa + application/x-director + + + swf + application/x-shockwave-flash + + + swi + application/vnd.aristanetworks.swi + + + sxc + application/vnd.sun.xml.calc + + + sxd + application/vnd.sun.xml.draw + + + sxg + application/vnd.sun.xml.writer.global + + + sxi + application/vnd.sun.xml.impress + + + sxm + application/vnd.sun.xml.math + + + sxw + application/vnd.sun.xml.writer + + + t + text/troff + + + taglet + application/vnd.mynfc + + + tao + application/vnd.tao.intent-module-archive + + + tar + application/x-tar + + + tcap + application/vnd.3gpp2.tcap + + + tcl + application/x-tcl + + + teacher + application/vnd.smart.teacher + + + tei + application/tei+xml + + + teicorpus + application/tei+xml + + + tex + application/x-tex + + + texi + application/x-texinfo + + + texinfo + application/x-texinfo + + + text + text/plain + + + tfi + application/thraud+xml + + + tfm + application/x-tex-tfm + + + thmx + application/vnd.ms-officetheme + + + tif + image/tiff + + + tiff + image/tiff + + + tmo + application/vnd.tmobile-livetv + + + torrent + application/x-bittorrent + + + tpl + application/vnd.groove-tool-template + + + tpt + application/vnd.trid.tpt + + + tr + text/troff + + + tra + application/vnd.trueapp + + + trm + application/x-msterminal + + + tsd + application/timestamped-data + + + tsv + text/tab-separated-values + + + ttc + application/x-font-ttf + + + ttf + application/x-font-ttf + + + ttl + text/turtle + + + twd + application/vnd.simtech-mindmapper + + + twds + application/vnd.simtech-mindmapper + + + txd + application/vnd.genomatix.tuxedo + + + txf + application/vnd.mobius.txf + + + txt + text/plain + + + u32 + application/x-authorware-bin + + + udeb + application/x-debian-package + + + ufd + application/vnd.ufdl + + + ufdl + application/vnd.ufdl + + + ulw + audio/basic + + + umj + application/vnd.umajin + + + unityweb + application/vnd.unity + + + uoml + application/vnd.uoml+xml + + + uri + text/uri-list + + + uris + text/uri-list + + + urls + text/uri-list + + + ustar + application/x-ustar + + + utz + application/vnd.uiq.theme + + + uu + text/x-uuencode + + + uva + audio/vnd.dece.audio + + + uvd + application/vnd.dece.data + + + uvf + application/vnd.dece.data + + + uvg + image/vnd.dece.graphic + + + uvh + video/vnd.dece.hd + + + uvi + image/vnd.dece.graphic + + + uvm + video/vnd.dece.mobile + + + uvp + video/vnd.dece.pd + + + uvs + video/vnd.dece.sd + + + uvt + application/vnd.dece.ttml+xml + + + uvu + video/vnd.uvvu.mp4 + + + uvv + video/vnd.dece.video + + + uvva + audio/vnd.dece.audio + + + uvvd + application/vnd.dece.data + + + uvvf + application/vnd.dece.data + + + uvvg + image/vnd.dece.graphic + + + uvvh + video/vnd.dece.hd + + + uvvi + image/vnd.dece.graphic + + + uvvm + video/vnd.dece.mobile + + + uvvp + video/vnd.dece.pd + + + uvvs + video/vnd.dece.sd + + + uvvt + application/vnd.dece.ttml+xml + + + uvvu + video/vnd.uvvu.mp4 + + + uvvv + video/vnd.dece.video + + + uvvx + application/vnd.dece.unspecified + + + uvvz + application/vnd.dece.zip + + + uvx + application/vnd.dece.unspecified + + + uvz + application/vnd.dece.zip + + + vcard + text/vcard + + + vcd + application/x-cdlink + + + vcf + text/x-vcard + + + vcg + application/vnd.groove-vcard + + + vcs + text/x-vcalendar + + + vcx + application/vnd.vcx + + + vis + application/vnd.visionary + + + viv + video/vnd.vivo + + + vor + application/vnd.stardivision.writer + + + vox + application/x-authorware-bin + + + vrml + model/vrml + + + vsd + application/vnd.visio + + + vsf + application/vnd.vsf + + + vss + application/vnd.visio + + + vst + application/vnd.visio + + + vsw + application/vnd.visio + + + vtu + model/vnd.vtu + + + vxml + application/voicexml+xml + + + w3d + application/x-director + + + wad + application/x-doom + + + wav + audio/x-wav + + + wax + audio/x-ms-wax + + + + wbmp + image/vnd.wap.wbmp + + + wbs + application/vnd.criticaltools.wbs+xml + + + wbxml + application/vnd.wap.wbxml + + + wcm + application/vnd.ms-works + + + wdb + application/vnd.ms-works + + + weba + audio/webm + + + webm + video/webm + + + webp + image/webp + + + wg + application/vnd.pmi.widget + + + wgt + application/widget + + + wks + application/vnd.ms-works + + + wm + video/x-ms-wm + + + wma + audio/x-ms-wma + + + wmd + application/x-ms-wmd + + + wmf + application/x-msmetafile + + + + wml + text/vnd.wap.wml + + + + wmlc + application/vnd.wap.wmlc + + + + wmls + text/vnd.wap.wmlscript + + + + wmlsc + application/vnd.wap.wmlscriptc + + + wmv + video/x-ms-wmv + + + wmx + video/x-ms-wmx + + + wmz + application/x-ms-wmz + + + woff + application/x-font-woff + + + wpd + application/vnd.wordperfect + + + wpl + application/vnd.ms-wpl + + + wps + application/vnd.ms-works + + + wqd + application/vnd.wqd + + + wri + application/x-mswrite + + + wrl + model/vrml + + + wsdl + application/wsdl+xml + + + wspolicy + application/wspolicy+xml + + + wtb + application/vnd.webturbo + + + wvx + video/x-ms-wvx + + + x32 + application/x-authorware-bin + + + x3d + application/vnd.hzn-3d-crossword + + + xap + application/x-silverlight-app + + + xar + application/vnd.xara + + + xbap + application/x-ms-xbap + + + xbd + application/vnd.fujixerox.docuworks.binder + + + xbm + image/x-xbitmap + + + xdf + application/xcap-diff+xml + + + xdm + application/vnd.syncml.dm+xml + + + xdp + application/vnd.adobe.xdp+xml + + + xdssc + application/dssc+xml + + + xdw + application/vnd.fujixerox.docuworks + + + xenc + application/xenc+xml + + + xer + application/patch-ops-error+xml + + + xfdf + application/vnd.adobe.xfdf + + + xfdl + application/vnd.xfdl + + + xht + application/xhtml+xml + + + xhtml + application/xhtml+xml + + + xhvml + application/xv+xml + + + xif + image/vnd.xiff + + + xla + application/vnd.ms-excel + + + xlam + application/vnd.ms-excel.addin.macroenabled.12 + + + xlc + application/vnd.ms-excel + + + xlm + application/vnd.ms-excel + + + xls + application/vnd.ms-excel + + + xlsb + application/vnd.ms-excel.sheet.binary.macroenabled.12 + + + xlsm + application/vnd.ms-excel.sheet.macroenabled.12 + + + xlsx + application/vnd.openxmlformats-officedocument.spreadsheetml.sheet + + + xlt + application/vnd.ms-excel + + + xltm + application/vnd.ms-excel.template.macroenabled.12 + + + xltx + application/vnd.openxmlformats-officedocument.spreadsheetml.template + + + xlw + application/vnd.ms-excel + + + xml + application/xml + + + xo + application/vnd.olpc-sugar + + + xop + application/xop+xml + + + xpi + application/x-xpinstall + + + xpm + image/x-xpixmap + + + xpr + application/vnd.is-xpr + + + xps + application/vnd.ms-xpsdocument + + + xpw + application/vnd.intercon.formnet + + + xpx + application/vnd.intercon.formnet + + + xsl + application/xml + + + xslt + application/xslt+xml + + + xsm + application/vnd.syncml+xml + + + xspf + application/xspf+xml + + + xul + application/vnd.mozilla.xul+xml + + + xvm + application/xv+xml + + + xvml + application/xv+xml + + + xwd + image/x-xwindowdump + + + xyz + chemical/x-xyz + + + yang + application/yang + + + yin + application/yin+xml + + + z + application/x-compress + + + Z + application/x-compress + + + zaz + application/vnd.zzazz.deck+xml + + + zip + application/zip + + + zir + application/vnd.zul + + + zirz + application/vnd.zul + + + zmm + application/vnd.handheld-entertainment+xml + + + + + + + + + + + + + + + + + + index.html + index.htm + index.jsp + + + diff --git a/templates/tomcat_access.logrotate.j2 b/templates/tomcat_access.logrotate.j2 new file mode 100644 index 0000000..a4082fd --- /dev/null +++ b/templates/tomcat_access.logrotate.j2 @@ -0,0 +1,8 @@ +{{ tomcat_logdir }}/localhost_access.log { + copytruncate + {{ tomcat_access_log_rotation_freq }} + rotate {{ tomcat_retain_old_logs }} + compress + missingok + create 640 {{ tomcat_user }} adm +}