Настройка: Сервер QGis-2.18 (на самом деле встроенный MapServer ) через FastCGI в Apache-2.4.18 на Ubuntu.
Если в строке запроса для обработчика cgi установлено определенное значение, я хотел бы добавить другое значение. С этой целью я добавил три строки в начало /etc/apache2/conf-enabled/qgis.conf
:
RewriteEngine on
RewriteCond "%{QUERY_STRING}" "application/json" [NC]
RewriteRule "^/$" "/?OUTPUTFORMAT=GeoJSON" [PT,QSA]
ScriptAlias / /usr/lib/cgi-bin/qgis_mapserv.fcgi
<Location "/">
SetHandler fcgid-script
Require all granted
PassEnv QGIS_PROJECT_FILE
</Location>
FcgidInitialEnv QGIS_LOG_FILE ${QGIS_LOG_FILE}
FcgidInitialEnv QGIS_SERVER_LOG_FILE ${QGIS_SERVER_LOG_FILE}
FcgidInitialEnv QGIS_DEBUG ${QGIS_DEBUG}
FcgidInitialEnv QGIS_SERVER_LOG_LEVEL ${QGIS_SERVER_LOG_LEVEL}
FcgidInitialEnv QGIS_PLUGINPATH "${QGIS_PLUGINPATH}"
FcgidInitialEnv PGSERVICEFILE ${PGSERVICEFILE}
FcgidInitialEnv HOME /var/www
Я получаю доступ к серверу следующим образом:
http://myserver.invalid.tld:51081/
?SERVICE=WFS
&VERSION=1.1.0
&REQUEST=GetFeature
&OUTPUTFORMAT=application/json
&MAXFEATURES=1
&SRSNAME=EPSG:4326
&TYPENAME=feature_type_name
&BBOX=8.5985658,56.447691,8.600106,56.448553
Я бы получил ожидал, что эффект будет таким же, как если бы я вручную добавил & OUTPUTFORMAT = GeoJSON
в конец моего URL, но я не вижу никакой разницы после перезапуска apache. (Да, я запустил sudo a2enmod rewrite
.)
Я не уверен, как работает взаимодействие между правилами перезаписи и псевдонимом скрипта, поэтому я думаю, что одно затмевает другое? К сожалению, я также не знаю, как это отладить.
На сервере включен один виртуальный хост, который для меня выглядит как конфигурация OOTB:
# apache2ctl -S
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.10. Set the 'ServerName' directive globally to suppress this message
VirtualHost configuration:
*:80 172.17.0.10 (/etc/apache2/sites-enabled/000-default.conf:1)
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/proc/self/fd/2"
Mutex default: dir="/var/lock/apache2" mechanism=fcntl
Mutex fcgid-pipe: using_defaults
Mutex watchdog-callback: using_defaults
Mutex rewrite-map: using_defaults
Mutex fcgid-proctbl: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33
Вот / etc / apache2 / sites-enabled / 000-default .conf
(комментарии удалены):
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog /proc/self/fd/2
CustomLog /proc/self/fd/1 combined
</VirtualHost>
И, наконец, apache2.conf
(опять же, комментарии удалены):
Mutex file:${APACHE_LOCK_DIR} default
PidFile ${APACHE_PID_FILE}
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
HostnameLookups Off
ErrorLog /proc/self/fd/2
LogLevel warn
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
Include ports.conf
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
AccessFileName .htaccess
<FilesMatch "^\.ht">
Require all denied
</FilesMatch>
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
IncludeOptional conf-enabled/*.conf
IncludeOptional sites-enabled/*.conf
(Для бонусных баллов я бы хотел заменить application / json
в строке запроса с GeoJSON
, но если бы я мог добавить параметр для начала, я близок к цели. com / community / tutorials / how-to-set-up-apache-virtual-hosts-on-ubuntu-14-04-lts
digitalocean.com/community/tutorials/how-to-set-up-vsftpd- for-a-user-s-directory-on-ubuntu-16-04
Но я запутался во всех частях chown и chmod ..
Кто-нибудь может определить по скриншотам, что я сделал не так и как исправить?
Если нужна дополнительная информация, скажите мне ..
При просмотре вашего вывода выясняется, что Apache работает под учетной записью пользователя www-data. Однако ваши файлы / каталоги принадлежат martin: martin.
sudo chown -R www-data:www-data /var/www/
sudo chmod -R 755 /var/www/
Вышеупомянутый chown Команда (изменить владельца) сделает владельца каталога www-data, который будет соответствовать владельцу службы для Apache. Вторая команда устанавливает правильные разрешения для каталога public_html.
Если вышеуказанное не работает для вас, укажите следующее .
Четкое описание того, как далеко вы продвинулись в обучающих программах, а также точное место, в котором вы застряли в процессе.