欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

lnmp环境搭建

程序员文章站 2022-04-25 15:45:56
本节为 Docker下 Nginx,Mysql,Php 环境搭建 版本:mysql:5.6,nginx,php:5.6 fpm 只适合 "Docker环境" 。本例以Ubuntu16.04 x64下的Docker环境为例 所有文件组织在 目录下 最终目录结构 下是临时文件,上传的文件映射到该目录 下 ......

本节为 docker下 nginx,mysql,php 环境搭建

版本:mysql:5.6,nginx,php:5.6-fpm

只适合docker环境。本例以ubuntu16.04-x64下的docker环境为例

所有文件组织在 /www/目录下


最终目录结构

www/
|
|── tmp
|
├── conf
│   ├── mysql
│   ├── nginx
│   │   └── nginx.conf
│   └── php5.6
│       ├── docker-php-ext-mysql.ini
│       ├── docker-php-ext-mysqli.ini
│       └── docker-php-ext-pdo_mysql.ini
├── logs
│   ├── mysql
│   └── nginx
│       ├── access.log
│       └── error.log
├── mysql
└── sites
    ├── athome
    │   └── index.php
    └── test
        └── info.php
  • /www/tmp/* 下是临时文件,上传的文件映射到该目录
  • /www/conf/* 下是各自的配置文件
  • /www/logs/* 下是各自的日志
  • /www/mysql/* 下是mysql数据库的数据(持久化)
  • /www/sites/* 下是各网站内容
  • /www/sites/athome/* 主域名对应的网站,其他为子域名

首先创建目录 /www/

sudo mkdir /www/
[dzlua@ubuntu:~]$ sudo mkdir /www/
[dzlua@ubuntu:~]$ cd /www/
[dzlua@ubuntu:/www]$ 

mysql

拉取镜像

docker pull mysql:5.6

运行容器

docker run -d -p 3306:3306 \
    --name mysql \
    --restart always \
    -v /www/conf/mysql:/etc/mysql/config.d \
    -v /www/logs/mysql:/logs \
    -v /www/mysql:/var/lib/mysql \
    -e mysql_root_password=123456 \
    mysql:5.6

其中mysql_root_password为root初始化密码

php

拉取镜像

docker pull php:5.6-fpm

运行容器

docker run -d -p 9000:9000 \
    --name php5.6-fpm \
    --restart always \
    -v /www/conf/php5.6:/usr/local/etc/php/conf.d \
    -v /www/sites:/www \
    -v /www/tmp:/tmp \
    php:5.6-fpm

配置

  • 更改权限

    1. 进入容器

      docker exec -it php5.6-fpm /bin/bash
      [dzlua@ubuntu:/www]$ docker exec -it php5.6-fpm /bin/bash
      root@07eefd2ced20:/var/www/html#  
    2. 更改目录归属

      chown -r www-data:www-data /www/
      chown -r www-data:www-data /tmp/
      root@07eefd2ced20:/var/www/html# chown -r www-data:www-data /www/
      root@07eefd2ced20:/var/www/html#  
      root@07eefd2ced20:/var/www/html# chown -r www-data:www-data /tmp/
      root@07eefd2ced20:/var/www/html# 
    3. 更改目录权限

      chmod -r 755 /www/
      chmod -r 0777 /tmp/
      root@07eefd2ced20:/var/www/html# chmod -r 755 /www/
      root@07eefd2ced20:/var/www/html#  
      root@07eefd2ced20:/var/www/html# chmod -r 0777 /tmp/
      root@07eefd2ced20:/var/www/html#  
  • 安装扩展

    1. 进入容器

      docker exec -it php5.6-fpm /bin/bash
      [dzlua@ubuntu:/www]$ docker exec -it php5.6-fpm /bin/bash
      root@07eefd2ced20:/var/www/html#  
    2. 安装扩展

      docker-php-ext-install pdo pdo_mysql mysqli mysql
      root@07eefd2ced20:/var/www/html# docker-php-ext-install pdo pdo_mysql mysqli mysql
      root@07eefd2ced20:/var/www/html#  
  • 设置

    1. 进入设置

      cd /www/conf/php5.6
    2. 新建 docker-php.ini,输入date.timezone = "asia/shanghai",输入esc:qenter退出

      vi docker-php.ini

    操作过程(设置时区为中国北京):

    [dzlua@ubuntu:/www]$ cd /www/conf/php5.6
    [dzlua@ubuntu:/www/conf/php5.6]$ ls
    docker-php-ext-mysqli.ini  docker-php-ext-pdo_mysql.ini
    docker-php-ext-mysql.ini 
    [dzlua@ubuntu:/www/conf/php5.6]$ vi docker-php.ini
    date.timezone = "asia/shanghai"
    [dzlua@ubuntu:/www/conf/php5.6]$ ls
    docker-php-ext-mysqli.ini  docker-php-ext-pdo_mysql.ini
    docker-php-ext-mysql.ini   docker-php.ini
    [dzlua@ubuntu:/www/conf/php5.6]$ cat docker-php.ini
    date.timezone = "asia/shanghai"
    [dzlua@ubuntu:/www/conf/php5.6]$ 
  • 重启容器

docker restart php5.6-fpm
[dzlua@ubuntu:/www]$ docker restart php5.6-fpm
[dzlua@ubuntu:/www]$ 

nginx

拉取镜像

docker pull nginx

运行容器

docker run -d -p 80:80 \
    --name nginx \
    --restart always \
    -v /www/conf/nginx:/etc/nginx/conf.d \
    -v /www/logs/nginx:/var/log/nginx \
    -v /www/sites:/usr/share/nginx/html \
    nginx

配置

  • nginx config
    1. 假设主域名为dzlua.top,www.dzlua.top
    2. www.dzlua.top跳转到dzlua.top,对应目录为/www/sites/athome
    3. *.dzlua.top 对应为 /www/sites/*
    4. fastcgi_pass对应的ip为内网ip(非127.0.0.1,nginx访问php使用的ip)

    编辑/www/conf/nginx/nginx.conf

    # dzlua.top 服务器配置
    server {
        listen *:80;
        listen [::]:80;
        server_name www.dzlua.top;
        return 301 $scheme://dzlua.top$request_uri;
    }
    
    server {
        listen *:80;
        listen [::]:80;
        server_name dzlua.top; #绑定域名
    
        index index.htm index.html index.php; #默认文件
        root /usr/share/nginx/html/athome; #网站根目录
    
        location / {
            index index.html index.htm index.php;
            autoindex off;
        }
    
        location ~ \.php(.*)$ {
            root   /www/athome;
            fastcgi_pass 172.17.21.249:9000;
            fastcgi_index index.php;
            fastcgi_split_path_info ^((?u).+\.php)(/?.+)$;
            fastcgi_param script_filename $document_root$fastcgi_script_name;
            fastcgi_param path_info $fastcgi_path_info;
            fastcgi_param path_translated $document_root$fastcgi_path_info;
            include  fastcgi_params;
        }
    }
    
    server {
        listen *:80;
        listen [::]:80;
        server_name ~^(.+)?.dzlua.top$; #绑定域名
    
        set $site $1;
    
        index index.htm index.html index.php; #默认文件
        root /usr/share/nginx/html/$site; #网站根目录
    
        location / {
            index index.html index.htm index.php;
            autoindex off;
        }
    
        location ~ \.php(.*)$ {
            root   /www/$site;
            fastcgi_pass 172.17.21.249:9000;
            fastcgi_index index.php;
            fastcgi_split_path_info ^((?u).+\.php)(/?.+)$;
            fastcgi_param script_filename $document_root$fastcgi_script_name;
            fastcgi_param path_info $fastcgi_path_info;
            fastcgi_param path_translated $document_root$fastcgi_path_info;
            include  fastcgi_params;
        }
    }
  • 重启容器

    docker restart nginx
    [dzlua@ubuntu:/www]$ docker restart nginx
    [dzlua@ubuntu:/www]$ 

创建网站

所有网站都放在 /www/sites/目录下

  • 创建测试网站

    1. /www/sites下创建test,并创建info.php文件

      [dzlua@ubuntu:/www/sites/test]$ cat info.php
      <?phpphpinfo();?>
      [dzlua@ubuntu:/www/sites/test]$ 
    2. 访问网站http://dzlua.top/test/info.php,能显示php信息说明ok

  • 创建主站

    1. /www/sites下创建athome文件夹
    2. 把 网站源码 上传到/www/sites/athome目录
    3. /www/sites/athome权限更改为 chown -r www-data:www-data /www/sites/athome
    4. 访问地址为:http://dzlua.top
  • 创建子域名下其他网站,假设子域名为bbs

    1. /www/sites下创建bbs文件夹
    2. 把 网站源码 上传到/www/sites/bbs目录
    3. /www/sites/bbs权限更改为 chown -r www-data:www-data /www/sites/bbs
    4. 访问地址为:http://bbs.dzlua.top