zoukankan      html  css  js  c++  java
  • lnmp环境搭建

    本节为 Docker下 Nginx,Mysql,Php 环境搭建

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

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

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


    最终目录结构

    www/
    |
    |── tmp
    |
    |
    |── cert
    |
    |
    ├── 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/cert/* 下是证书文件
    • /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 -p 443:443 
        --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 
        -v /www/cert:/etc/nginx/cert 
        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 服务器配置 http
      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;
          }
      }
      
      # dzlua.top 服务器配置 https, /www/sites/www/目录为athome网站
      
      server {
          listen *:80;
          listen [::]:80;
          server_name www.dzlua.top dzlua.top;
          return 301 https://www.dzlua.top$request_uri;
      }
      
      server {
          listen 443 ssl;
          server_name ~^(.+)?.dzlua.top$; #绑定域名
      
          set $site $1;
      
          ssl on;
          ssl_certificate cert/dzlua.top.pem;
          ssl_certificate_key cert/dzlua.top.key;
          ssl_session_timeout 5m;
          ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
          ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
          ssl_prefer_server_ciphers on;
      
          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
  • 相关阅读:
    80年代的兄弟,你会什么?
    设计模式单件模式
    大冒险 这注定是部史诗级的探索。。。
    关于重构JS前端框架的失败经验(顺便怀念那些死去的代码)
    JDBC连接数据库类(主要用于存储过程)
    ActiveRecord学习(六):总结
    ASP.NET中常用的文件上传下载方法
    [整理]ASP.NET2.0新特性概述
    关于NHibernate中one to many 的问题
    关注06德国世界杯:比赛日程表
  • 原文地址:https://www.cnblogs.com/dzlua/p/11202990.html
Copyright © 2011-2022 走看看