2017-10-11 4 views
0

J'essaie d'obtenir Cockpit CMS (https://getcockpit.com/documentation) en cours d'exécution sur un serveur Ubuntu 16.04. La documentation est limitée. J'ai placé le dossier cockpit à l'intérieur de ma racine de document Apache au /var/www/html/root/cms.Cockpit CMS ne sera pas servi par Apache après l'installation (erreur 404)

La page d'installation trouvée au website.com/cms/install a fonctionné. Cette page redirige maintenant vers website.com/cms/auth/login qui ne peut être trouvé (erreur 404). website.com/cms redirige également vers /cms/auth/login.

Le répertoire /var/www/html/root/cms/auth/login n'existe pas (identique au local). Tout fonctionne sur l'environnement local en utilisant MAMP, en utilisant la même structure de répertoire.

journal Apache a l'erreur suivante, mais je ne pense pas que c'est lié:

server certificate does NOT include an ID which matches the server name

J'ai essayé la configuration d'Apache et de donner /cms/ un alias pointant vers le répertoire. J'ai également changé les permissions sur le répertoire /var/www/html/root/cms/ pour que tous les fichiers soient lisibles. J'ai essayé de changer le DocumentRoot en /var/www/html2/. Dans ce répertoire, il n'y a rien d'autre que le dossier cms. Cela n'a pas fait de différence, et il continue de faire des erreurs avec un 404 lors de la demande website.com/cms/auth/login

Je ne pense pas que ce soit un problème de dépendance. La version de PHP est 7.0. PDO + SQLite est installé. php7.0-gd est installé. mod_rewrite est également activé.

Voici mes sites-enabled fichier de configuration:

<VirtualHost *:80> 
    Redirect/https://website.com/ 
</VirtualHost> 
<VirtualHost *:443> 
    # The ServerName directive sets the request scheme, hostname and port that 
    # the server uses to identify itself. This is used when creating 
    # redirection URLs. In the context of virtual hosts, the ServerName 
    # specifies what hostname must appear in the request's Host: header to 
    # match this virtual host. For the default virtual host (this file) this 
    # value is not decisive as it is used as a last resort host regardless. 
    # However, you must set it for any further virtual host explicitly. 
    #ServerName www.example.com 

    ServerAdmin [email protected] 
    DocumentRoot /var/www/html/root 
    # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, 
    # error, crit, alert, emerg. 
    # It is also possible to configure the loglevel for particular 
    # modules, e.g. 
    #LogLevel info SSLCertificateChainFile /usr/local/ssl/crt/intermediate.crt 
    SSLEngine on 
     SSLCertificateFile /usr/local/ssl/crt/public.crt 
     SSLCertificateKeyFile /usr/local/ssl/crt/website.key 
     SSLCertificateChainFile /usr/local/ssl/crt/intermediate.crt 
    ErrorLog ${APACHE_LOG_DIR}/error.log 
    CustomLog ${APACHE_LOG_DIR}/access.log combined 

    # For most configuration files from conf-available/, which are 
    # enabled or disabled at a global level, it is possible to 
    # include a line for only one particular virtual host. For example the 
    # following line enables the CGI configuration for this host only 
    # after it has been globally disabled with "a2disconf". 
    #Include conf-available/serve-cgi-bin.conf 

    Alias /alternate/ "/var/www/html/alternate/" 
    <Directory "/var/www/html/alternate/"> 
    </Directory> 
    Alias /root/ "/var/www/html/root/" 
     <Directory "/var/www/html/root/"> 
    </Directory> 
</VirtualHost> 
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet 
+0

Cela ne devrait pas être difficile. Supprimez vos 'Alias'es, supprimez les 2 blocs' Directory' vides. Ajoutez un 'ServerName'. Pointez le 'DocumentRoot' sur'/var/www/html/root/cms' (le répertoire où 'README.md' est). Redémarrez Apache. Assurez-vous que votre répertoire 'storage' est accessible en écriture. –

+0

@ Don'tPanic Merci beaucoup pour la réponse. J'ai fait tout cela, mais l'erreur persiste. Quoi d'autre pourrait être la cause? – matthewninja

+0

J'ai ajouté une réponse avec une autre étape clé - est-ce que cela m'a aidé? –

Répondre

1

install/index.php existe vraiment sur le disque, tant que Apache et PHP fonctionne, vous serez en mesure d'atteindre ce fichier sans configuration de serveur spécial. C'est comme ça que vous êtes là OK.

Cependant, une fois installé, Cockpit repose sur les règles de redirection spécifiées dans .htaccess aux URL de route comme auth/login, qui se font pas exister sur le disque, le fichier réel approprié pour le traitement. Si cela échoue, cela signifie que les règles de réécriture ne fonctionnent pas, et vous devez le configurer.

D'abord, assurez-vous que mod_rewrite est activé. Sur Ubuntu, vous devriez être en mesure de le faire comme ceci:

sudo a2enmod rewrite 

Ensuite, vous devez vous assurer le traitement des fichiers .htaccess est activé - si ce n'est pas, .htaccess fichiers (comme celui dans le répertoire Cockpit) sont simplement ignoré. Ajoutez la section suivante au bloc VirtualHost de votre configuration d'hôte virtuel (probablement quelque chose comme /etc/apache2/sites-available/website.conf):

# The Directory should be where Cockpit's README.md is 
<Directory "/var/www/html/root/cms"> 
    AllowOverride All 
</Directory> 

Ensuite, comme indiqué dans les commentaires, retirez les Alias es et Directory vides blocs que vous avez dans votre configuration d'hôte virtuel , ils ne sont pas nécessaires et ne font que compliquer les choses.Voici le fichier de configuration final:

<VirtualHost *:80> 
    Redirect/https://website.com/ 
</VirtualHost> 

<VirtualHost *:443> 
    # Add your real, fully-qualified servername 
    ServerName www.example.com 

    ServerAdmin [email protected] 

    # The Directory should be where Cockpit's README.md is 
    DocumentRoot /var/www/html/root/cms 

    # The Directory should be where Cockpit's README.md is 
    <Directory "/var/www/html/root/cms"> 
     AllowOverride All 
    </Directory> 

    SSLEngine on 
     SSLCertificateFile /usr/local/ssl/crt/public.crt 
     SSLCertificateKeyFile /usr/local/ssl/crt/website.key 
     SSLCertificateChainFile /usr/local/ssl/crt/intermediate.crt 
    ErrorLog ${APACHE_LOG_DIR}/error.log 
    CustomLog ${APACHE_LOG_DIR}/access.log combined 

</VirtualHost> 

Redémarrez Apache pour que ces modifications prennent effet:

sudo systemctl restart apache2 
+0

En ajoutant 'AllowOverride All' à la balise de répertoire, mon problème a été résolu. – matthewninja

0
Cockpit CMS Requirements: 

PHP >= 5.5 
PDO + SQLite (or MongoDB) 
GD extension 
mod_rewrite enabled (on apache) !!IMPORTANT!! 

Fix, vous pouvez dans la console:

sudo a2enmod rewrite 
sudo service apache2 restart 
+0

Je ne pense pas que ce soit un problème de dépendance. La version de PHP est 7.0. PDO + SQLite est installé. php7.0-gd est installé. mod_rewrite est également activé. – matthewninja

+0

@matthewninja pouvez-vous afficher le fichier de configuration des sites Apache? –

+0

Vasya Zhuryk J'ai mis à jour mon article avec le fichier des sites. J'ai également mis à jour les chemins. Je sais que la config semble bizarre. J'ai aussi essayé d'avoir les cms dans le dossier 'html' et d'utiliser' html' comme répertoire de base. Cela n'a pas fait de différence. – matthewninja