LEMP(Linux、Nginx、MySQL、PHP7)堆栈 Docker 镜像部署LEMP(Linux、Nginx、MySQL、PHP7)堆栈 Docker 镜像部署LEMP(Linux、Nginx、MySQL、PHP7)堆栈 Docker 镜像部署LEMP(Linux、Nginx、MySQL、PHP7)堆栈 Docker 镜像部署
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

LEMP(Linux、Nginx、MySQL、PHP7)堆栈 Docker 镜像部署

发表 admin at 2025年2月28日
类别
未分类
标签

关于

自动构建 docker LEMP 映像 linuxconfig/lemp-php7 可用作动态 PHP 应用程序的测试环境和生产环境。它由 Debian GNU/Linux、轻量级但功能强大的 Nginx 网络服务器、MySQL 关系数据库管理系统和 PHP 脚本语言组成。

在撰写本文时,Debian Linux 尚未将 PHP 7 作为其标准存储库的一部分。因此,PHP 7 是在 docker 镜像构建期间使用位于 https://github.com/linuxconfig/compile-php-debian< 的 compile-php-debian 脚本从源代码编译的。 /代码>。

此外,PHP 7 目前并不支持所有第三方 PHP 模块。

部署

以下部分介绍了在 docker 主机上部署 linuxconfig/lemp-php7 docker。让我们首先创建一个带有 MySQL 连接句柄的示例 PHP 网站。或者添加 phpinfo(); 到组合中以显示当前 PHP 信息页面:


<?php
$link = mysqli_connect("127.0.0.1", "admin", "pass");

if (!$link) {
    echo "Error: Unable to connect to MySQL." . PHP_EOL;
    echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
    echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
    exit;
}

echo "Success: A proper connection to MySQL was made!" . PHP_EOL;
echo "Host information: " . mysqli_get_host_info($link) . PHP_EOL;

mysqli_close($link);
?>

将上述代码保存到 index.php 文件和新的 html 目录中。或者,html 目录可能包含您所需的 PHP 应用程序:


$ mkdir html
$ vi html/index.php
$ ls html/
index.php

在此阶段,我们准备部署 linuxconfig/lemp-php7 docker 镜像:


# docker run --name=lemp -dP -v $PWD/html:/var/www/html linuxconfig/lemp-php7
8306ab0e404e5e5ce4f17731f88a610f7f8bc939289c0746b875716355df0b1a

通过执行上述命令,我们创建并启动了一个新的 docker 容器 lemp。同时我们也将我们的网站开发目录html挂载为nginx的根目录。 MySQL 和 Nginx 端口现在都绑定到主机系统的随机端口。

这两个本地端口现在都可以用于访问 MySQL 和 Nginx 服务:


# docker port lemp
3306/tcp -> 0.0.0.0:32772
80/tcp -> 0.0.0.0:32773

Nginx 访问

在此阶段,Nginx Web 服务器和我们的网站可以通过 $sudo docker port Lemp 命令指定的端口进行访问。使用命令行或浏览器导航到 http://localhost:32773 URL:


# curl -i http://localhost:32773
HTTP/1.1 200 OK
Server: nginx/1.6.2
Date: Sun, 01 Jan 2017 22:51:58 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/7.1.0

Success: A proper connection to MySQL was made!
Host information: 127.0.0.1 via TCP/IP

MySQL 访问

MySQL数据库可以通过admin用户和默认密码pass访问。与之前一样,首先我们需要使用 $sudo docker port lemp 命令获取 docker 镜像中链接到 MySQL 数据库的主机系统端口号。接下来,我们可以连接数据库:


$ mysql -uadmin -ppass -h 127.0.0.1 -P32772
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 15
Server version: 5.5.53-0+deb8u1 (Debian)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

PHP 7

如上所述,PHP 7 是从前沿 PHP 7 分支编译而来的。整个安装在 /usr/local/php-VERSION/ 目录中执行。由于这个原因,要访问命令行 php 二进制文件,您可以使用完整路径运行它:


# docker exec -it lemp /usr/local/php-7.1.0/bin/php -v
PHP 7.1.0 (cli) (built: Jan  1 2017 21:33:40) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.1.0-dev, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.1.0, Copyright (c) 1999-2016, by Zend Technologies

或者将 /usr/local/php-7.1.0/bin/ 作为 PATH 环境变量的一部分。

附加信息

获取已启用的 PHP 7 模块的列表


# docker exec -it lemp /usr/local/php-7.1.0/bin/php -m
[PHP Modules]
bcmath
bz2
calendar
Core
ctype
curl
date
dba
dom
exif
fileinfo
filter
ftp
gd
gettext
hash
iconv
intl
json
libxml
mbstring
mcrypt
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
pspell
readline
Reflection
session
shmop
SimpleXML
soap
sockets
SPL
sqlite3
standard
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
xml
xmlreader
xmlwriter
Zend OPcache
zip
zlib

[Zend Modules]
Zend OPcache

集装箱存取

当您的 lemp 容器正在运行时,可以通过以下方式访问它:


$ sudo docker exec -it lemp /bin/bash
root@8306ab0e404e:/#

重置MySQL用户密码

以下命令将为admin用户设置新密码123:


# mysql
mysql> SET PASSWORD FOR 'admin'@'%' = PASSWORD('123');

重新启动lemp堆栈


$ sudo docker exec lemp service supervisor restart
©2015-2025 Norria support@norria.com