资讯专栏INFORMATION COLUMN

centos下docker的lnmp的环境,各部件独立容器

233jl / 1749人阅读

摘要:安装卸载安装需要环境配置安装更新包安装并启动容器安装宿主机上配置文件启动并自定义配置文件和数据目录注意这里的后续有用,因为是宿主机上,所以下次可以省略容器安装启动

docker安装 卸载

</>复制代码

  1. yum remove docker docker-common docker-selinux docker-engine
安装docker需要环境

</>复制代码

  1. yum install -y yum-utils device-mapper-persistent-data lvm2
配置安装reps

</>复制代码

  1. yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  2. #更新yum包
  3. yum makecache fast
安装docker 并启动

</>复制代码

  1. yum install docker-ce
  2. systemctl start docker
docker mysql 容器 安装mysql

</>复制代码

  1. mkdir -p /web/docker/mysql/logs
  2. mkdir -p /web/docker/mysql/pid
  3. mkdir -p /web/docker/mysql/data
  4. mkdir -p /web/docker/mysql/conf
  5. docker pull mysql:5.6.37
宿主机上/web/docker/mysql/conf/my.cnf 配置文件

</>复制代码

  1. [mysqld]
  2. slow_query_log = ON
  3. slow_launch_time=5
  4. #pid-file = /web/docker/mysql/pid/mysqld.pid
  5. #socket = /web/docker/mysql/pid/mysqld.sock
  6. datadir = /web/docker/mysql/data
  7. log-error = /web/docker/mysql/logs/error.log
  8. # Disabling symbolic-links is recommended to prevent assorted security risks
  9. symbolic-links=0
启动并自定义配置文件和数据目录

</>复制代码

  1. docker run -p 3306:3306 --name mysql-server -v /web/docker/mysql/conf:/etc/mysql/mysql.conf.d -v /web/docker/mysql:/web/docker/mysql -e MYSQL_ROOT_PASSWORD=123345 -d mysql:5.6.37

</>复制代码

  1. 注意这里的--name mysql-server 后续有用,因为data是宿主机上,所以下次可以省略-e MYSQL_ROOT_PASSWORD=123345

docker php 容器 安装php

</>复制代码

  1. docker pull php:5.6.31-fpm
启动php-fpm

</>复制代码

  1. docker run --name php-fpm-1 --rm -p 9000:9000 -v /web/docker/nginx/www1:/var/www/html -d php:5.6.31-fpm
安装iconv、mcrypt、gd和pdo_mysql扩展

</>复制代码

  1. docker exec -it container_id /bin/bash
  2. apt-get update
  3. apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libmcrypt-dev libpng12-dev
  4. docker-php-ext-install -j$(nproc) iconv mcrypt
  5. docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/
  6. docker-php-ext-install -j$(nproc) gd
  7. exit

</>复制代码

  1. container_id 是你php-fpm启动后的容器id

安装redis、xdebug、memcache扩展

</>复制代码

  1. pecl install redis-3.1.3
  2. pecl install xdebug-2.5.5
  3. docker-php-ext-enable redis xdebug
  4. apt-get install -y libmemcached-dev zlib1g-dev
  5. pecl install memcached-2.2.0
  6. docker-php-ext-enable memcached
停止和重启php-fpm重启

</>复制代码

  1. docker stop container_id
  2. docker start container_id

</>复制代码

  1. 注意这里的/var/www/html是php-fpm的读取源码默认位置,请勿修改后续nginx里有配置相关对应

docker nginx 容器 安装nginx

</>复制代码

  1. docker pull nginx:1.12.1
启动nginx,并关联mysql和php容器

</>复制代码

  1. mkdir -p /web/docker/nginx/logs
  2. mkdir -p /web/docker/nginx/pid
  3. mkdir -p /web/docker/nginx/www1
  4. mkdir -p /web/docker/nginx/conf
  5. docker run --name nginx-server-1 --link php-fpm-1:php-fpm --link mysql-server:mysql-server -v /web/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /web/docker/nginx:/web/docker/nginx -p 80:80 -d nginx:1.12.1

</>复制代码

  1. 注意这里的/etc/nginx/nginx.conf是nginx的读取源码默认配置文件

/web/docker/nginx/www1/index.php

</>复制代码

/web/docker/nginx/www1/index.html

</>复制代码

  1. nginx is working!
  2. create by qklin(object); wechat: qklandy!
/web/docker/nginx/conf/nginx.conf 配置

</>复制代码

  1. user nginx;
  2. worker_processes 2;
  3. #error_log /var/log/nginx/error.log warn;
  4. #pid /var/run/nginx.pid;
  5. error_log /web/docker/nginx/logs/error.log warn;
  6. pid /web/docker/nginx/pid/nginx.pid;
  7. worker_rlimit_nofile 65535;
  8. events {
  9. use epoll;
  10. worker_connections 65535;
  11. }
  12. http {
  13. include /etc/nginx/mime.types;
  14. default_type application/octet-stream;
  15. #charset gb2312;
  16. server_names_hash_bucket_size 128;
  17. client_header_buffer_size 32k;
  18. large_client_header_buffers 4 32k;
  19. client_max_body_size 8m;
  20. sendfile on;
  21. tcp_nopush on;
  22. keepalive_timeout 60;
  23. tcp_nodelay on;
  24. fastcgi_connect_timeout 300;
  25. fastcgi_send_timeout 300;
  26. fastcgi_read_timeout 300;
  27. fastcgi_buffer_size 64k;
  28. fastcgi_buffers 4 64k;
  29. fastcgi_busy_buffers_size 128k;
  30. fastcgi_temp_file_write_size 128k;
  31. gzip on;
  32. gzip_min_length 1k;
  33. gzip_buffers 4 16k;
  34. gzip_http_version 1.0;
  35. gzip_comp_level 2;
  36. gzip_types text/plain application/x-javascript text/css application/xml;
  37. gzip_vary on;
  38. #limit_zone crawler $binary_remote_addr 10m;
  39. log_format main "$remote_addr - $remote_user [$time_local] "$request" "
  40. "$status $body_bytes_sent "$http_referer" "
  41. ""$http_user_agent" "$http_x_forwarded_for"";
  42. access_log /var/log/nginx/access.log main;
  43. include /web/docker/nginx/conf/vhost/*.conf;
  44. }
vhost.example.conf

</>复制代码

  1. server {
  2. listen 80;
  3. server_name localhost;
  4. root /web/docker/nginx/www1;
  5. location / {
  6. index index.html index.htm index.php;
  7. }
  8. # limit_conn crawler 20;
  9. location ~ ^.+.php$ {
  10. fastcgi_split_path_info ^((?U).+.php)(/?.+)$;
  11. fastcgi_param PATH_INFO $fastcgi_path_info;
  12. fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
  13. include /web/docker/nginx/conf/fastcgi.conf;
  14. fastcgi_pass php-fpm:9000;
  15. }
  16. location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ {
  17. expires 30d;
  18. }
  19. location ~ .*.(js|css)?$ {
  20. expires 1h;
  21. }
  22. }
fastcgi.conf

</>复制代码

  1. #fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  2. #/var/www/html/ 为php-fpm容器里源码存放的路径,这个php-fpm能解析执行php文件的关键
  3. fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
  4. fastcgi_param QUERY_STRING $query_string;
  5. fastcgi_param REQUEST_METHOD $request_method;
  6. fastcgi_param CONTENT_TYPE $content_type;
  7. fastcgi_param CONTENT_LENGTH $content_length;
  8. fastcgi_param SCRIPT_NAME $fastcgi_script_name;
  9. fastcgi_param REQUEST_URI $request_uri;
  10. fastcgi_param DOCUMENT_URI $document_uri;
  11. fastcgi_param DOCUMENT_ROOT $document_root;
  12. fastcgi_param SERVER_PROTOCOL $server_protocol;
  13. fastcgi_param HTTPS $https if_not_empty;
  14. fastcgi_param GATEWAY_INTERFACE CGI/1.1;
  15. fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
  16. fastcgi_param REMOTE_ADDR $remote_addr;
  17. fastcgi_param REMOTE_PORT $remote_port;
  18. fastcgi_param SERVER_ADDR $server_addr;
  19. fastcgi_param SERVER_PORT $server_port;
  20. fastcgi_param SERVER_NAME $server_name;
  21. # PHP only, required if PHP was built with --enable-force-cgi-redirect
  22. fastcgi_param REDIRECT_STATUS 200;
  23. set $path_info $fastcgi_path_info;
  24. fastcgi_param PATH_INFO $path_info;
  25. try_files $fastcgi_script_name =404;
测试nginx

</>复制代码

  1. curl http://localhost/
  2. curl http://localhost/index.php
docker redis 容器 安装redis

</>复制代码

  1. docker pull redis:4.0.1
启动redis

</>复制代码

  1. docker run -d -p 6379:6379 -v /web/docker/redis:/web/docker/redis --name redis-server-1 redis:4.0.1 redis-server /web/docker/redis/conf/redis1.conf

</>复制代码

  1. /web/docker/redis/data/redis1 redis数据库文件夹(保存rdb和aof)

/web/docker/redis/conf/redis.conf

</>复制代码

  1. bind 127.0.0.1
  2. protected-mode yes
  3. tcp-backlog 511
  4. timeout 0
  5. tcp-keepalive 300
  6. #daemonize yes
  7. # supervision tree. Options:
  8. # supervised no - no supervision interaction
  9. # supervised upstart - signal upstart by putting Redis into SIGSTOP mode
  10. # supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET
  11. # supervised auto - detect upstart or systemd method based on
  12. # UPSTART_JOB or NOTIFY_SOCKET environment variables
  13. # Note: these supervision methods only signal "process is ready."
  14. # They do not enable continuous liveness pings back to your supervisor.
  15. supervised no
  16. #pidfile /var/run/redis_6379.pid
  17. #loglevel notice
  18. #logfile "/web/docker/redis/logs/redis-server.log"
  19. databases 16
  20. always-show-logo yes
  21. save 900 1
  22. save 300 10
  23. save 60 10000
  24. stop-writes-on-bgsave-error yes
  25. rdbcompression yes
  26. rdbchecksum yes
  27. dbfilename dump.rdb
  28. dir /web/docker/redis/data/redis1
  29. slave-serve-stale-data yes
  30. slave-read-only yes
  31. repl-diskless-sync no
  32. repl-diskless-sync-delay 5
  33. repl-disable-tcp-nodelay no
  34. slave-priority 100
  35. lazyfree-lazy-expire no
  36. lazyfree-lazy-server-del no
  37. slave-lazy-flush no
  38. appendonly yes
  39. appendfilename "appendonly.aof"
  40. appendfsync everysec
  41. no-appendfsync-on-rewrite no
  42. auto-aof-rewrite-percentage 100
  43. auto-aof-rewrite-min-size 64mb
  44. aof-load-truncated yes
  45. aof-use-rdb-preamble no
  46. lua-time-limit 5000
  47. slowlog-log-slower-than 10000
  48. slowlog-max-len 128
  49. latency-monitor-threshold 0
  50. notify-keyspace-events ""
  51. hash-max-ziplist-entries 512
  52. hash-max-ziplist-value 64
  53. list-max-ziplist-size -2
  54. list-compress-depth 0
  55. set-max-intset-entries 512
  56. zset-max-ziplist-entries 128
  57. zset-max-ziplist-value 64
  58. hll-sparse-max-bytes 3000
  59. activerehashing yes
  60. client-output-buffer-limit normal 0 0 0
  61. client-output-buffer-limit slave 256mb 64mb 60
  62. client-output-buffer-limit pubsub 32mb 8mb 60
  63. hz 10
  64. aof-rewrite-incremental-fsync yes
redis4.0.1 官方源码包里的redis.conf文件

</>复制代码

  1. 点我查看

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27032.html

相关文章

  • centosdockerlnmp环境部件独立容器

    摘要:安装卸载安装需要环境配置安装更新包安装并启动容器安装宿主机上配置文件启动并自定义配置文件和数据目录注意这里的后续有用,因为是宿主机上,所以下次可以省略容器安装启动 docker安装 卸载 yum remove docker docker-common docker-selinux docker-engine 安装docker需要环境 yum install -y yum-utils d...

    DevTalking 评论0 收藏0
  • centosdockerlnmp环境部件独立容器

    摘要:安装卸载安装需要环境配置安装更新包安装并启动容器安装宿主机上配置文件启动并自定义配置文件和数据目录注意这里的后续有用,因为是宿主机上,所以下次可以省略容器安装启动 docker安装 卸载 yum remove docker docker-common docker-selinux docker-engine 安装docker需要环境 yum install -y yum-utils d...

    HmyBmny 评论0 收藏0
  • 分解dockerlnmp环境搭建中作用

    摘要:如果不用我们可能将上述讲的命令每搭建一次就需要执行一遍,有没有能统一管理的有,就是在环境搭建中的作用快速创建镜像,快速创建并运行容器,实现统一管理。 前言 初学者在dcoker学习过程中,可能不太清楚docker中那么多的命令,参数,工具在lnmp环境搭建中起了什么作用,下面跟着我来熟悉一下。(本文面向的是不怎么熟悉linux的:phper) 镜像,容器,仓库 镜像:Docker 镜像...

    tommego 评论0 收藏0
  • Docker部署WordPress LNMP(Nginx PHP MySQL)环境实践

    摘要:为了能只使用一个文件就能快速部署环境,我们把及环境的相关配置保存到阿里云的代码托管,然后使用阿里云的镜像仓库从拉取自动构建镜像。编写以上在阿里云创建的镜像到本地,在此项目中创建然后在目录分别创建目录,用于存放它们各自及配置文件。 Docker基于LXC实现了把软件封装到一个完整的文件系统,可以在docker容器中运行所需的一切代码,运行环境,系统工具和系统库。由于docker使用独立于...

    Aklman 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<