当前位置: 首页 > 工具软件 > dnmp > 使用案例 >

macos dnmp搭建实现

班凌
2023-12-01

开源项目:dnmp: 基于Docker的一键LNMP安装程序

实践

#新建一个目录,专门放置dnmp项目
$ mkdir codeOperateDir
$ cd codeOperateDir/

#git拉取dnmp项目
$ git clone http://github.com/yeszao/dnmp.git

#将用户yonghuming加入docker用户组
$ sudo dseditgroup -o edit -a yonghuming -t user docker

#进入dnmp项目
$ cd dnmp
$ ls -al
total 280
drwxr-xr-x  18 v_weishan  INTERNAL\Domain Users    576 10 12 16:20 .
drwxr-xr-x   4 v_weishan  INTERNAL\Domain Users    128 10 12 16:20 ..
-rw-r--r--   1 v_weishan  INTERNAL\Domain Users     37 10 12 16:20 .dockerignore
drwxr-xr-x  12 v_weishan  INTERNAL\Domain Users    384 10 12 16:20 .git
-rw-r--r--   1 v_weishan  INTERNAL\Domain Users     78 10 12 16:20 .gitattributes
drwxr-xr-x   3 v_weishan  INTERNAL\Domain Users     96 10 12 16:20 .github
-rw-r--r--   1 v_weishan  INTERNAL\Domain Users     99 10 12 16:20 .gitignore
-rw-r--r--   1 v_weishan  INTERNAL\Domain Users   1066 10 12 16:20 LICENSE
-rw-r--r--   1 v_weishan  INTERNAL\Domain Users   2230 10 12 16:20 README-en.md
-rw-r--r--   1 v_weishan  INTERNAL\Domain Users  27010 10 12 16:20 README.md
-rw-r--r--   1 v_weishan  INTERNAL\Domain Users   1874 10 12 16:20 bash.alias.sample
drwxr-xr-x   8 v_weishan  INTERNAL\Domain Users    256 10 12 16:20 data
-rw-r--r--   1 v_weishan  INTERNAL\Domain Users   9764 10 12 16:20 docker-compose.sample.yml
-rw-r--r--   1 v_weishan  INTERNAL\Domain Users   6287 10 12 16:20 env.sample
drwxr-xr-x   5 v_weishan  INTERNAL\Domain Users    160 10 12 16:20 logs
drwxr-xr-x  15 v_weishan  INTERNAL\Domain Users    480 10 12 16:20 services
-rw-r--r--   1 v_weishan  INTERNAL\Domain Users  69126 10 12 16:20 snapshot.png
drwxr-xr-x   3 v_weishan  INTERNAL\Domain Users     96 10 12 16:20 www

#复制配置文件。实际在运行过程中起作用的是 .env  docker-compose.yml 配置文件
$ cp env.sample .env 
$ cp docker-compose.sample.yml docker-compose.yml

#因宿主机3306端口已被占用,因此需要更改配置中的端口号才能使mysql服务正常启动
#docker-compose.yml文件中 - "${MYSQL_HOST_PORT}:3306" 表示宿主机端口MYSQL_HOST_PORT映射到容器的3306端口,宿主机端口MYSQL_HOST_PORT定义在.env配置文件中。因此需要将.env配置文件中的端口号更改
$ vi .env 
# 更改本机端口3310,映射容器的3306端口,避免3306端口占用造成的mysql容器启动失败
MYSQL_HOST_PORT=3310

#启动docker。docker-compose.yml文件中列出的是可以启动的服务,被注释的为不启动
#仅启动某几个服务 docker-compose up mysql php
$ docker-compose up
#关闭服务
$ docker-compose stop
#重启服务
$ docker-compose restart
#更改nginx配置后重启nginx服务。这里两个nginx,第一个是容器名,第二个是容器中的nginx程序
$ docker exec -it nginx nginx -s reload

#启动成功
#拉取容器列表
$ docker-compose ps
Name               Command               State                    Ports                  
-----------------------------------------------------------------------------------------
mysql   docker-entrypoint.sh mysqld      Up      0.0.0.0:3310->3306/tcp, 33060/tcp       
nginx   /docker-entrypoint.sh ngin ...   Up      0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp
php     docker-php-entrypoint php-fpm    Up      9000/tcp, 9501/tcp 

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                      NAMES
8cfb3e86afa2        mysql:8.0.13        "docker-entrypoint.s…"   22 minutes ago      Up 20 minutes       33060/tcp, 0.0.0.0:3310->3306/tcp          mysql
e8f75d59af26        dnmp_nginx          "/docker-entrypoint.…"   23 hours ago        Up 33 minutes       0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   nginx
cad8557dc812        dnmp_php            "docker-php-entrypoi…"   23 hours ago        Up 33 minutes       9000/tcp, 9501/tcp                         php

#进入mysql容器
$ docker exec -it 8cfb3e86afa2 bash

相关配置修改:

宿主机端口号,在.env配置文件中修改。

映射容器端口号,在docker-compose.yml配置文件中修改

php项目相关配置修改:

修改入口文件  services/nginx/conf.d/localhost.conf

    listen       80  default;
    server_name  localhost;
    root   /www/localhost;
    #index  index.php index.html index.htm;
    #访问http://localhost默认访问/www/localhost/swagger/preview.html文件
    index  swagger/preview.html;

即http://localhost访问的是www/localhost/swagger/preview.html文件

mysql权限相关

进入mysql容器连接mysql

创建用户及授权

# root账号连接进mysql
root@8cfb3e86afa2:/# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 8.0.13 MySQL Community Server - GPL

Copyright (c) 2000, 2018, 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> 


# 新增账户test,允许所有主机登录,密码为test
mysql> create user 'test'@'%' identified by 'test';
Query OK, 0 rows affected (0.14 sec)

# 修改test账户密码为123456
mysql> ALTER USER 'test'@'%' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.11 sec)

# 授予所有主机%的test账户对所有库*.所有表*的所有all权限
mysql> grant all privileges on *.* to 'test'@'%' with grant option;
Query OK, 0 rows affected (0.13 sec)

# 查看账户信息  主机,账户,密码
mysql> select host,user,authentication_string from mysql.user;

#  授权时的%并不包括localhost,用localhost进行登录时有权限问题,需要对localhost用户进行用户添加及相关授权。参考:https://blog.csdn.net/weixin_34236334/article/details/115928524

 类似资料: