So richten Sie eine PHP-Entwicklungsumgebung unter Windows Subsystem for Linux (WSL) ein

Die PHP-Entwicklung unter Windows hat einige Nachteile. Microsoft bietet jetzt eine großartige Option für PHP-Entwickler, die unter Windows arbeiten: Das Windows-Subsystem für Linux (WSL). WSL ist eine Kompatibilitätsschicht zum nativen Ausführen von ausführbaren Linux-Binärdateien (im ELF-Format) unter Windows 10. Microsoft sagt:

"Dies ist in erster Linie ein Tool für Entwickler - insbesondere für Webentwickler und diejenigen, die an oder mit Open Source-Projekten arbeiten."

Wir können eine Linux-Umgebung direkt unter Windows ausführen, ohne den Aufwand einer virtuellen Maschine.

Hinweis: Dieser Artikel richtet sich nicht nur an Windows Insider. Diese Methoden funktionieren auch mit den neuesten stabilen Versionen von Windows 10.

In diesem Tutorial werden wir einen LAMP-Stack (Ubuntu 16.04, Apache, PHP 7.1, MariaDB) auf WSL für die Entwicklung einrichten. Sie können andere Stapel (z. B. einen LEMP-Stapel) mit ähnlichen Methoden einrichten.

Voraussetzungen

Bevor Sie mit diesem Handbuch beginnen, benötigen Sie Folgendes:

  • Eine 64-Bit-Version von Windows 10 mit dem Creators Update oder höher.
  • Vertrautheit mit Linux / bash (Wenn Sie sich mit der Befehlszeile vertraut machen möchten, können Sie dieses DigitalOcean-Tutorial lesen.)

Schritt 1: Bash unter Windows installieren

Zunächst muss WSL auf Ihrem Computer installiert sein.

Sie können weitere Linux-Distributionen aus dem Microsoft Store installieren (Ubuntu, openSUSE, SUSE Linux Enterprise Server 12). In diesem Tutorial werden wir jedoch den LAMP-Stack unter Ubuntu einrichten, sodass Sie Ubuntu auswählen müssen .

Microsoft hat ein großartiges Tutorial zur Installation von WSL. Befolgen Sie die Anweisungen des Artikels.

Wenn Sie Bash unter Ubuntu unter Windows erfolgreich installiert haben, installieren und konfigurieren wir einen einfachen LAMP-Stack für die Entwicklung.

Schritt 2: Installieren eines Apache HTTP-Servers

Wir möchten die neueste stabile Version von Apache installieren, aber die offiziellen Ubuntu-Repositorys enthalten nicht die neueste Version.

Wir müssen eine PPA für Apache-Pakete hinzufügen. Ein Personal Package Archive (PPA) ist ein Repository, mit dem Entwickler von Drittanbietern Pakete für Ubuntu erstellen und verteilen können. Ondřej Surýs PPA bietet die neuesten Apache / PHP-Pakete für Ubuntu.

Führen Sie zum Hinzufügen der PPA den folgenden Befehl in der WSL-Bash aus:

sudo add-apt-repository ppa:ondrej/apache2

Aktualisieren Sie nach der Konfiguration der PPA den lokalen Paketindex:

sudo apt-get update

Installieren Sie Apache:

sudo apt-get install apache2

Erstellen Sie einen Projektordner für Ihre Webanwendungen. Dieser Ordner sollte sich außerhalb des WSL-Dateisystems befinden. Ich empfehle Ihnen, Ihren Ordner "Dokumente" zu verwenden.

Mit dem folgenden Befehl wird ein Serverordner in Ihrem Dokumentenverzeichnis erstellt. Bitte ersetzen Sie IHREN FENSTER-BENUTZERNAME durch Ihren Windows-Benutzernamen.

sudo mkdir /mnt/c/Users/YOUR WINDOWS USERNAME/Documents/server

Erstellen Sie einen symbolischen Link zum ausgewählten Ordner.

sudo ln -s /mnt/c/Users/YOUR WINDOWS USERNAME/Documents/server /var/www/devroot

Öffnen Sie die Apache-Standardkonfigurationsdatei für den virtuellen Host:

sudo nano /etc/apache2/sites-enabled/000-default.conf

Ändern Sie das Dokumentstammverzeichnis in "/ var / www / devroot", das auf Ihren Projektordner außerhalb des WSL-Dateisystems verweist. Setzen Sie ServerNameauf localhost(wenn der Port 80 von einer Windows-Anwendung reserviert ist, ersetzen Sie 80 durch einen nicht verwendeten Port):

 ServerName localhost ServerAdmin [email protected] DocumentRoot /var/www/devroot  Options Indexes FollowSymLinks AllowOverride All Require all granted  ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined

Wenn Sie fertig sind, speichern Sie die Datei, indem Sie Strg-O drücken, und drücken Sie zur Bestätigung die Eingabetaste. Beenden Sie mit Strg-X.

Öffnen Sie Ihren bevorzugten Windows-Editor / Ihre Lieblings-IDE und erstellen Sie eine Datei "index.html" in Ihrem Projektordner (C: \ Benutzer \ IHR WINDOWS-BENUTZERNAME \ Dokumente \ Server) mit folgendem Inhalt:

  It works!

It works!

Starten Sie den Apache HTTP-Server:

sudo service apache2 start

Öffnen Sie // localhost / in Ihrem Browser und Sie sollten den Titel "Es funktioniert" sehen.

Vergessen Sie nicht, die für Sie erforderlichen Apache-Module zu aktivieren. Sie können beispielsweise mod_rewrite aktivieren:

sudo a2enmod rewritesudo service apache2 restart

Schritt 3: Installieren des MariaDB-Servers

Fügen Sie ein Repo hinzu, das die neuesten MariaDB-Pakete enthält:

sudo apt-get install software-properties-common
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el] //ams2.mirrors.digitalocean.com/mariadb/repo/10.2/ubuntu xenial main'

Installieren Sie MariaDB:

sudo apt-get updatesudo apt-get install mariadb-server

Während der Installation werden Sie aufgefordert, ein Root-Passwort zu erstellen. Wählen Sie ein sicheres Passwort und merken Sie es sich, da Sie es später benötigen werden.

Starten Sie MariaDB:

sudo service mysql start

Führen Sie das folgende Skript aus (dies ändert einige der weniger sicheren Standardoptionen):

mysql_secure_installation

Schritt 4: PHP installieren

Fügen Sie PPA für das neueste PHP hinzu:

sudo add-apt-repository ppa:ondrej/phpsudo apt-get update

Installieren Sie PHP 7.1-Pakete:

sudo apt-get install php7.1 libapache2-mod-php7.1 php7.1-mcrypt php7.1-mysql php7.1-mbstring php7.1-gettext php7.1-xml php7.1-json php7.1-curl php7.1-zip

Wir müssen Apache neu starten:

sudo service apache2 restart

Create an info.php file in your project folder with the following content:

Open //localhost/info.php in your browser. If PHP works correctly, you should see the following:

Original text


Step 5: installing phpMyAdmin

phpMyAdmin is a free and open source administration tool for MySQL and MariaDB.

With phpMyAdmin, you can easily create/manage your databases using a web interface.

sudo apt-get install phpmyadmin
  • When the first prompt appears, press Space, Tab, and then Enter to select Apache.
  • Select yes when asked to use dbconfig-common to set up the database.
  • Provide your MariaDB root password
  • Choose a password for the phpMyAdmin application itself

Enable the necessary PHP extensions:

sudo phpenmod mcryptsudo phpenmod mbstring

Restart Apache:

sudo service apache2 restart

Now you can access phpMyAdmin on the following URL: //localhost/phpmyadmin/

You can login using the root username and the root password you set up during the MariaDB installation.

Step 6: installing Composer

Composer is a package manager for PHP. It allows you to install/update the libraries your project depends on. If you are a PHP developer you probably use composer.

Visit Composer’s download page and follow the instructions in the Command-line installation section. After Composer has installed successfully, you can install it globally:

sudo mv composer.phar /usr/local/bin/composer

Now it can be run from any location by typing:

composer

Step 7: installing Git:

Git is a version control system which is primarily used for source code management. Learn more about Git here.

You can install it by running the following command:

sudo apt-get install git

Before you use Git (and if you aren’t familiar with it), please read the “How To Set Up Git” section from the How To Install Git on Ubuntu 16.04 tutorial.

Step 8: automatically start LAMP on WSL (optional)

Background tasks are currently not supported on WSL. When you close Bash your services (Apache and MariaDB) will stop.

Note for Windows Insiders: Background tasks are now supported on WSL starting with Windows Insider Build 17046 (for more details, you can read the following blog post: Background Task Support in WSL), but the auto start of services is still not available.

Unfortunately, automatically starting your services is a bit difficult.

Let’s configure autostarting!

We need to start the services without typing your password.

Before you get started with this, please take a look at the following tutorial How To Edit the Sudoers File on Ubuntu and CentOS.

Run the following command:

sudo visudo -f /etc/sudoers.d/services

Copy and paste the following to the editor and then save:

%sudo ALL=(root) NOPASSWD: /usr/sbin/service *%wheel ALL=(root) NOPASSWD: /usr/sbin/service *

This enables us to start the services (like Apache and MariaDB) without using our password.

Start Command Prompt (not the bash) as administrator and run:

SchTasks /Create /SC ONLOGON /TN "Start WSL LAMP" /TR "c:\Windows\System32\bash.exe -c 'sudo service apache2 start; sudo service mysql start; cd ~; bash'"

The above command creates a task that runs automatically when you login to Windows. It does the following:

  • Starts Apache
  • Starts MariaDB
  • Changes the directory to your home directory

Don’t forget: when you close the terminal window, services will stop and you should restart them manually!

Step 9: add test domains (optional)

When you work on more web applications, multiple test domains will be helpful. For example, if you are working on myapp.com, you can access the local development version on //myapp.test/ instead of //localhost/myapp.

In the following, you can replace “myapp” with your web application’s name.

Create a folder in your projects directory for your web application:

sudo mkdir /mnt/c/Users/YOUR WINDOWS USERNAME/Documents/server/myapp

Add the virtual host file to Apache:

sudo nano /etc/apache2/sites-available/myapp.test.conf

Save the following configuration to the new file (don’t forget to replace myapp with your application’s name).

ServerName myapp.test
ServerAdmin [email protected] DocumentRoot /var/www/devroot/myapp
 Options Indexes FollowSymLinks AllowOverride All Require all granted 
ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined

Enable the new site:

sudo a2ensite myapp.test

Restart Apache:

sudo service apache2 restart

Finally, start Notepad or your favorite editor/IDE on Windows with admin privileges (Run as administrator) and open the hosts file. It is located in the c:\windows\system32\drivers\etc folder.

Add the following line to the end of the file and save it:

127.0.0.1 myapp.test

Now you can access your web application on the //myapp.test/ domain.

You can also add more test domains with the same method.

Conclusion

WSL does not replace Vagrant or Docker, and it is experimental. Automatically starting services is currently not supported on WSL, and this is one of the biggest problems with it at this moment. However, the Windows Subsystem for Linux is a great option for developers to use a native Linux shell on Windows. I think you should give it a try!