Docker 使用 Centos7 镜像,安装 LNP 环境

1、拉取 Centos7 镜像, 启动容器, 进入容器

# 拉取镜像
docker pull centos:7

# 启动镜像(挂载文件夹)
docker run --name centos7 -d -v /home/docker/centos7/www:/data/www -v /home/docker/centos7/nginx/conf:/usr/local/nginx/conf -v /home/docker/centos7/nginx/logs:/data/www/logs/  -it --privileged=true centos:7 /usr/sbin/init

# 进入容器
docker exec -it 已启动容器ID /bin/bash

2、下载安装 Nginx

# 安装依赖
yum -y install gcc pcre-devel zlib-devel openssl openssl-devel

# 安装 wget ,用于下载 Nginx 压缩包
yum install wget

# 创建压缩包文件夹,下载压缩包
mkdir /usr/local/package && cd /usr/local/package && wget https://nginx.org/download/nginx-1.22.1.tar.gz

# 解压压缩包,移动解压文件夹到 /usr/local/nginx
tar -zvxf nginx-1.22.1.tar.gz && mv nginx-1.22.1 /usr/local/nginx

3、下载安装 PHP

# 安装依赖
yum install -y gcc gcc-c++  make zlib zlib-devel pcre pcre-devel  libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers

# 切换文件夹,下载 PHP 源码包
cd /usr/local/package && wget https://www.php.net/distributions/php-7.3.27.tar.gz.tar.gz --no-check-certificate

# 解压源码包
tar -zvxf php-7.3.27.tar.gz.tar.gz

# 进入源码文件夹
cd /usr/local/package/php-7.3.27

# 生成配置文件,演示部分只安装部分拓展
./configure \
--prefix=/usr/local/php/php7.3.27 \
--exec-prefix=/usr/local/php/php7.3.27 \
--bindir=/usr/local/php/php7.3.27/bin \
--sbindir=/usr/local/php/php7.3.27/sbin \
--includedir=/usr/local/php/php7.3.27/include \
--libdir=/usr/local/php/php7.3.27/lib/php \
--mandir=/usr/local/php/php7.3.27/php/man \
--with-config-file-path=/usr/local/php/php7.3.27/etc \
--with-openssl \
--with-bcmath \
--with-ctype \
--with-fileinfo \
--with-json \
--with-tokenizer \
--with-xml \
--with-pdo_mysql \
--with-mysqlnd \
--enable-mbstring \
--enable-fpm

# 编译安装
make && make install

# 复制源码包中的 php 配置文件
cp php.ini-production /usr/local/php/php7.3.27/etc/php.ini

# 复制源码包中的 php-fpm 文件
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm7.3.27
chmod +x /etc/init.d/php-fpm7.3.27

# 复制 php-fpm 与 www.conf 配置文件
cp /usr/local/php/php7.3.27/etc/php-fpm.conf.default /usr/local/php/php7.3.27/etc/php-fpm.conf
cp /usr/local/php/php7.3.27/etc/php-fpm.d/www.conf.default/usr/local/php/php7.3.27/etc/php-fpm.d/www.conf 

# 添加系统环境变量, 复制 export PATH=$PATH:/usr/local/php/php7.3.27/bin/:/usr/local/php/php7.3.27/sbin/ 到 php.sh 文件末尾。 
vim /etc/profile.d/php.sh
source /etc/profile.d/php.sh

# 启动 php-fpm
service php-fpm7.3.27 start

4、配置 Nginx

# 在 Nginx 的 conf 文件夹创建 vhosts 文件夹,并且在 Nginx.conf 文件中的 Http 部分底部添加 include vhosts/*.conf

# 创建 vhosts 文件夹创建 test.conf 文件, 以下为文件内容
server {
    listen 1069;
    root /data/www/test
    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        #fastcgi_param  SCRIPT_FILENAME /usr/local/nginx/nginx1.2.1/html/game/public$fastcgi_script_name;
        include        fastcgi_params;
    }
}

5、 添加容器的端口映射

# 查看NAT表中的 PREROUTING 链, 判断是否存在 -A PREROUTINH -p -tcp -m addrtype ........ 配置项
sudo iptables -t nat --list-rules PREROUTING

# 若存在,忽略此操作,否则添加如下配置
sudo iptables -t nat -A PREROUTING -p tcp -m addrtype --dst-type LOCAL -j DOCKER

# 查看容器 ID
docker ps

# 查看容器 IP 地址
docker inspect 容器ID | grep IPAddress

# 查看 NAT 表中的 DOCKER 链,若不存在容器的IP地址,则需要添加配置。(注意这边的配置需要根据实际配置信息),否则忽略。
sudo iptables -t nat --list-rules DOCKER
sudo iptables -t nat -A DOCKER ! -i br-c419172b92ee -p tcp -m tcp --dport 1069 -j DNAT --to-destination 172.17.0.2:1069

# 查看 NAT 表中的 POSTROUTING 链,若不存在容器的IP地址,则需要添加配置。(注意这边的配置需要根据实际配置信息),否则忽略。
sudo iptables -t nat --list-rules POSTROUTING
sudo iptables -t nat -A POSTROUTING -s 172.17.0.2/32 -d 172.17.0.2/32 -p tcp -m tcp --dport 1069 -j MASQUERADE

# 查看 FILTER 表中的 DOCKER 链,若不存在容器的IP地址,则需要添加配置。(注意这边的配置需要根据实际配置信息),否则忽略。
sudo iptables --list-rules DOCKER
sudo iptables -t filter -A DOCKER -d 172.17.0.2/32 ! -i br-c419172b92ee -o br-c419172b92ee -p tcp -m tcp --dport 1069 -j ACCEPT

拓展部分

1、PHP 拓展安装

# 初始化(源码包文件夹)
/usr/local/package/php-7.3.27/bin/phpize  && cd /usr/local/package/php-7.3.27

# 添加拓展
./configure --with-拓展名称=/usr/local/php/php7.3.27/bin/php-config 

# 编译
make && make install

# 注意:在安装 GD时需要安装另外一个 freetype 拓展,需要先安装 freetype 才能在安装 GD,并且需要先执行 make clean,清除之前编译的数据
# 需要提前下载 freetype, http://download.savannah.gnu.org/releases/freetype/
/usr/local/package/php-7.3.27/bin/phpize && make clean && ./configure -prefix=/usr/local/freetype && make && make install

# php.ini 文件中开启拓展
extension=gd

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值