Я пытаюсь создать человечность живой CD с нуля, но я перестал работать с автоматической конфигурацией для сетевой карты. Живой CD загружается в рабочий стол, но NetworkManager застревает, чтобы быть ненастроенным. Конфигурация/etc/network/interfaces является нетронутой, поэтому она должна быть настроена NetworkManager, но это не. Когда настольная среда загружается, NetworkManager отключен без настроенного соединения.
Что случилось с моей конфигурацией?
Для репродуцирования - как я создаю свой живой CD:
Вам нужно:
apt install build-essential debootstrap squashfs-tools genisoimage syslinux-common syslinux-utils
теперь скопируйте основную систему с исходной ISO:
mount -o loop kubuntu-16.10-desktop-amd64.iso /mnt/tmp/
mkdir -p /usr/local/src/custom-ubuntu/iso && cd /usr/local/src/custom-ubuntu/iso
cp -r /mnt/tmp/.disk/ .
cp -r /mnt/tmp/boot/ .
cp -r /mnt/tmp/isolinux/ .
cp -r /mnt/tmp/EFI/ .
mkdir casper
создайте мини-человечность
debootstrap --arch amd64 yakkety /usr/local/src/custom-ubuntu/squashfs
смонтируйте устройства и chroot в squashfs
cd /usr/local/src/custom-ubuntu/
mount --bind /dev squashfs/dev
mount -t devpts devpts squashfs/dev/pts
mount -t proc proc squashfs/proc
mount -t sysfs sysfs squashfs/sys
cp /etc/resolv.conf squashfs/etc/
cp /etc/apt/sources.list squashfs/etc/
chroot squashfs
установите свои любимые программы для Вашего живого CD. В моем случае это
apt install bash-completion ssh vim gpm htop iotop cifs-utils ntp mc rar unrar unace arj p7zip-full apt-file lsb-release dmidecode hdparm realpath acpid aptitude unzip ncdu di localepurge console-data gnu-fdisk intel-microcode amd64-microcode sysstat bc unattended-upgrades btrfs-progs btrfs-tools hfsplus hfsprogs hfsutils exfat-fuse exfat-utils ntfs-3g gparted gpart gddrescue linux-image-generic linux-signed-generic linux-signed-image-generic linux-firmware linux-base linux-tools-generic linux-wlan-ng linux-headers-generic grub-efi casper lupin-casper ubiquity-casper firefox okular libreoffice libreoffice-kde gtk2-engines-oxygen gtk3-engines-breeze k4dirstat meld partitionmanager gsmartcontrol
apt clean
Установите свою любимую настольную среду.
оставьте chroot и скопируйте новое ядро
cp squashfs/boot/initrd.img-4.8.0-27-generic iso/casper/initrd.lz
cp squashfs/boot/vmlinuz-4.8.0-27-generic iso/casper/vmlinuz.efi
umount и моются:
umount squashfs/dev/pts
umount squashfs/dev
umount squashfs/proc
umount squashfs/sys
rm squashfs/etc/resolv.conf
Теперь Вы закончены, и пора создать файловую систему сквоша и создать файл ISO:
mksquashfs squashfs iso/casper/filesystem.squashfs -noappend
genisoimage -cache-inodes -r -J -joliet-long -input-charset utf-8 -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -e boot/grub/efi.img -no-emul-boot -o live.iso iso
isohybrid -u live.iso
Отобразите сервлет контроллера на более определенном url-pattern
как /pages/*
, поместите статическое содержание в определенную папку как /static
и создайте Filter
слушание на /*
, который прозрачно продолжает цепочку для любого статического содержания и отправляет запросы сервлету контроллера для другого содержания.
Вкратце:
<filter>
<filter-name>filter</filter-name>
<filter-class>com.example.Filter</filter-class>
</filter>
<filter-mapping>
<filter-name>filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>controller</servlet-name>
<servlet-class>com.example.Controller</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>controller</servlet-name>
<url-pattern>/pages/*</url-pattern>
</servlet-mapping>
со следующим в фильтре doFilter()
:
HttpServletRequest req = (HttpServletRequest) request;
String path = req.getRequestURI().substring(req.getContextPath().length());
if (path.startsWith("/static")) {
chain.doFilter(request, response); // Goes to default servlet.
} else {
request.getRequestDispatcher("/pages" + path).forward(request, response);
}
нет, это не заканчивается с /pages
в адресной строке браузера. Это полностью прозрачно. Можно при необходимости сделать "/static"
и/или "/pages"
init-param
из фильтра.
При использовании Tomcat можно отобразить ресурсы на сервлет по умолчанию:
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/static/*</url-pattern>
</servlet-mapping>
и доступ Ваши ресурсы с URL http://{путь контекста}/static/res/...
Также работы с Причалом, не уверенным в других контейнерах сервлета.
То, что Вы делаете, добавляет желанный файл в Вашем web.xml
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
И затем добавляет это к Вашим отображениям сервлета так, чтобы, когда кто-то переходит к корню Вашего приложения, они были отправлены в index.html внутренне, и затем отображение внутренне отправит их в сервлет, Вы отображаете его на
<servlet-mapping>
<servlet-name>MainActions</servlet-name>
<url-pattern>/main</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>MainActions</servlet-name>
<url-pattern>/index.html</url-pattern>
</servlet-mapping>
Конечный результат: Вы посещаете Приложение/, но Вам дарят/Application/MainActions сервлет, не разрушая никакие другие корневые запросы.
Получают его? Таким образом, Ваше приложение все еще находится в sub URL, но автоматически представлено, когда пользователь переходит к корню Вашего сайта. Это позволяет, Вы, чтобы иметь/images/bob.img все еще переходите к обычному месту, но '/' Ваше приложение.
Относительно Tomcat много зависит от конкретной версии. Было исправление ошибки https://bz.apache.org/bugzilla/show_bug.cgi? id=50026, что означает отображение сервлета (кроме для '/') для сервлета по умолчанию, ведет себя по-другому в Tomcat 6.0.29 (и ранее) по сравнению с более поздними версиями.
С Spring 3.0.4. ВЫПУСК и выше можно использовать
<mvc:resources mapping="/resources/**" location="/public-resources/"/>
, Как замечено в Ссылка Spring .
Обслуживание статического содержания с соответствующим суффиксом в нескольких отображающих сервлет определениях решило проблему безопасности, которая упоминается в одном из комментариев в одном из отправленных ответов. Заключенный в кавычки ниже:
Это было дырой в системе безопасности в Tomcat (СЕТЬ-INF, и содержание META-INF доступно этот путь), и это было зафиксировано в 7.0.4 (и будет портирован к 5.x и 6.x также). †“BalusC 2 ноября '10 в 22:44
, который помог мне много. И вот то, как я решил его:
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.css</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.jpg</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
С 3.0.4 необходимо смочь использовать mvc:resources
в сочетании с mvc:default-servlet-handler
, как описано в пружинной документации для достижения этого.
Причина коллизии, кажется, потому что по умолчанию корень контекста, "/", должен быть обработан org.apache.catalina.servlets. DefaultServlet. Этот сервлет предназначается для обрабатывания запросов для статических ресурсов.
, Если Вы решаете ударить его из пути с Вашим собственным сервлетом с намерением обрабатывания динамических запросов, тот сервлет верхнего уровня должен также выполнить любые задачи, выполненные исходным обработчиком catalina "DefaultServlet".
, Если Вы прочитываете документы кота, они упоминают, что Истинный Apache (httpd) лучше, чем Tomcat Apache для обработки статического содержания, так как это - цель, созданная, чтобы сделать просто это. Мое предположение то, потому что Tomcat использованием по умолчанию org.apache.catalina.servlets. DefaultServlet для обрабатывания статических запросов. Так как это все обернуто в JVM, и Tomcat предназначается к как контейнер Servlet/JSP, они, вероятно, не записали что класс как супероптимизированный статический обработчик содержимого. Это там. Это сделало задание. Достаточно хороший.
, Но это - вещь, которая обрабатывает статическое содержание, и это живет в "/". Таким образом, если Вы помещаете что-либо еще там, и та вещь не обрабатывает статические запросы, ВОЗГЛАСЫ, там идет Ваши статические ресурсы.
я искал высоко и низко для того же ответа и ответа, который я получаю, везде, "если Вы не хотите, чтобы он сделал это, не делайте этого".
Такая длинная короткая история, Ваша конфигурация перемещает статический обработчик ресурсов по умолчанию с чем-то, что не является статическим обработчиком ресурсов вообще. Необходимо будет попробовать другую конфигурацию для получения результатов, которые Вы ищете (как будет I).
Добавьте папки, которые Вы не хотите инициировать обработку сервлета к <static-files>
раздел Вашего файла appengine-web.xml.
я просто сделал это и похож на вещи, начинают работать хорошо. Вот моя структура:
/
/pages/< файлы .jsp>
/css
, я добавил "/страницы / **" и "/CSS / **" к эти <static-files>
, раздел и я может теперь передать .jsp файлу из сервлета doGet, не вызывая бесконечный цикл.
После попытки фильтра приближаются без успеха (это по некоторым причинам не ввело doFilter () функция), я изменил свою установку немного и нашел очень простое решение для корневой проблемы обслуживания:
Вместо того, чтобы служить "/*" в моем основном Сервлете, я теперь только слушаю специализированные префиксы языка "EN", "EN/*", "DE", "DE/* "
Статическое содержание подается Сервлетом по умолчанию, и пустые корневые запросы переходят к index.jsp, который звонит моему основному Сервлету с языком по умолчанию:
< страница jsp:include = "/EN /"/> (никакое другое содержание на индексной странице.)
Лучший способ обработать это использует некоторую перезапись URL. Таким образом у Вас могут быть чистые успокоительные URL, а НЕ с любыми расширениями т.е. abc.com/welcom/register в противоположность abc.com/welcome/resister.html
, я использую Tuckey URL, который довольно прохладен.
Это имеет инструкции относительно того, как настроить Ваше веб-приложение. Я настроил его со своим Spring веб-приложение MVC. Конечно, все было прекрасно, пока я не хотел использовать аннотации для Spring 3 проверки как @Email
или @Null
для объектов области.
, Когда я добавляю Spring mvc директивы:
< mvc:annotation-driven />
< mvc:default-servlet-handler />
.. это взламывает хороший ol код Tuckey. По-видимому, < mvc:default-servlet-handler />
замены Tuckey, который я все еще пытаюсь решить.
'Статические' файлы в Механизме Приложения не непосредственно доступны Вашему приложению. Или необходимо загрузить их дважды или служить статическим файлам сами, вместо того, чтобы использовать статический обработчик.
Я нашел, что использование
<mvc:default-servlet-handler />
в пружинном бобовом файле определения сервлета MVC работает на меня. Это передает любой запрос, который не обработан зарегистрированным контроллером MVC на исходном обработчике контейнера по умолчанию, который должен служить ему в качестве статического содержания. Просто удостоверьтесь, что у Вас нет контроллера, зарегистрированного, который обрабатывает все, и это должно работать просто великолепно. Не уверенный, почему @logixplayer предлагает перезапись URL; можно достигнуть эффекта, он ищет просто соответственно использование Spring один только MVC.
Я рекомендовал бы пытаться использовать Фильтр вместо сервлета по умолчанию, когда это возможно.
Другие две возможности:
Запишите FileServlet сами. Вы найдете много примеров, это должно просто открыть файл URL и записать его содержание в поток вывода. Затем используйте его для обслуживания статического запроса файла.
Инстанцируйте класса FileServlet, используемого Google App Engine и обслуживанием вызовов (запрос, ответ) на том, что FileServlet, когда необходимо будет служить статическому файлу в данном URL.
Можно отобразить/res /* к YourFileServlet или безотносительно исключить его из обработки DispatcherServlets или назвать его непосредственно от DispatcherServlet.
И, я должен спросить, что документация Spring говорит об этой коллизии? Я никогда не использовал его.
Я нашел простое решение с фиктивным индексным файлом.
Создают Сервлет (или используйте тот, который Вы хотели ответить на "/"), который отображается на "/index.html" (Решения, упомянутые здесь, используют отображение через XML, я использовал 3,0 версии с аннотацией @WebServlet), Затем создают статический (пустой) файл в корне статического содержания под названием "index.html"
, я использовал Причал, и что произошло, был то, что сервер распознал файл вместо того, чтобы перечислить каталог, но при просьбе относительно ресурса мой Сервлет взял на себя управление вместо этого. Все другое статическое содержание осталось незатронутым.
Во Встроенном Причале мне удалось достигнуть чего-то подобного путем добавления отображения для каталога "CSS" в web.xml. Явно говоря этому использовать DefaultServlet:
<servlet>
<servlet-name>DefaultServlet</servlet-name>
<servlet-class>org.eclipse.jetty.servlet.DefaultServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DefaultServlet</servlet-name>
<url-pattern>/css/*</url-pattern>
</servlet-mapping>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<mvc:default-servlet-handler/>
</beans>
и если Вы хотите использовать основанное на аннотации использование конфигурации ниже кода
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}