tips:如果本文對你有用,請愛心點個贊,提高排名,讓這篇文章幫助更多的人。謝謝大家!比心❤~
如果解決不了,可以在文末加我微信,進羣交流。
Docker是一個開源的應用容器引擎,基於Go語言並遵從Apache2.0協議開源。
Docker可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後發佈到任何流行的Linux機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口(類似iPhone的app),更重要的是容器性能開銷極低。
文章就不介紹如何去安裝和使用docker了。不會的請大家自行谷歌/百度去學習下~
最新版的鏡像地址,在我的阿里雲倉庫裏面,文章末尾,可以直接使用命令docker pull獲取。
先說下本人docker中部署lnmp環境使用的幾個方法:
方法一:通過百度等方法,分別從一些鏡像倉庫拉取nginx、mysql、php鏡像,然後掛在數據卷並映射端口。
附參考飛機票:https://learnku.com/articles/9200/centos-7-uses-docker-to-build-a-basic-lnmp-environment
但由於我想要一個統一的lnmp環境,所以放棄了這個方法。
方法二:通過Dockerfile,寫一些命令,逐步安裝各個app及擴展。但由於中途有一些報錯,排查了很久,安裝過程有些繞,最終放棄。貼出dockerfile代碼,大家可以試用一下,如果有能力排除問題,也可以使用。
# base image # 基礎鏡像 FROM centos:latest # MAINTAINER編寫者 LABEL MAINTAINER [email protected] # put nginx-1.16.1.tar.gz into /usr/local and unpack nginx 來吧nginx 和PHP提前都放進基礎鏡像的/usr/local/src目錄下,方便編譯安裝 ADD nginx-1.16.1.tar.gz /usr/local ADD php-7.3.8.tar.gz /usr/local # running required command 安裝Nginx的一系列亂七八糟的依賴包 RUN yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel bison libcurl-devel RUN yum install -y libxslt-devel -y gd gd-devel GeoIP GeoIP-devel pcre pcre-devel RUN useradd -M -s /sbin/nologin nginx # change dir to /usr/local/nginx-1.16.1 WORKDIR /usr/local/nginx-1.16.1 # execute command to compile nginx RUN ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-file-aio --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module && make && make install EXPOSE 80 443 #先裝個本地Mysql RUN yum install -y wget RUN wget http://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm RUN rpm -ivh mysql80-community-release-el7-3.noarch.rpm --force --nodeps RUN yum install -y mysql-server #截止此,開始安裝php,宇宙慣例,開始安裝一些編譯的依賴包 RUN yum -y install epel-release RUN yum -y install libmcrypt-devel RUN yum -y install libxml2 libxml2-devel openssl curl-devel libjpeg-devel libpng-devel freetype-devel WORKDIR /usr/local/php-7.3.8 #編譯 安裝 RUN ./configure --prefix=/usr/local/php7.3.8 --with-config-file-path=/usr/local/php7.3.8/etc --with-config-file-scan-dir=/usr/local/php7.3.8/etc/php.d --with-mcrypt=/usr/include --enable-mysqlnd --with-mysqli --with-pdo-mysql --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-gd --with-iconv --with-zlib --enable-xml --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-curl --with-jpeg-dir --with-freetype-dir --enable-opcache && make && make install \ && cp /usr/local/php7.3.8/etc/php-fpm.conf.default /usr/local/php7.3.8/etc/php-fpm.conf \ && cp /usr/local/php7.3.8/etc/php-fpm.d/www.conf.default /usr/local/php7.3.8/etc/php-fpm.d/www.conf \ && sed -i '/;daemonize/a\daemonize = no' /usr/local/php7.3.8/etc/php-fpm.conf \ && sed -i 's/127.3.8.1/0.0.0.0/g' /usr/local/php7.3.8/etc/php-fpm.d/www.conf \ && echo "${TIME_ZOME}" > /etc/timezone \ && ln -sf /usr/share/zoneinfo/${TIME_ZOME} /etc/localtime \ && yum clean all \ && yum -y remove gcc gcc-c++ make EXPOSE 9000 CMD ["sbin/php-fpm","-c","etc/php-fpm.conf"] RUN cp php.ini-production /usr/local/php7.3.8/etc/php.ini
方法三:在centos中,通過lnmp一鍵安裝包,進行安裝。這個方法貌似可以成功,但是耗費時間會根據網絡和服務器配置的高低,變得漫長而痛苦。由於本人服務器自己用,所以配置不高,耗費了接近十多個小時,中途沒有報錯。所以有點哭笑不得。最後還是放棄。
1.文章教程使用配置環境:
[root@izwz91quxhnlk8xexo852xz ~]# docker --version Docker version 19.03.1, build 74b1e89 [root@izwz91quxhnlk8xexo852xz ~]# df -hl Filesystem Size Used Avail Use% Mounted on /dev/vda1 40G 19G 19G 51% / devtmpfs 909M 0 909M 0% /dev tmpfs 920M 0 920M 0% /dev/shm tmpfs 920M 556K 919M 1% /run tmpfs 920M 0 920M 0% /sys/fs/cgroup tmpfs 184M 0 184M 0% /run/user/0 overlay 40G 19G 19G 51% /var/lib/docker/overlay2/22a5b83dd224ee73588dcbc58c5d618e9d91398f57389ba3a3632aed7e853365/merged [root@izwz91quxhnlk8xexo852xz ~]# nginx -V nginx version: nginx/1.16.0 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) built with OpenSSL 1.1.1b 26 Feb 2019
2.lnmp環境搭建成功的詳細信息:
php7:
[root@9c73e764fc4b bin]# ./php --version PHP 7.3.8 (cli) (built: Aug 22 2019 09:34:04) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.3.8, Copyright (c) 1998-2018 Zend Technologies with the ionCube PHP Loader + ionCube24 v10.3.7, Copyright (c) 2002-2019, by ionCube Ltd. with Zend OPcache v7.3.8, Copyright (c) 1999-2018, by Zend Technologies with Xdebug v2.7.2, Copyright (c) 2002-2019, by Derick Rethans Segmentation fault (core dumped) [root@9c73e764fc4b bin]# ./php -m [PHP Modules] bcmath Core ctype curl date dom exif fileinfo filter ftp gd gettext hash iconv intl ionCube Loader json libxml mbstring memcache memcached mongodb mysqli mysqlnd openssl pcntl pcre PDO pdo_mysql pdo_sqlite phalcon Phar posix redis Reflection session shmop SimpleXML soap sockets sodium SPL sqlite3 standard swoole sysvsem tokenizer xdebug xml xmlreader xmlrpc xmlwriter xsl yaf Zend OPcache zip zlib
php5.6:
[root@9c73e764fc4b bin]# ./php --version PHP 5.6.40 (cli) (built: Aug 22 2019 10:06:15) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies with the ionCube PHP Loader + ionCube24 v10.3.7, Copyright (c) 2002-2019, by ionCube Ltd. with Zend Guard Loader v3.3, Copyright (c) 1998-2014, by Zend Technologies with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies with Xdebug v2.5.5, Copyright (c) 2002-2017, by Derick Rethans [root@9c73e764fc4b bin]# ./php -m [PHP Modules] bcmath Core ctype curl date dom ereg exif fileinfo filter ftp gd gettext hash iconv intl ionCube Loader json libxml mbstring mcrypt memcache memcached mhash mongodb mysql mysqli mysqlnd openssl pcntl pcre PDO pdo_mysql pdo_sqlite phalcon Phar posix redis Reflection session shmop SimpleXML soap sockets SPL sqlite3 standard swoole sysvsem tokenizer xdebug xml xmlreader xmlrpc xmlwriter xsl Zend Guard Loader Zend OPcache zip zlib
mysql8.0:
[root@9c73e764fc4b bin]# ./mysql --version ./mysql Ver 8.0.17 for linux-glibc2.12 on x86_64 (MySQL Community Server - GPL)
nginx:
[root@9c73e764fc4b sbin]# ./nginx -V nginx version: nginx/1.16.0 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC)
3.宿主機中通過以下命令可拉取我的阿里雲倉庫裏最新的的centos-lnmp鏡像,歡迎大家下載使用。有問題可以加微信與我溝通:
registry.cn-shenzhen.aliyuncs.com/eric_zhou/public:lnmp-v2.0
[root@izwz91quxhnlk8xexo852xz ~]# docker pull registry.cn-shenzhen.aliyuncs.com/eric_zhou/public:lnmp-v2.0 [root@izwz91quxhnlk8xexo852xz ~]# docker exec -it [imageID] /bin/bash ----------------------------------------------------------------------------------------- php mysql nginx 已經加入全局變量,需要執行以下命令方可生效: source /etc/profile
不懂地方可留言,或者進微信羣內交流。
羣二維碼:
羣二維碼如果過期,請加我個人微信:mengyilingjian.