在docker的alpine类镜像上安装LNMP服务

安装目的

  • 本文是《用docker部署WEB项目》的第二篇
  • alpine是docker官方推荐的linux发行版,基于它制作docker,文件体积会小很多
  • alpine和常用的centos、ubuntu等相比还是会有一些区别,所以需要通过今天的练习进行一些了解。

前置条件

新建容器并进入内部

docker run -it -p 18080:80 -p 21:21 -p 3306-3306 php:7.2.4-fpm-alpine3.6 /bin/sh

指定国内镜像源

  • 输入命令行打开repositories文件
cd /etc/apk
vi repositories
  • 在文件中输入源地址:
http://mirrors.aliyun.com/alpine/v3.6/main
http://mirrors.aliyun.com/alpine/v3.6/community

安装nginx

安装

apt add --no-cache nginx

保护pid

cd /run
mkdir nginx

新建设置网页

  • 新建一个网页index.html
cd /var/www/html
vi index.html
  • 写一个简单的html页面或是只输入一行文字如
hello world

修改nginx的配置文件

  • 修改配置文件/etc/nginx/conf.d/default.conf,只保留最基本配置
server {
        listen 80 default_server;
        location / {
                index index.html;
                root /var/www/html;
        }
        location = /404.html {
                internal;
        }
}

运行nginx

  • 输入命令行重启nginx
nginx -s reload
  • 打开浏览器,输入http://127.0.0.1:18080 ,看到网页显示hello world,nginx安装成功。
/usr/sbin/nginx -c /etc/nginx/nginx.conf

验证成功

打开浏览器,输入127.0.0.1,看到网页显示hello world,nginx安装成功。

在网站中启用php

添加PHP支持

  • 修改/etc/nginx/conf.d/default.conf文件,增加php支持
server {
        listen 80;
        index index.html index.php;
        location / {
                index index.html;
                root /var/www/html;
                #实现PHP伪静态
                try_files $uri /index.php?$args;
        }

        # You may need this to prevent return 404 recursion.
        location = /404.html {
                internal;
        }
        #添加php支持
        location ~ .php {
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
                include fastcgi_params;
        }
}

请确认 /etc/nginx/nginx.conf中包含include config.d/*.conf语句,否则default.conf将不会生效,另外,nginx.conf中如果已经有一个server服务器,也可能造成端口冲突,这些问题的处理方式,和其它linux发行版是一样的。

新建测试用的php文件

  • 输入命令行新建一个info.php文件
vi info.php
  • 写一个简单的php文件如:
<?php
phpinfo();
  • 输入命令行新建一个index.php文件
vi index.php
  • 写一个简单的php文件如:
<?php
echo 'Hello php';

重启php和nginx服务

  • 输入命令行重启服务
php-fpm --daemonize
nginx -s reload

验证成功

  • 打开浏览器访问http://127.0.0.1:18080/info.php 会显示phpinfo信息,php支持已安装成功
  • 打开浏览器访问http://127.0.0.1:18080/anyting 会显示hello php,伪静态已设置成功

安装常用php组件

  • alpine提供了docker-php-ext-install来安装常用的php扩展,当前已支持如下扩展

Possible values for ext-name:

bcmath bz2 calendar ctype curl dba dom enchant exif fileinfo filter ftp gd gettext gmp hash iconv imap interbase intl json ldap mbstring mysqli oci8 odbc opcache pcntl pdo pdo_dblib pdo_firebird pdo_mysql pdo_oci pdo_odbc pdo_pgsql pdo_sqlite pgsql phar posix pspell readline recode reflection session shmop simplexml snmp soap sockets sodium spl standard sysvmsg sysvsem sysvshm tidy tokenizer wddx xml xmlreader xmlrpc xmlwriter xsl zend_test zip

由于我们选择的镜像不是最基本的alpine而是php:7.2.4-fpm-alpine3.6 ,这些镜象其实都已经预装了,所以下面的命令只是一个示范,它会提示扩展已安装过:

  • 命令来快速安装php组件
docker-php-ext-install fileinfo

如果要装这些以外的扩展就会比较复杂,这篇文章里就不提了。

安装完成

现在我们已经熟悉了alpine,接下来我会练习用dockerfile完成今天的工作,制作第一个自己的docker镜像。

版权申明

本文来自 第九区,转载请保留本段文字。

    原文作者:will
    原文地址: https://segmentfault.com/a/1190000014350195
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞