Windows Subsystem for Linux
(简称 WSL
)是一个为在 Windows 10 上能够原生运行 Linux 二进制可执行文件(ELF 格式)的兼容层。
强烈推荐在
Windows
使用Docker
进行LNMP
开发:https://github.com/khs1994-docker/lnmp
如何启用 WSL
这里不再赘述,下方执行命令过程中出错,可以使用 sudo
再次尝试执行。
注意。PHP-FPM 暂时只能通过监听 socket ,不能设置
listen 127.0.0.1:9000
!
基于如下软件
WSL
Ubuntu 16.04.3nginx
1.13.7PHP
7.2.0Mysql
5.7.20编辑 /etc/apt/sources.list.d/nginx.list
文件。
deb http://nginx.org/packages/mainline/ubuntu/ xenial nginx
添加密钥
$ sudo apt-key adv --keyserver ha.pool.sks-keyservers.net --keyserver-options timeout=10 --recv-keys 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62
安装
$ sudo apt update
$ sudo apt install nginx
$ sudo nginx
打开 127.0.0.1
看到 nginx 默认页面。
详细编译说明请查看:https://cloud.tencent.com/developer/article/1047033
这里简要说明一下。
$ sudo apt install autoconf \
dpkg-dev \
file \
libc6-dev \
make \
pkg-config \
re2c \
gcc g++ \
libedit-dev \
zlib1g-dev \
libxml2-dev \
libssl-dev \
libsqlite3-dev \
libfreetype6-dev \
libxslt1-dev \
libcurl4-gnutls-dev \
libpq-dev \
libmemcached-dev \
libzip-dev \
libpng-dev \
libjpeg-dev
# ubuntu 16.04 没有 libargon2-0 ,17.04 + 才有,php 7.2.0 新特性
# libargon2-0 \
$ cd /usr/local
$ sudo chmod 777 src
$ cd src
$ wget -O php-7.2.0.tar.gz http://hk1.php.net/get/php-7.2.0.tar.gz/from/this/mirro
$ tar -zxvf php-7.2.0.tar.gz
$ cd php-7.2.0
$ ./configure --prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--with-config-file-scan-dir=/usr/local/php/etc/conf.d \
--disable-cgi \
--enable-fpm \
--with-fpm-user=nginx \
--with-fpm-group=nginx \
--enable-ftp \
--with-curl \
--with-gd \
--with-gettext \
--with-iconv-dir \
--with-kerberos \
--with-libedit \
--with-openssl \
--with-pcre-regex \
--with-pdo-mysql \
--with-pdo-pgsql \
--with-xsl \
--with-zlib \
--with-mhash \
--with-png-dir=/usr/lib \
--with-jpeg-dir=/usr/lib\
--with-freetype-dir=/usr/lib \
--enable-mysqlnd \
--enable-bcmath \
--enable-libxml \
--enable-inline-optimization \
--enable-gd-native-ttf \
--enable-gd-jis-conv \
--enable-mbregex \
--enable-mbstring \
--enable-opcache \
--enable-pcntl \
--enable-shmop \
--enable-soap \
--enable-sockets \
--enable-sysvsem \
--enable-xml \
--enable-zip \
--enable-calendar \
--enable-intl \
--enable-exif
# ubuntu 16.04 没有 libargon2-0 ,17.04 + 才有,php 7.2.0 新特性
# --with-password-argon2 \
$ make -j "$(nproc)"
$ sudo make install
编辑 ~/.bash\_profile
export PATH=/usr/local/php/sbin:/usr/local/php/bin:$PATH
编辑 /etc/sudoers
Defaults secure\_path="/usr/local/php/bin:/usr/local/php/sbin:..."
$ sudo pecl update-channels
将源文件中的 php.ini-development
复制到安装目录中的 etc
子目录 ,并改名为 php.ini
。
将安装目录中的 etc
子目录中的 php-fpm.conf.default
复制为 php-fpm.conf
。
将安装目录中的 etc/php-fpm.d
子目录中的 www.conf.default
复制为 www.conf
。
非常重要!
编辑 /usr/local/php/etc/php-fpm.d/www.conf
# 务必与 nginx 运行用户一致
user = nginx
group = nginx
# 编译安装默认为 IP:端口 ,apt 反之
# listen = 127.0.0.1:9000
listen = /run/php-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
$ sudo php-fpm -t
$ sudo php-fpm -D | -F
使用 Docker for Windows
$ docker run -it -d --name wsl-lnmp-mysql -p 3306:3306 -e MYSQL\_ROOT\_PASSWORD=mytest -e MYSQL\_DATABASE=test --mount src=wsl-lnmp-mysql-data,target=/var/lib/mysql mysql
编辑 /etc/nginx/conf.d/php.conf
server {
server\_name 127.0.0.1;
listen 80;
root /app/test;
index index.html index.php;
location / {
try\_files $uri $uri/ /index.php?$query\_string;
}
location ~ .\*\.php(\/.\*)\*$ {
# fastcgi\_pass 127.0.0.1:9000;
fastcgi\_pass unix:/run/php-fpm.sock;
fastcgi\_index index.php;
fastcgi\_param SCRIPT\_FILENAME $document\_root$fastcgi\_script\_name;
include fastcgi\_params;
}
}
$ sudo pecl install redis
编辑配置文件 /usr/local/php/lib/php.ini
在其最后添加
extension=redis.so
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。