摘要:初始环境注测试主机已设置好软件源,虚拟主机默认是用户登录目标环境一前期准备文件列表选择的是版依赖准备准备环境搭建使用,参考相应官网安装使用清华源安装卸载旧版本
初始环境:
[注:测试主机已设置好软件源,虚拟主机默认是root用户登录]
[]:~/tmp# lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 9.9 (stretch) Release: 9.9 Codename: stretch []:~/tmp#
目标环境:
[docker+] php-7.3.6 redis-5.0.5 memcached-1.5.16 openresty-1.15.8.1(nginx+lua) mysql-8.0.16 mongodb-4.0.10
一、前期准备
1、文件列表(mysql选择的是debian、x64、server版)
https://www.php.net/distributions/php-7.3.6.tar.xz http://download.redis.io/releases/redis-5.0.5.tar.gz https://memcached.org/files/memcached-1.5.16.tar.gz https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-community-server-dbgsym_8.0.16-2debian9_amd64.deb https://openresty.org/download/openresty-1.15.8.1.tar.gz https://fastdl.mongodb.org/src/mongodb-src-r4.0.10.tar.gz
2、依赖准备
PHP: apt-get install curl libxml2-dev libssl-dev libzip4 libzip-dev libbz2-dev libjpeg-dev libpng-dev libxpm-dev libfreetype6-dev libgmp-dev libgmp3-dev libcurl4-gnutls-dev librecode-dev libreadline-dev libtidy-dev libxslt1-dev -y OpenResty: apt-get install libpcre3-dev libssl-dev perl make build-essential curl -y
3、docker准备
环境搭建使用docker,参考相应官网:《Debian安装Docker》、《使用清华源安装docker》
[]:~/tmp# vim docker_install.sh #!/bin/bash #1. 卸载旧版本 apt-get remove docker docker-engine docker.io #2. 安装依赖 apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common -y #3. curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add - #4. x86_64添加软件仓库 add-apt-repository "deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian $(lsb_release -cs) stable" #5. 更新源并安装 apt-get update && apt-get install docker-ce -y []:~/tmp# chmod +x docker_install.sh && ./docker_install.sh
第一步准备完成
二、Dockerfile准备
1、PHP部分
参考官方:《alpine安装php》
[]:~/tmp# mkdir -p dk/php
[]:~/tmp# vim dk/php/Dockerfile
# php7.3.5; Feb 7, 2019 link: https://github.com/docker-library/php/blob/master/7.3/alpine3.9/fpm/Dockerfile
# Base images 基础镜像+阿里源
FROM alpine:3.9
#MAINTAINER 维护者信息
MAINTAINER cffycls@foxmail.com
# dependencies required for running "phpize"
ENV PHP_VERSION 7.3.6
ENV PHP_URL https://secure.php.net/get/php-$PHP_VERSION.tar.xz/from/this/mirror
ENV PHPIZE_DEPS
autoconf
dpkg-dev dpkg
file
g++
gcc
libc-dev
make
pkgconf
re2c
RUN sed -i "s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g" /etc/apk/repositories
&& apk update
&& addgroup -g 82 -S web
&& adduser -u 82 -D -S -G web web
&& mkdir -p "/usr/local/etc/php/conf.d" && mkdir -p "/var/www/html"
&& chown www-data:www-data /var/www/html && chmod 777 /var/www/html
&& apk add --no-cache
ca-certificates
curl
tar
xz
openssl
wget
&& apk add --no-cache --virtual .build-deps
$PHPIZE_DEPS
argon2-dev
coreutils
curl-dev
libedit-dev
libsodium-dev
libxml2-dev
openssl-dev
sqlite-dev
libjpeg-turbo-dev
libpng-dev
gd-dev
gettext-dev
freetype-dev
libxpm-dev
COPY php.tar.xz php.tar.xz
RUN set -x
# 下载过慢
# && wget -O php.tar.xz "$PHP_URL"
&& tar -Jxf php.tar.xz && cd php-$PHP_VERSION && ./configure
--prefix="/usr/local/php"
--with-config-file-path="/usr/local/php/etc"
--with-config-file-scan-dir="/usr/local/php/etc/conf.d"
--enable-option-checking=fatal
--with-mhash
--enable-ftp
--enable-exif
--enable-mbregex
--enable-mbstring
--enable-mysqlnd
--enable-sysvmsg
--enable-opcache
--enable-pcntl
--enable-sockets
--enable-sysvsem
--enable-xml
--with-curl
--with-libedit
--with-openssl
--with-zlib
--with-pcre-regex
--with-pear
--with-libxml-dir=/usr
--with-gd=/usr
--with-jpeg-dir
--with-freetype-dir
--with-xpm-dir
--with-png-dir
--with-gettext
--with-mhash
--with-iconv
--disable-fileinfo
--enable-fpm --with-fpm-user=web --with-fpm-group=www-data --disable-cgi
&& make -j "$(nproc)"
&& find -type f -name "*.a" -delete
&& make install
# && make clean
&& cd ../ && rm -rf php-$PHP_VERSION.tar.xz php-$PHP_VERSION
#其他插件安装,可以下载源码编译,这里使用
RUN set -x
# libevent
&& wget "https://github.com/libevent/libevent/releases/download/release-2.1.8-stable/libevent-2.1.8-stable.tar.gz"
&& tar -zxf libevent-2.1.8-stable.tar.gz && cd libevent-2.1.8-stable && ./configure --prefix=/usr && make && make install && cd ../
&& wget "http://pecl.php.net/get/event-2.4.3.tgz" && tar -zxf event-2.4.3.tgz && cd event-2.4.3 && /usr/local/php/bin/phpize
&& ./configure --with-event-libevent-dir=/usr --with-php-config=/usr/local/php/bin/php-config && make && make install && cd ../
&& rm -rf libevent-2.1.8-stable.tar.gz libevent-2.1.8-stable event-2.4.3.tgz event-2.4.3
# libuuid
&& wget "http://nchc.dl.sourceforge.net/project/libuuid/libuuid-1.0.3.tar.gz"
&& tar -zxf libuuid-1.0.3.tar.gz && cd libuuid-1.0.3 && ./configure --prefix=/usr && make && make install && cd ../
&& wget http://pecl.php.net/get/uuid-1.0.4.tgz && tar zxf uuid-1.0.4.tgz && cd uuid-1.0.4 && /usr/local/php/bin/phpize
&& ./configure --with-php-config=/usr/local/php/bin/php-config && make && make install && cd ../
&& rm -rf libuuid-1.0.3.tar.gz libuuid-1.0.3 uuid-1.0.4.tgz uuid-1.0.4
# && wget "https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz"
# && tar -zxf libmemcached-1.0.18.tar.gz && cd libmemcached-1.0.18 && ./configure --prefix=/usr && make && make install && cd ../
# && wget -O "http://pecl.php.net/get/memcached-3.1.3.tgz"
# && tar -zxf memcached-3.1.3 && cd memcached-3.1.3 && ./configure --with-event-libevent-dir=/usr --with-php-config=/usr/local/php/bin/php-config && make && make install && cd ../
&& runDeps="$(
scanelf --needed --nobanner --format "%n#p" --recursive /usr/local
| tr "," "
"
| sort -u
| awk "system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }"
)"
&& apk add --no-cache $runDeps
&& /usr/local/php/bin/pecl update-channels
# others of necessary
&& /usr/local/php/bin/pecl install igbinary swoole event uuid inotify redis
# memcached
&& rm -rf /tmp/pear ~/.pearrc
WORKDIR /usr/local/php/bin
[]:~/tmp#
这里参照官方始终无法构建成功,后面将重新定制。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/27945.html
摘要:上需要主从服务器端配合完成初始化同步用户主服务器端手动同步初始数据添加测试数据,适合从一台拓展至多台服务器的情况。 目前已完成:php7及扩展、redis5的Dockerfile测试版编写,稍许完善后同步上传到github,(记下这里memcached还没有剥离安装)。今天数据库,编程的一个重要原则是不要重复造轮子,php因为需要很多自定义插件、所以单独编译镜像,其实其他包括redis...
摘要:总结我觉得,以后基于的全栈式开发的模式将会越来越流行,这也会引领前端步入工程化时代。欢迎继续关注本博的更新中间层实践一基于的全栈式开发中间层实践二搭建项目框架中间层实践三配置中间层实践四模板引擎中间层实践五中间层的逻辑处理 版权声明:更多文章请访问我的个人站Keyon Y,转载请注明出处。 前言 近期公司有个新项目,由于后端人手不足,我果断的提议用node中间层的方案,得到了老大的支持...
阅读 1129·2021-11-15 11:38
阅读 2867·2021-09-08 09:45
阅读 3074·2021-09-04 16:48
阅读 2846·2019-08-30 15:54
阅读 1146·2019-08-30 13:57
阅读 1894·2019-08-29 15:39
阅读 701·2019-08-29 12:46
阅读 3733·2019-08-26 13:39