L'aggiornamento a El Capitan ha rotto MySQL e Apache

1

A causa di circostanze impreviste, sono stato costretto ad aggiornare a OS X 10.11 (El Capitan).

Qui, il processo che ho seguito è stato:

  1. installa Yosemite su un disco rigido esterno;
  2. migrazione dei dati da MacBook Pro sul disco rigido esterno;
  3. quindi riformattare il MacBook Pro;
  4. installa Yosemite su MacBook Pro;
  5. aggiorna MacBook Pro a El Capitan;
  6. e migrare i dati dal disco rigido esterno a MacBook Pro.

Durante la migrazione, sono riuscito a mantenere i database per MySQL e sembra che sia la stessa versione di Mavericks (mysql-5.6.14-osx10.7-x86_64).

Tuttavia, quando vado al riquadro delle preferenze per MySQL nelle Preferenze di Sistema, mi viene detto "L'istanza del server MySQL non è in esecuzione" e il pulsante di avvio è disabilitato.

Ho fatto varie ricerche e i suggerimenti non sembrano corrispondere al problema specifico che ho, o non sono abbastanza sicuro per provarli nel caso in cui peggiorassi le cose.

Ho dato un'occhiata al file "my.cnf" e le impostazioni sono commentate e hanno valori vuoti (una serie di punti segnaposto).

Inoltre, l'alias nella cartella MySQL "mysql" è scomparso.

Oltre a questo, sto avendo problemi con il server web stesso.

Ho seguito il consiglio in una risposta StackOverflow , e mentre ha fermato alcuni degli errori, quando eseguo "apachectl configtest "dal Terminale, ottengo:

AH00526: Syntax error on line 183 of /private/etc/apache2/httpd.conf:
Invalid command 'Order', perhaps misspelled or defined by a module not included in the server configuration

Inutile dire che non sono così abile nella linea di comando.

In questa fase, non ho idea di cosa stia succedendo.

Modifica 1

Ho fatto un backup sia di "httpd.conf" che di "extras / httpd-mpm.conf" seguendo gli errori riportati da "apachectl configtest", in ogni istanza commentando le righe offensive invece di eliminarle.

Ma dopo che ho finito con:

"AH00526: Syntax error on line 25 of /private/etc/apache2/extra/httpd-autoindex.conf:
Invalid command 'Order', perhaps misspelled or defined by a module not included in the server configuration"

... Mi sono arreso.

    
posta Wayne Smallman 12.04.2016 - 13:06
fonte

2 risposte

1

MySQL-5.6.14 è stato installato con un StartUpItem che è necessario per avviare automaticamente MySQL all'avvio. StartUpItems sono deprecati nel frattempo (e probabilmente non sono stati quindi migrati) e vengono utilizzati i daemon di lancio.

Per riavere MySQL fai quanto segue:

  1. Crea un collegamento software:

    sudo ln -s /usr/local/mysql-5.6.14-osx10.7-x86_64 /usr/local/mysql
    
  2. Verifica le autorizzazioni:

    ls -laO /usr/local
    

    Il comando dovrebbe rivelare:

    ...
    lrwxr-xr-x   1 root  wheel  -  27 13 Apr 00:04 mysql -> mysql-5.6.14-osx10.7-x86_64
    drwxr-xr-x  17 root  wheel  - 578 13 Apr 00:05 mysql-5.6.14-osx10.7-x86_64
    ...
    
  3. Crea il file /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist con il seguente contenuto:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>Label</key>             <string>com.oracle.oss.mysql.mysqld</string>
        <key>ProcessType</key>       <string>Interactive</string>
        <key>Disabled</key>          <false/>
        <key>RunAtLoad</key>         <true/>
        <key>KeepAlive</key>         <true/>
        <key>SessionCreate</key>     <true/>
        <key>LaunchOnlyOnce</key>    <false/>
        <key>UserName</key>          <string>_mysql</string>
        <key>GroupName</key>         <string>_mysql</string>
        <key>ExitTimeOut</key>       <integer>600</integer>
        <key>Program</key>           <string>/usr/local/mysql/bin/mysqld</string>
        <key>ProgramArguments</key>
            <array>
                <string>/usr/local/mysql/bin/mysqld</string>
                <string>--user=_mysql</string>
                <string>--basedir=/usr/local/mysql</string>
                <string>--datadir=/usr/local/mysql/data</string>
                <string>--plugin-dir=/usr/local/mysql/lib/plugin</string>
                <string>--log-error=/usr/local/mysql/data/mysqld.local.err</string>
                <string>--pid-file=/usr/local/mysql/data/mysqld.local.pid</string>
                <string>--port=3307</string>
            </array>
        <key>WorkingDirectory</key>  <string>/usr/local/mysql</string>
    </dict>
    </plist>
    

    Il file ha bisogno di una riga vuota finale / nuova riga.

    Puoi sostituire - port = 3307 di - port = 3306 a seconda della configurazione precedente.

  4. Modifica le autorizzazioni del file:

    sudo chown root:wheel /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist
    sudo chmod 644 /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist
    
  5. Carica il daemon di avvio con

    sudo launchctl load -w /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist
    

Raccomando vivamente di aggiornare ad una versione più recente di MySQL.

Errori di Apache:

L'errore

AH00526: Syntax error on line 183 of /private/etc/apache2/httpd.conf:
Invalid command 'Order', perhaps misspelled or defined by a module not included in the server configuration

è correlato al vecchio file Apache config (10.9) che si sta utilizzando:

    <Directory />
        Options FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
    </Directory>

Nel nuovo file di configurazione di Apache (10.11) la sezione ha il seguente aspetto:

    <Directory />
        AllowOverride none
        Require all denied
    </Directory>

Raccomando di installare Apache con un file di configurazione 2.4 (incluso in 10.11).

    
risposta data 13.04.2016 - 01:45
fonte
0

Il comando 'Ordine' è stato deprecato. Era un residuo di Apache 2.2. Stai usando Apache 2.4 ora. Quello che sospetto sia successo è che hai copiato i tuoi file .conf da Apache 2.2 alla tua nuova installazione 2.4.

Da qualche parte nei tuoi file httpd.conf sotto le sezioni, hai qualcosa di simile a questo:

Order deny,allow 
Deny from all

Quello che devi fare è sostituirlo con

Require all denied

Inoltre, assicurati di caricare i moduli elencati di seguito. Cerca il tuo file httpd.conf per le seguenti righe:

  • LoadModule authz_core_module modules/mod_authz_core.so
  • LoadModule authz_host_module modules/mod_authz_host.so
risposta data 13.04.2016 - 16:09
fonte

Leggi altre domande sui tag