搭建lnmp环境
<h1>搭建lnmp环境</h1>
<pre><code class="language-bash"># 查看docker是否安装成功
docker version # 查看docker版本
# 查看docker镜像列表
docker images</code></pre>
<h2>安装nginx</h2>
<pre><code class="language-bash"># 查找nginx
docker search nginx
# 拉取docker镜像
docker pull nginx
# 查看nginx镜像
docker images | grep nginx
# 创建运行容器,绑定映射端口,设置数据卷,设置每次启动docker启动nginx
docker run -d --name nginx -p 80:80 --restart=always nginx
# 查看nginx进程是否启动
docker ps | grep nginx # nginx容器id为:c70716cc2b09
# 查看ip地址
ip addr # 192.168.0.104
# 打开浏览器输入ip地址,看是否能正常访问,显示Welcome to nginx!</code></pre>
<h2>安装php</h2>
<h5>查看nginx默认访问路径</h5>
<pre><code class="language-bash"># 进入nginx容器内
docker exec -it nginx bash
# 查看nginx默认访问路径
cat /etc/nginx/conf.d/default.conf -n
# 找到 location / { 下边root,查看默认访问路径: /usr/share/nginx/html
exit</code></pre>
<h5>安装php</h5>
<pre><code class="language-bash"># 查找php
docker search php
# 拉取php镜像
docker pull phpdockerio/php73-fpm
# 查看php镜像
docker images | grep php
# 创建并运行php容器,设置数据卷,设置每次启动docker启动php
docker run -d --name phpfpm -p 9000:9000 \
-v /usr/local/nginx/html:/usr/share/nginx/html \
--restart=always phpdockerio/php73-fpm
# 查看php进程是否启动
docker ps | grep php # php容器id为: aa9b07b791d1
# 进入php容器
docker exec -it phpfpm bash
# 查看容器内html目录
ls /usr/share/nginx/
exit
# 进入html目录
cd /usr/local/nginx/html && pwd
# 创建index.php文件
vi /usr/local/nginx/html/index.php
# 写入内容为
<?php
echo phpinfo();
# 查看ip地址
ip addr # 192.168.0.104
# 打开浏览器输入ip地址,192.168.0.104,显示404 Not Found</code></pre>
<h5>解决404 Not Found问题</h5>
<pre><code class="language-bash"># 获取到phpfpm 这个容器的ip
docker inspect --format='{{.NetworkSettings.IPAddress}}' phpfpm # ip地址为: 172.17.0.3
# 进入nginx容器内
docker exec -it nginx bash
# 安装vim
apt-get update
apt-get install vim
# 进入nginx目录
cd /etc/nginx/conf.d/ && ls
vim default.conf
# 让nginx支持php,加入以下代码,在location ~ \.php$ {处
location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_pass 172.17.0.3:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
# 退出docker
exit
# 重启nginx
docker restart nginx
# 查看ip地址
ip addr # 192.168.0.104
# 打开浏览器输入ip地址,输入http://192.168.0.104/index.php,看php相关信息访问成功</code></pre>
<h2>安装mysql</h2>
<pre><code class="language-bash"># 查看 mysql 可用版本
docker search mysql # 或者 docker search mysql5.7
# 拉取 MySQL 镜像
docker pull mysql:5.7
# 查看镜像
docker image ls # 或者 docker image ls | grep mysql
# 创建 mysql 容器,使用lnmp自定义网络
docker run -d --name mysql mysql:5.7 -p 3306:3306 \
-v /data/mysql:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
--character-set-server=utf8
# 查看 mysql 是否启动
docker ps </code></pre>
<h5>如果 mysql 没有启动成功</h5>
<pre><code class="language-bash">docker ps -a
# 查看日志
docker logs mysql # 一般在日志最后几行会显示原因,查看日志中 [Warning] 后边显示的原因
# 删除 mysql 容器
docker rm -f mysql
# 再次启动 mysql 容器
docker run -d -p 3306:3306 \
-v /data/mysql:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
--name mysql mysql:5.7 --character-set-server=utf8</code></pre>
<h5>连接mysql</h5>
<pre><code class="language-bash"># 进入mysql容器内
docker exec -it mysql bash
# 连接 mysql 数据库
mysql -uroot -p123456
# 查看数据库
show databases;
# 授权,目的是让数据库连接工具在外网的其他机器可以直接连接数据库
GRANT ALL ON *.* TO 'root'@'%';
# 刷新权限:
flush privileges;
# 退出
exit
# 查看ip地址
ip addr # 192.168.0.104
# 使用数据库工具,进行连接,
# 连接信息:ip:192.168.0.104,端口:3306,用户名:root,密码:123456</code></pre>
<h5>设置mysql容器为自动启动</h5>
<pre><code class="language-bash">docker update --restart no mysql
docker restart mysql
docker ps</code></pre>