700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > centos7安装docker+nginx+php+mysql+redis+openresty+rabbitmq容器

centos7安装docker+nginx+php+mysql+redis+openresty+rabbitmq容器

时间:2018-10-19 20:42:37

相关推荐

centos7安装docker+nginx+php+mysql+redis+openresty+rabbitmq容器

docker安装

yum install -y docker # 安装docker

安装docker遇到的几个问题参考资料

/BaiLiangbyLiang/article/details/114541773

/news/22.html

/yzgblogs/p/14607637.html

启动之前将docker的镜像源改为阿里云的镜像源

vim /etc/docker/daemon.json

#/etc/docker/daemon.json{"registry-mirrors": ["https://ftnejmh3."]}

docker 常用命令

#常用命令docker version #查看版本systemctl start docker # 启动dockersystemctl stop docker # 停止dockersystemctl status docker # 查看docker状态systemctl restart docker # 重新启动dockerdocker pull nginx # 拉取下载镜像docker inspect php | grep "IPAddress" # 查看容器ip信息docker images # 查看本地镜像docker ps -a # 查看容器启动情况docker exec -it 容器id/容器名称 bash #进入容器内部docker logs nginx #查看容器日志docker run -p 9000:9000 -d --name php -v /docker/www:/docker/www --privileged=true php:7.4-fpm #创建容器应用-p 9000:9000 :将容器的9000端口映射到主机的9000端口-d 后台运行(守护进程)--name php:将容器命名为php-v 将主机中当前目录下的www挂载到容器的www目录docker update --restart=always name #更新容器自动重启

docker搭建nginx容器

docker pull nginx # 拉取下载nginx镜像

mkdir docker # 创建docker目录,管理docker相关配置等文件

cd docker

mkdir nginx # 创建docker目录,管理docker下nginx相关配置文件,用于映射到容器中

cd /docker/nginx

touch default.conf

vim default.conf

#default.confserver {listen 80;listen [::]:80;server_name localhost;root /docker/www/shopby/public;index index.php index.html;location / {try_files $uri $uri/ /index.php?$query_string;}error_page 500 502 503 504 /50x.html;location = /50x.html {root /docker/www/shopby/public;}location ~ \.php$ {root /docker/www/shopby/public;fastcgi_pass 172.17.0.3:9000; #映射到php服务端fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}}

使用nginx镜像创建nginx应用容器

docker run -p 80:80 -d --name nginx -v /docker/nginx/default.conf:/etc/nginx/conf.d/default.conf -v /docker/www:/docker/www --privileged=true nginx

docker搭建php容器

docker pull php:7.4-fpm # 拉取指定下载php7.4版本

docker exec -it php bash

docker-php-ext-install pdo_mysql # 安装php的mysql扩展

使用php镜像创建php应用容器

docker run -p 9000:9000 -d --name php -v /docker/www:/docker/www --privileged=true php:7.4-fpm

docker搭建mysql容器

docker pull mysql # 拉取下载mysql最新版

cd /docker

mkdir mysql

vim mysql/f

#/docker/mysql/f[client]port = 3306socket = /tmp/mysql.sock[mysqld]secure_file_priv=/var/lib/mysqlport = 3306socket = /tmp/mysql.sockdatadir = /usr/local/mysql/datadefault_storage_engine = InnoDBperformance_schema_max_table_instances = 400table_definition_cache = 400skip-external-lockingkey_buffer_size = 32Mmax_allowed_packet = 100Gtable_open_cache = 128sort_buffer_size = 768Knet_buffer_length = 4Kread_buffer_size = 768Kread_rnd_buffer_size = 256Kmyisam_sort_buffer_size = 8Mthread_cache_size = 16tmp_table_size = 32Mdefault_authentication_plugin = mysql_native_passwordlower_case_table_names = 1sql-mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLESexplicit_defaults_for_timestamp = truemax_connections = 500max_connect_errors = 100open_files_limit = 65535log-bin=mysql-binbinlog_format=mixedserver-id = 1binlog_expire_logs_seconds = 600000slow_query_log=1slow-query-log-file=/usr/local/mysql/data/mysql-slow.loglong_query_time=3early-plugin-load = ""innodb_data_home_dir = /usr/local/mysql/datainnodb_data_file_path = ibdata1:10M:autoextendinnodb_log_group_home_dir = /usr/local/mysql/datainnodb_buffer_pool_size = 128Minnodb_log_file_size = 64Minnodb_log_buffer_size = 16Minnodb_flush_log_at_trx_commit = 1innodb_lock_wait_timeout = 50innodb_max_dirty_pages_pct = 90innodb_read_io_threads = 1innodb_write_io_threads = 1[mysqldump]quickmax_allowed_packet = 500M[mysql]no-auto-rehash[myisamchk]key_buffer_size = 32Msort_buffer_size = 768Kread_buffer = 2Mwrite_buffer = 2M[mysqlhotcopy]interactive-timeout

使用mysql镜像创建mysql应用容器,MYSQL_ROOT_PASSWORD=root设置账户密码

docker run -p 3306:3306 -d --name mysql -v /etc/f:/etc/mysql/f --privileged=true -e MYSQL_ROOT_PASSWORD=root mysql

docker搭建redis容器

docker pull redis # 拉取下载mysql最新版

遇到问题:Error response from daemon: Get https://registry-1.docker.io/v2/library/ubuntu/manifests/2.04:

解决方式:

第1步:通过dig @114.114.114.114 registry-1.docker.io找到可用IP地址

第二步:修改/etc/hosts强制docker.io相关的域名解析到上面的ip

第三步:保存配置文件,逐个更换ip地址尝试下载镜像,这里是第三个地址成功的。

最后,使用下载成功的redis镜像创建redis应用容器

docker run -p 6379:6379 -d --name redis --privileged=true --requirepass root redis

至此,nginx+mysql+php+redis容器创建完成

redis.conf Maxmemory 4G # 设置最大内存 Maxmemory-policy allkeys-lru # 设置淘汰策略

错误:(error) ERR AUTH called without any password configured for the default user. Are you sure your configuration is correct?

这是设置容器时没有加–requirepass root设置密码参数,root为你要设置的密码

已忘记设置密码的容器,要么重建容器,

要么进入容器

docker exec -it redis bash

redis-cli

config set requirepass root #设置空密码,每次重启密码都会生效,要重复操作,先这样了,没找到配置文件永久设置,待更新…

docker搭建openresty容器

docker pull openresty/openresty # 拉取下载openresty

docker run -p 90:90 -d --name openresty openresty/openresty

docker exec -it openresty bash

cd /etc/nginx/conf.d

docker cp openresty:/etc/nginx/conf.d/default.conf /docker/openresty/conf/default.conf

docker stop openresty

docker rm openresty

docker run -p 90:90 -d --name openresty -v /docker/openresty/conf/default.conf:/etc/nginx/conf.d/default.conf -v /docker/www:/docker/www --privileged=true openresty/openresty

#安装wget

apt update # ubuntu apt命令 centos yum命令

apt -y install wget # 安装wget

cd /usr/local/openresty/lualib/resty/

wget /bungle/lua-resty-template/master/lib/resty/template.lua

/bungle/lua-resty-template/master/lib/resty/template/html.lua

/ledgetech/lua-resty-http/master/lib/resty/http.lua

/ledgetech/lua-resty-http/master/lib/resty/http_headers.lua

/ledgetech/lua-resty-http/master/lib/resty/http_connect.lua

nginx缓存反向代理openresty+lua+template.html模板渲染

#nginx default.confproxy_cache_path /cache/nginx levels=1:2 keys_zone=imooc_cache:10m max_size=5g inactive=60m use_temp_path=off;proxy_cache_path /cache/productInfoCache levels=1:2 keys_zone=productInfoCache:256m max_size=5g inactive=1d use_temp_path=off;upstream shopby_openresty{server 172.17.0.7:90 weight=5 max_fails=3 fail_timeout=30s;}#default.confserver {listen 80;listen [::]:80;server_name shopby-; # centos laravel shopby项目域名root /docker/www/shopby/public;index index.php index.html;location / {try_files $uri $uri/ /index.php?$query_string;}error_page 500 502 503 504 /50x.html;location = /50x.html {root /docker/www/shopby/public;}location /home{proxy_cache imooc_cache;proxy_pass http://shopby_openresty;proxy_cache_valid 200 304 12h;proxy_cache_valid any 10m;proxy_cache_key $host$uri$is_args$args;include /etc/nginx/conf.d/proxy_params;}location /productinfo{proxy_cache productInfoCache;proxy_cache_valid 200 304 302 1d;proxy_cache_key $request_uri;proxy_pass http://shopby_openresty;}location ~ .*/.(gif|jpg|jpeg|png|bmp|swf|js|css)${expires 30d;}location ~ \.php$ {root /docker/www/shopby/public;fastcgi_pass 172.17.0.3:9000; #映射到php服务端fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}}

#openresty default.conflua_shared_dict dis_cache 20m;lua_shared_dict productInfoCache 200m;lua_package_path "/usr/local/openresty/lualib/?.lua";lua_package_cpath "/usr/local/openresty/lualib/?.so";server {listen 90;listen [::]:90;server_name shopby-;root /docker/www/webserver;index index.html login.html;set $template_root "/docker/www/productinfo";location /shopby_home_index_category {content_by_lua_file /docker/www/lua/shopby_home_index_category.lua;}location /productinfo{default_type 'text/html';content_by_lua_file /docker/www/lua/productinfo.lua;}}

#openresty productinfo.lualocal uri_args = ngx.req.get_uri_args()local productId = uri_args["product_id"]local cache_ngx = ngx.shared.productInfoCachelocal cjson = require("cjson")local productCacheKey = "lmrs::product::info::"..productIdlocal productCache = cache_ngx:get(productCacheKey)if productCache == "" or productCache == nil thenlocal http = require("resty.http")local httpc = http.new()local url = "http://192.168.31.198/api/productItems?product_id="..productIdlocal resp,err = httpc:request_uri(url,{method = "POST",body = body,headers = {["Content-Type"] = "application/x-www-form-urlencoded",}})productCache = resp.bodycache_ngx:set(productCacheKey,productCache,10 * 60)endlocal productCacheJson = cjson.decode(productCache)local productInfo = {product_id = productId,product_name = productCacheJson["name"],product_long_name = productCacheJson["long_name"],product_sold_count = productCacheJson["sold_count"],product_review_count = productCacheJson["review_count"]}local template = require("resty.template")template.render("template.html",productInfo)

#openresty template.html<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>{* product_name *}</title><script type="text/javascript" src="http://192.168.31.198:90/static/js/jquery_4.js"></script></head><body>商品名称222:{* product_name *}销量:{* product_sold_count *}评价:{* product_sold_count *}<input id="product_id" type="hidden" value="{* product_id *}"><script type="text/javascript">var product_id = document.getElementById("product_id").value;$.ajax({type: "post",url: "http://192.168.31.198/api/productInfo",data:{"product_id":product_id},success: function(data) {var html = "<p>";html += "价格:"+data.price;$("body").append(html);}});</script></body></html>

docker搭建rabbitmq容器

docker pull rabbitmq

docker run -p 5672:5672 -p 15672:15672 -d --name rabbitmq -v /docker/rabbitmq:/var/lib/rabbitmq --privileged=true --hostname byRabbitmq -e RABBITMQ_DEFAULT_VHOST=my_vhost -e RABBITMQ_DEFAULT_USER=rabbitmq -e RABBITMQ_DEFAULT_PASS=rabbitmq rabbitmq

安装rabbitmq可视化管理组件:rabbitmq_management

docker exec -it rabbitmq bash

rabbitmq-plugins enable rabbitmq_management

php容器中安装amqp扩展

docker exec -it php bash

安装amqp之前需要先安装rabbitmq-c扩展

apt-get update

apt-get install wget

cd /home

wget /alanxz/rabbitmq-c/releases/download/v0.8.0/rabbitmq-c-0.8.0.tar.gz

tar -zxvf rabbitmq-c-0.8.0.tar.gz

cd rabbitmq-c-0.8.0

./configure --prefix=/usr/local/rabbitmq-c

make && make install

/package-search.php # 搜索需要的包

/get/amqp-1.10.2.tgz # amqp 包下载地址

cd /home

wget /get/amqp-1.10.2.tgz

tar -zxvf amqp-1.10.2.tgz

cp -r amqp-1.10.2 /usr/src/php/ext/amqp

cp /home/rabbitmq-c-0.8.0/librabbitmq/amqp_ssl_socket.h /usr/src/php/ext/amqp/

docker-php-ext-configure amqp --with-php-config=/usr/local/bin/php-config --with-librabbitmq-dir=/usr/local/rabbitmq-c

docker-php-ext-install amqp

php -m | grep amqp

docker搭建rabbitmq容器

php容器中安装amqp扩展

laravel中使用rabbitmq

同步系统时间

yum -y install ntp ntpdate

ntpdate 0.asia.

docker cp /usr/share/zoneinfo/Asia/Shanghai nginx:/etc/localtime #同步docker容器内系统时间

docker cp /usr/share/zoneinfo/Asia/Shanghai php:/etc/localtime #同步docker容器内系统时间

修改laravel项目config/app.php ‘timezone’ => ‘Asia/Shanghai’

docker restart php

docker restart nginx

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。