在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

添加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 ,這些鏡象其實都已經預裝了,因此下面的命令只是一個示範,它會提示擴展已安裝過:html

  • 命令來快速安裝php組件
docker-php-ext-install fileinfo

若是要裝這些之外的擴展就會比較複雜,這篇文章裏就不提了。mysql

安裝完成

如今咱們已經熟悉了alpine,接下來我會練習用dockerfile完成今天的工做,製做第一個本身的docker鏡像。linux

版權申明

本文來自 第九區,轉載請保留本段文字。nginx

相關文章
相關標籤/搜索