当前位置: 首页 > 后端技术 > PHP

centos下docker的lnmp环境,每个组件都是一个独立的容器

时间:2023-03-30 03:34:33 PHP

docker安装uninstallyumremovedockerdocker-commondocker-selinuxdocker-engine安装docker需要环境yuminstall-yyum-utilsdevice-mapper-persistent-datalvm2configurationinstallrepsyum-config-manager--add-repohttps://download.docker.com/linux/centos/docker-ce.repo#更新yum包yummakecache快速安装docker并启动yuminstalldocker-cesystemctlstartdockerdockermysql容器安装mysqlmkdir-p/web/docker/mysql/logsmkdir-p/web/docker/mysql/pidmkdir-p/web/docker/mysql/datamkdir-p/web/docker/mysql/confdockerpullmysql:5.6.37/web/docker/mysql/conf/my.cnf主机上的配置文件机器[mysqld]slow_query_log=ONslow_launch_time=5#pid-file=/web/docker/mysql/pid/mysqld.pid#socket=/web/docker/mysql/pid/mysqld.sockdatadir=/web/docker/mysql/datalog-error=/web/docker/mysql/logs/error.log#建议禁用符号链接以防止各种安全风险symbolic-links=0启动和自定义confi配置文件和数据目录dockerrun-p3306:3306--namemysql-server-v/web/docker/mysql/conf:/etc/mysql/mysql.conf.d-v/web/docker/mysql:/web/docker/mysql-eMYSQL_ROOT_PASSWORD=123345-dmysql:5.6.37注意这里的--namemysql-server后面还有用,因为数据在宿主机上,所以下次可以使用omit-eMYSQL_ROOT_PASSWORD=123345dockerphpcontainerinstallphpdockerpullphp:5.6.31-fpmstartphp-fpmdockerrun--namephp-fpm-1--rm-p9000:9000-v/web/docker/nginx/www1:/var/www/html-dphp:5.6.31-fpm安装iconv、mcrypt、gd和pdo_mysql扩展dockerexec-itcontainer_id/bin/bashapt-getupdateapt-getinstall-ylibfreetype6-devlibjpeg62-turbo-devlibmcrypt-devlibpng12-devdocker-php-ext-install-j$(nproc)iconvmcryptdocker-php-ext-configuregd--with-freetype-dir=/usr/include/--with-jpeg-dir=/usr/include/docker-php-ext-install-j$(nproc)gdexitcontainer_id是你的php-fpm启动后的容器id安装redis,xdebug,memcacheextensionpeclinstallredis-3.1.3peclinstallxdebug-2.5.5docker-php-ext-enableredisxdebugapt-getinstall-ylibmemcached-devzlib1g-devpeclinstallmemcached-2.2.0docker-php-ext-enablememcached停止并重启php-fpmrestartdockerstopcontainer_iddockerstartcontainer_id注意这里的/var/www/html是默认读取php-fpm源码的位置。请不要修改后续nginx配置相关对应dockernginx容器安装nginxdockerpullnginx:1.12.1启动nginx,并关联mysql和php容器mkdir-p/web/docker/nginx/logsmkdir-p/web/docker/nginx/pidmkdir-p/web/docker/nginx/www1mkdir-p/web/docker/nginx/confdockerrun--namenginx-server-1--linkphp-fpm-1:php-fpm--linkmysql-server:mysql-server-v/web/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf-v/web/docker/nginx:/web/docker/nginx-p80:80-dnginx:1.12.1注意这里的/etc/nginx/nginx.conf是读取nginx源码的默认配置文件/web/docker/nginx/www1/index.php/web/docker/nginx/www1/index.htmlnginx正在运行!
由qklin(object)创建;微信:qklandy!/web/docker/nginx/conf/nginx.conf配置用户nginx;worker_processes2;#error_log/var/log/nginx/error.logwarn;#pid/var/run/nginx.pid;error_log/web/docker/nginx/logs/error.logwarn;pid/web/docker/nginx/pid/nginx.pid;worker_rlimit_nofile65535;events{使用epoll;worker_connections65535;}http{包括/etc/nginx/mime.types;default_type应用程序/八位字节流;#字符集gb2312;server_names_hash_bucket_size128;client_header_buffer_size32k;large_client_header_buffers432k;client_max_body_size8m;发送文件;tcp_nopush上;keepalive_timeout60;tcp_nodelayon;fastcgi_connect_timeout300;fastcgi_send_timeout300;fastcgi_read_timeout300;fastcgi_buffer_size64k;fastcgi_buffers464k;fastcgi_busy_buffers_size128k;fastcgi_temp_file_write_size128k;gzip上;gzip_min_length1k;gzip_buffers416k;gzip_http_version1.0;gzip_comp_level2;gzip_types文本/纯应??用程序/x-javascript文本/css应用程序/xml;gzip_vary开启;#limit_zone爬虫$binary_remote_addr10m;log_formatmain'$remote_addr-$remote_user[$time_local]"$request"''$status$body_bytes_sent"$http_referer"''"$http_user_agent""$http_x_forwarded_for"';access_log/var/log/nginx/access.logmain;include/web/docker/nginx/conf/vhost/*.conf;}vhost.example.confserver{listen80;server_namelocalhost;root/web/docker/nginx/www1;location/{indexindex.htmlindex.htmindex.php;}#limit_conn爬虫20;location~^.+\.php${fastcgi_split_path_info^((?U).+\.php)(/?.+)$;fastcgi_paramPATH_INFO$fastcgi_path_info;fastcgi_paramPATH_TRANSLATED$document_root$fastcgi_path_info;包括/web/docker/nginx/conf/fastcgi.conf;fastcgi_passphp-fpm:9000;}location~.*\.(gif|jpg|jpeg|png|bmp|swf)${过期30d;}location~.*\.(js|css)?${过期1h;}}fastcgi.conf#fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;#/var/www/html/是php-fpm容器中存放源代码的路径,这个php-fpm可以解析执行php文件的关键fastcgi_paramSCRIPT_FILENAME/var/www/html/$fastcgi_script_name;fastcgi_paramQUERY_STRING$query_string;fastcgi_paramREQUEST_METHOD$request_method;fastcgi_paramCONTENT_TYPE$content_type;fastcgi_paramCONTENT_LENGTH$content_length;fastcgi_paramSCRIPT_NAME$fastcgi_script_name;fastcgi_paramREQUEST_URI$request_uri;fastcgi_paramDOCUMENT_URI$document_uri;fastcgi_paramDOCUMENT_ROOT$document_root;fastcgi_paramSERVER_PROTOCOL$server_protocol;fastcgi_paramHTTPS$httpsif_not_empty;fastcgi_paramGATEWAY_INTERFACECGI/1.1;fastcgi_paramSERVER_SOFTWAREnginx/$nginx_version;fastcgi_paramREMOTE_ADDR$remote_addr;fastcgi_paramREMOTE_PORT$remote_port;fastcgi_paramSERVER_ADDR$server_addr;fastcgi_paramSERVER_PORT$server_port;fastcgi_paramSERVER_NAME$server_name;#仅限PHP,如果PHP是使用--enable-forc构建的则需要e-cgi-redirectfastcgi_paramREDIRECT_STATUS200;set$path_info$fastcgi_path_info;fastcgi_paramPATH_INFO$path_info;try_files$fastcgi_script_name=404;测试nginxcurlhttp://localhost/curlhttp://localhost/index.phpdockerredis容器安装redisdockerpullredis:4.0.1启动redisdockerrun-d-p6379:6379-v/web/docker/redis:/web/docker/redis--nameredis-server-1redis:4.0.1redis-server/web/docker/redis/conf/redis1.conf/web/docker/redis/data/redis1redis数据库文件夹(保存rdb和aof)/web/docker/redis/conf/redis.confbind127.0.0.1protected-modeyestcp-backlog511timeout0tcp-keepalive300#daemonizeyes#监督树。选项:#supervisedno-无监督交互#supervisedupstart-通过将Redis置于SIGSTOP模式来向upstart发出信号环境变量#注意:这些监督方法仅发出“进程已准备就绪”的信号。#它们不会启用连续的活动ping返回给您的主管。supervisedno#pidfile/var/run/redis_6379.pid#loglevelnotice#logfile"/web/docker/redis/logs/redis-server.log"databases16always-show-logoyessave9001save30010save6010000stop-writes-on-bgsave-erroryesrdbcompressionyesrdbchecksumyesdbfilenamedump.rdbdir/web/docker/redis/data/redis1slave-serve-stale-datayesslave-read-onlyyesrepl-diskless-syncnorepl-diskless-sync-delay5repl-disable-tcp-nodelaynoslave-priority100lazyfree-lazy-expirenolazyfree-lazy-server-delnoslave-lazy-flushnoappendonlyyesappendfilename"appendonly.aof"appendfsynceverysecno-appendfsync-on-rewritenoauto-aof-rewrite-percentage100auto-aof-rewrite-min-size64mbaof-load-truncatedyesaof-use-rdb-preamblenolua-time-limit5000slowlog-log-slower-比10000slowlog-max-len128latency-monitor-threshold0notify-keyspace-events“”有h-max-ziplist-条目512hash-max-ziplist-value64list-max-ziplist-size-2list-compress-depth0set-max-intset-entries512zset-max-ziplist-entries128zset-max-ziplist-value64hll-sparse-max-bytes3000activerehashingyesclient-output-buffer-limitnormal000client-output-buffer-limitslave256mb64mb60client-output-buffer-limitpubsub32mb8mb60hz10aof-rewrite-incremental-fsync官方包源代码。0是点我查看里面的redis.conf文件