aliyun CentOS7 服务器下使用docker centos8 镜像 配置nginx+php+mysql

 

为了学习web开发相关内容,在windows上已经实现的基础上,打算在Linux服务器上部署一下开发环境,web服务器选择的是nginx.由于docker的使用优势,菜鸟开始了一系列的探索,然后把探索过程总结如下,为了下次能够更好的搭建环境。

整体思路与结构如下:


目录

一.开启阿里云服务器对应端口(百度智能云不需要)

二. 创建容器(前提是docker已经安装完成)

三. 容器内安装nginx+php-fpm+mysql

1.安装nginx

2.安装php-fpm

3.安装mysql


一.开启阿里云服务器对应端口(百度智能云不需要)

  • 使用阿里云服务器时候,需要注意下,所有的端口的使用,都需要在控制台中的安全组配置中进行设置,页面如图1所示:
aliyun CentOS7 服务器下使用docker centos8 镜像 配置nginx+php+mysql
图1

进入安全组配置后,进入图

  • 进入安全配置组后,进入图2页面,点击配置规则:
aliyun CentOS7 服务器下使用docker centos8 镜像 配置nginx+php+mysql
图2

 

  • 然后找到如图3所示界面,进行端口设置。
aliyun CentOS7 服务器下使用docker centos8 镜像 配置nginx+php+mysql
图3

 

  • 设置完以后就可以使用服务器对应的端口了。

二. 创建容器(前提是docker已经安装完成)

  • 查看docker信息:docker info (如图4)
aliyun CentOS7 服务器下使用docker centos8 镜像 配置nginx+php+mysql
图4

 

  • 拉取镜像:docker pull centos(默认最新版,这里是centOS8)
  • 查看镜像:docker images
  • 建立一个centOS8用于nginx+php+mysql的容器:

    # docker run --privileged -ti --name centos-npm -p 3307:3306 -p 5022:22 -p 8001:80 -d centos  /usr/sbin/init

    --name centos-npm 容器命名 ;   -p 3307:3306 3307端口映射到3306用于mysql -p 5022:22 用于开启ssh ; 

        -p 8001:80 用于nginx ; --privileged 和最后的 /init 一定要加上,不然容器内 不能使用systemctl \ service 命令,也就会导致nginx、mysql等服务无法开启的情况,会出现以下图5的情况:

aliyun CentOS7 服务器下使用docker centos8 镜像 配置nginx+php+mysql
图5

 

  • 查看正在运行的容器 docker ps          刚才创建的centos-npm容器如图6所示
    aliyun CentOS7 服务器下使用docker centos8 镜像 配置nginx+php+mysql
    图6

     

  • 进入容器:docker exec -it centos-npm /bin/bash

三. 容器内安装nginx+php-fpm+mysql

  • yum update
  • yum install gcc
  • yum install gcc-c++
  • yum insyall XXXXX(不知名环境、工具)
  • yum -y install which (用于查看软件安装位置)

    以上是更新以下yum,然后安装一些必备的东西,不是很懂,也是参考别人的,可以自行百度。

以下的软件安装都使用yum

1.安装nginx

  • 安装nginx : yum install nginx
  • 启动nginx: systemctl start nginx
  • 除了systemctl start nginx之外,常用的相关命令还有systemctl stop nginx、systemctl restart nginx、systemctl status nginx测试nginx是否安装成功
  • 浏览器输入ip地址或者域名(记得加上宿主机,也就是服务器的映射端口,我这里是8001),如下图7所示,则安装成功。 
aliyun CentOS7 服务器下使用docker centos8 镜像 配置nginx+php+mysql
图7

 

  • 查找nginx的所有配置文件:

    运行:rpm -ql nginx 找到nginx 的配置文件路径是

    /etc/nginx/nginx.conf   运行 vi /etc/nginx/nginx.conf 修改配置文件,添加如图8所示红框内的内容:

    aliyun CentOS7 服务器下使用docker centos8 镜像 配置nginx+php+mysql
    图8

     

  • 以上设置使得nginx 可以和php联系起来,就是可以让前端传送给nginx的东西,使用php解析

感觉此刻水平有限,描述不清楚,一样不理解的,可以阅读以下连接的内容:

https://www.zybuluo.com/phper/note/50231

我看完这感觉会有点明白,为什么需要配置。

2.安装php-fpm

  • yum install php  php-fpm
  • 编辑PHP的配置文件,/etc/php.ini,注意去掉分号注释

    vim /etc/php.ini 将 ;cgi.fix_pathinfo=1 改为 cgi.fix_pathinfo=0

  • 编辑PHP-FPM配置文件

    vim /etc/php-fpm.d/www.conf

     将 user = apache  group = apache    改为 user = nginx     group = nginx

  • 启动PHP—FPM

    systemctl start php-fpm

  • 设置开机启动

    systemctl enable php-fpm

  • 确保Nginx配置文件修该之后,重启Nginx

    systemctl restart nginx

  • 在/usr/share/nginx/html/目录下创建phpinfo.php

        内容如下:

       <?php phpinfo();?>浏览器上输入ip/phpinfo.php,如果出现如下图9界面,说明PHP和Nginx均安装和配置成功。

    aliyun CentOS7 服务器下使用docker centos8 镜像 配置nginx+php+mysql
    图9

     

3.安装mysql

  • yum install mysql 
  • yum install mysql-server
  • 初始化:mysqld --initialize
  • 启动服务:systemctl start mysql
  • 设置开机启动: systemctl daemon-reload
  • 查看运行状态: systemctl status mysqld
  • 设置密码为123456(默认密码为空):mysqladmin -u root password 123456
  • 进入mysql: mysql -u root -p
  • 设置远程连接:
  • 创建远程操作账户,进行远程访问的授权,并更新权限,依次执行以下代码:

       create user 'root'@'%' identified with mysql_native_password by '123456';

       grant all privileges on *.* to 'root'@'%' with grant option;

       flush privileges;

  • 如果创建远程账号的密码错了:

       查询用户表和主机权限命令:

       use mysql

       select user, host from mysql.user;

       删除root这个远程访问用户:delete from mysql.user where user = 'root' and host = '%';

        更新权限命令: flush privileges;

.      重新创建远程操作账户,进行远程访问的授权并更新权限,依次执行以下代码:

       create user 'root'@'%' identified with mysql_native_password by '123456';

       grant all privileges on *.* to 'root'@'%' with grant option;

       flush privileges;

  • 使用Navicat远程连接,如图10所示,端口处填写映射端口3307,结果连接成功:
aliyun CentOS7 服务器下使用docker centos8 镜像 配置nginx+php+mysql
图10

 

aliyun CentOS7 服务器下使用docker centos8 镜像 配置nginx+php+mysql

到此,就大功告成了!

接下来就是需要探索下

1.docker build \commit 制作镜像;

2.使用dockerfile 创建容器,制作镜像;

3.移植容器到其他服务器上。