WSL 快速搭建 LNMP 环境

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.3
  • nginx 1.13.7
  • PHP 7.2.0
  • Mysql 5.7.20

nginx

编辑 /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 默认页面。

PHP

详细编译说明请查看:https://www.khs1994.com/php/development/php-build.html

这里简要说明一下。

安装依赖

$ 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:..."

升级 pecl

$ 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

MySQL

使用 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

nginx 配置

编辑 /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;

  }

}

尝试通过 pecl 安装 PHP 扩展

$ sudo pecl install redis

编辑配置文件 /usr/local/php/lib/php.ini 在其最后添加

extension=redis.so

原创声明,本文系作者授权云+社区-专栏发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏dalaoyang

linux下安装mysql

这是自己踩过的坑,记录一下,翻了一天博客,csdn等等,最后在网上看到了一个十分简单的安装过程。 安装 # yum -y install http://dev....

3037
来自专栏Hongten

python开发_tarfile_文档归档压缩|解压缩

如果在你计算机的c:\\test目录下面没有temp目录,系统会自动创建该目录:c:\\test\\temp

522
来自专栏L宝宝聊IT

Mysql备份与还原——xtrabackup

上次我们介绍了采用逻辑备份mysqldump 备份方式,其最大的缺陷就是备份和恢复速度都慢,但如果数据库非常大,那再使用 mysqldump 备份就不太适...

513
来自专栏北京马哥教育

【干货 | 原创 】MySQL/MariaDB数据库基于SSL实现主从复制

前言 备份数据库是生产环境中的首要任务,重中之重,有时候不得不通过网络进行数据库的复制,由于 MySQL/MariaDB的主从复制是明文传送的,如果在生产环境...

3295
来自专栏流媒体

Linux下Mysql安装配置

安装包 这里以centos 6.8 为例。下载Bundle包。然后解压:

581
来自专栏Laoqi's Linux运维专列

Zabbix远程执行命令

3898
来自专栏北京马哥教育

搭建自己的git 代码服务器

搭建自己的git 代码服务器 git server 安装配置 1、切换到root用户 stevenrao@server:~$ su - root 2、创建g...

4395
来自专栏Laoqi's Linux运维专列

搭建 WordPress 个人博客

因为我的两个站点之前都不是搞纯技术的,现在全部搞成了Linux技术博客,好多人也非常想建立自己的博客。说实话我之前的站点第5篇文章以内几乎都是讲如何建站很详细(...

3757
来自专栏技术墨客

ESC服务搭建CheckList 原

注意:ESC有安全策略组,修改端口时需要在ESC的管理页面上检查相关的端口是否开放。

514
来自专栏云计算教程系列

如何在CentOS 7上安装MySQL

MySQL是一个开源数据库管理系统,通常情况下,安装它作为流行的LEMP(Linux,Nginx,MySQL/ MariaDB,PHP / Python /Pe...

852

扫码关注云+社区