树莓派docker安装lnmp

10:08 2024/7/16
12:14 2024/7/15
arm7docker安装mariadb
docker run -itd \
--name mariadb-test \
-p 3306:3306 \
do.nark.eu.org/library/ubuntu \
/bin/bash

docker exec -it mariadb-test /bin/bash

树莓派中安装MariaDB-server且在windows上使用DBeaver连接MariaDB数据库_dbeaver 连接mariadb-CSDN博客
https://blog.csdn.net/chenyu128/article/details/131101434
apt install mariadb-server
service mariadb status

mysql_secure_installation

CREATE USER 'a'@'%' IDENTIFIED BY 'a';
GRANT all privileges on *.* TO 'a'@'%';
FLUSH PRIVILEGES;
SHOW GRANTS FOR 'a'@'%';

CREATE USER 'root'@'%' IDENTIFIED BY 'root';
GRANT all privileges on *.* TO 'root'@'%';
FLUSH PRIVILEGES;
SHOW GRANTS FOR 'root'@'%';

vim /etc/mysql/mariadb.conf.d/50-server.cnf

mkdir /a/2 -p
vi /a/2/ss.sh
#!/bin/bash
service mariadb restart
/bin/bash

chmod 777 /a/2/ss.sh

退出docker
关闭
docker stop mariadb-test 

docker commit mariadb-test mariadb-arm7:240715v01
docker run -itd \
--name mariadb-arm7 \
-p 3306:3306 \
mariadb-arm7:240715v01 \
/a/2/ss.sh


到此数据库上面就安装完成了


下面是php-fpm的安装
23:30 2024/4/30
docker run -itd --name=ss ubuntu /bin/bash
进入容器
docker exec -it ss /bin/bash
root@76a72d3c7b08:/# 
更新

apt-get update
apt-get install net-tools
apt install wget
apt install gcc
apt install make
apt install openssl
apt install curl
apt install libbz2-dev
apt install libxml2-dev
apt install libjpeg-dev
apt install libpng-dev
apt install libfreetype6-dev
apt install libzip-dev
apt install libssl-dev
apt install autoconf
apt install m4
apt install libtool

建立临时目录

root@76a72d3c7b08:/# mkdir /a/2 -p

进入临时目录

root@76a72d3c7b08:/# cd /a/2         
root@76a72d3c7b08:/a/2#

查看当前目录使用

pwd

下载php

PHP: Downloads https://www.php.net/downloads.php#v7.3.11
https://www.php.net/distributions/php-8.3.8.tar.gz
root@76a72d3c7b08:/a/2# wget https://www.php.net/distributions/php-7.3.11.tar.gz
--2019-11-17 07:11:43--  https://www.php.net/distributions/php-7.3.11.tar.gz
Resolving www.php.net (www.php.net)... 185.85.0.29, 2a02:cb40:200::1ad
Connecting to www.php.net (www.php.net)|185.85.0.29|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [application/x-gzip]
Saving to: 'php-7.3.11.tar.gz'

php-7.3.11.tar.gz                                                       [            <=>                                                                                                                                                   ]  18.70M  6.42MB/s    in 2.9s    

2019-11-17 07:11:48 (6.42 MB/s) - 'php-7.3.11.tar.gz' saved [19606654]

root@76a72d3c7b08:/a/2#

安装完上面的然后

解压缩

root@76a72d3c7b08:/a/2# tar -xzvf php-7.3.11.tar.gz

然后进入php源文件的根目录

root@76a72d3c7b08:/a/2# cd php-7.3.11
root@76a72d3c7b08:/a/2/php-7.3.11#

然后

我这里就演示myslqi的基础的功能,其他的扩展可以后期单独添加,很方便

./configure \
--prefix=/usr/local/php_8_3_9 \
--with-config-file-path=/usr/local/php_8_3_9/etc \
--with-config-file-scan-dir=/usr/local/php_8_3_9/etc/php.d \
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
--with-mysqli \
--with-pdo-mysql 

问题
make: *** No targets specified and no makefile found.  Stop.
gcc build-essential


使用编译命令

ubuntu21.10:编译安装php8.1.1 - 刘宏缔的架构森林 - 博客园  https://www.cnblogs.com/architectforest/p/15714248.html
checking for libxml-2.0 >= 2.9.0... no
The pkg-config script could not be found or is too old.
apt-get install pkg-config

Package requirements (sqlite3 >= 3.7.7)
apt-get install libsqlite3-dev


bmagic/apprentice.lo
cc: fatal error: Killed signal terminated program cc1
make: *** [Makefile:956: ext/fileinfo/libmagic/apprentice.lo] Error 1

make -j4

make install


cp php.ini-production /usr/local/php_8_3_9/etc/php.ini
cp sapi/fpm/php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm

然后设置

cd /usr/local/php_8_3_9/etc

cp php-fpm.conf.default php-fpm.conf

cd /usr/local/php_8_3_9/etc/php-fpm.d

cp www.conf.default www.conf

user = www
group = www

如果www用户不存在,那么先添加www用户
groupadd www
useradd -g www www

apt-get install vim
vim /usr/local/php_8_3_9/etc/php-fpm.d/www.conf
找到
listen = 127.0.0.1:9000
替换成
listen = 0.0.0.0:9000
然后保存退出

设置默认启动php-fpm子进程数和最大启动数
vim /usr/local/php_8_3_9/etc/php-fpm.d/www.conf
pm.max_children = 200
pm.start_servers = 20
pm.min_spare_servers = 10
pm.max_spare_servers = 30


vim /etc/profile
# 最后一行加入
export PATH=/usr/local/php_8_3_9/bin:$PATH
# end
source /etc/profile

查看是否安装成功

/usr/local/php_8_3_9/bin/php -v

启动php-fpm

 /usr/local/php_8_3_9/sbin/php-fpm

root@55444548c025:/# /usr/local/php_8_3_9/sbin/php-fpm
root@55444548c025:/# netstat -ant
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:9000            0.0.0.0:*               LISTEN  

启动完成,然后写一个自启动脚本,然后让他日后自己启动php-fpm

启动脚本就一行!很简单

root@55444548c025:/# vim /a/2/auto_start.sh

root@91558b61647e:/a/2# cat auto_start.sh 
#!/bin/sh
/usr/local/php_8_3_9/sbin/php-fpm
/bin/bash


上面的就是内容和文件名称

然后给文件执行权限

我这里直接给了个777


root@55444548c025:/# chmod 777 /a/2/auto_start.sh

这里给权限后面开始把这个文件做成镜像

这里解释一下为什么要把我们的 容器 ubuntu-test 做成镜像

做成镜像自定义成自己要的版本和tag,然后根据这个版本和tag

利用 Dockerfile 可以打包成调用上面自定义里面的那个可以执行的启动脚本,可以自动启动我们的php-fpm

不知道说的清不清楚,不清楚留言后面补充

我们开始把我们辛苦编译好的php-fpm环境 和一个执行脚本 /a/2/auto_start.sh

打包成一个镜像,打包好之后他不不会自动,但是有我们的启动文件,所以利用 Dockerfile 可以打包成调用上面自定义里面的那个可以执行的启动脚本,可以自动启动我们的php-fpm

先停止容器
arm7
docker stop ss
docker commit ss php_8_3_9_fpm:240715v01

root@ccyy-virtual-machine:~# docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
php_8_3_6_fpm   v01       08384275b022   59 seconds ago   1.35GB
 

好像比较大,不过功能有了不不差这点空间

里面有我们的php-fpm 和一个启动脚本,都是没被调用,不会自己启动

!!!okok
docker run --name  php_8_3_9_fpm \
-p 9000:9000 \
--link mariadb-arm7:db \
-v /a/nginx/www:/usr/share/nginx/html \
-itd php_8_3_9_fpm:240715v01 \
/a/2/auto_start.sh


[注释]-v /a/nginx/www:/usr/share/nginx/html:ro \  这个非常重要

进入容器查看是否启动端口9000

root@ccyy-virtual-machine:~# docker exec -it my_php73-fpm /bin/bash
root@db3e15b16e56:/# netstat -ant
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:9000   

是的上面已经自动启动了!!!

实现了php-fpm的自动启动

记得容器还要设置跟随系统启动

root@ccyy-virtual-machine:~# docker update --restart=always my_php73-fpm
my_php73-fpm
root@ccyy-virtual-machine:~# 

上面这一步做完,系统启动  容器 my_php73-fpm 就会启动了


arm7docker安装nginx
docker run -itd -p 80:80 --name=ss do.nark.eu.org/library/ubuntu /bin/bash
进入容器
docker exec -it ss /bin/bash
root@76a72d3c7b08:/# 
apt update
apt install nginx
service nginx start
apt install net-tools
root@179d54d8514b:/# netstat -ant
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     
tcp        0      0 172.17.0.4:53258        185.125.190.39:80       TIME_WAIT  
tcp6       0      0 :::80                   :::*                    LISTEN 

创建自动启动脚本
mkdir /a/2 -p
root@179d54d8514b:/# apt install vim
vi /a/2/ss.sh
#!/bin/bash
service nginx start
/bin/bash

chmod 777 /a/2/ss.sh


退出docker
exit

root@pi:/etc# docker commit ss nginx_arm7:240715v01

在主机新建配置文件
mkdir /a/nginx/conf/conf.d -p

 
#docker pull nginx


创建www的目录和配置文件

root@1e761490aa6e:/# find / -name "index.*"
/var/www/html/index.nginx-debian.html

一开始找不到nginx的配置文件,无法对php无法支持,这里卡了几个小时!!!!。
更改/etc/nginx/sites-available下的default
第一处
root /usr/share/nginx/html ;
autoindex on;  # 开启目录列表

第二处
        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
        
                # With php-fpm (or other unix sockets):
        #       fastcgi_pass unix:/run/php/php7.4-fpm.sock;
                # With php-cgi (or other tcp sockets):
                fastcgi_pass php:9000;
        }

第三处 新增一个index.php默认主页
 index index.html index.htm index.nginx-debian.html index.php;


ps aux | grep nginx


问题
docker: Error response from daemon: error while creating mount source path
解决方法
映射到用户目录下
okokok!!!!
docker run --name nginx_arm7 -p 80:80 -itd \
    -v /a/nginx/www:/usr/share/nginx/html \
    --link php_8_3_9_fpm:php \
    nginx_arm7:240715v02 \
    /a/2/ss.sh


调试
root@pi:/a/nginx/conf# docker exec -it nginx_arm7 /bin/bash


cd /a/nginx/www

wget https://files.phpmyadmin.net/phpMyAdmin/5.0.0-alpha1/phpMyAdmin-5.0.0-alpha1-all-languages.zip

unzip phpMyAdmin-5.0.0-alpha1-all-languages.zip

mv phpMyAdmin-5.0.0-alpha1-all-languages phpmyadmin

然后通过主机    ip:端口/phpmyadmin

就可以正常访问了
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/cyuyan112233/article/details/103110865


-----------------------------------------------------
【超详细】Docker 配置 nginx、php-fpm、mysql 、phpmyadmin_docker php-fpm-CSDN博客  https://blog.csdn.net/nexttrial/article/details/119458277

docker run --name php-fpm -v ~/nginx/www:/www -d php:7.4-fpm

docker run --name my_nginx -p 8083:80 -d \
    -v ~/nginx/www:/usr/share/nginx/html:ro \
    -v ~/nginx/conf.d:/etc/nginx/conf.d:ro \
    --link php-fpm:php \
    nginx


在~/nginx/conf.d目录下添加 myweb.conf, 内容如下

server {
    listen       80;
    server_name  localhost;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm index.php;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location ~ \.php$ {
        fastcgi_pass   php-fpm:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /www/$fastcgi_script_name;
        include        fastcgi_params;
    }
}

在 ~/nginx/www/下新建index.php,内容如下
<?php
phpinfo();
?>

docker run -p 3306:3306 --name mysql -v ~/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d --link php-fpm mysql


docker run --name myadmin -d --link mysql:db -p 8082:80 phpmyadmin/phpmyadmin

测试php是否能连接数据库
首先进入php容器中,打开pdo_mysql扩展
docker-php-ext-install pdo_mysql

然后建立脚本,连接数据库:
<?php
$pdo = new PDO("mysql:host=你服务器的地址;port=3306;dbname=test", 'root', '123456');
$sql = 'select * from people';
$res = $pdo->query($sql);
while(($row = $res->fetch(PDO::FETCH_ASSOC)) !== false) {
    var_dump($row);
}
?>


-----------------------------------------------------------------------------------
编译openssl扩展so文件
cd /tar/php-8.0.28/ext/openssl
/usr/local/php8.0.28/bin/phpize
报没有config.m4文件的错误,我们修改目录中的config.0.m4文件为config.m4文件,解决问题。
./configure  --with-openssl --with-php-config=/usr/local/php8.0.28/bin/php-config
make
make install
php.ini最后加入zip扩展配置
extension=openssl.so
重启php-fpm,kill掉,在./php-fpm运行。
systemctl restart php-fpm
php -m


--------------------------------------------------------------------
1.进入php源码包中,找到需要安装的扩展模块目录。
cd /root/php-5.6.26/ext/mbstring
2.在扩展模块目录,运行phpize程序。
/usr/local/bin/phpize
3.进行编译安装。
./configure --with-php-config=/usr/local/php_8_3_6/bin/php-config
make
make install
checking for oniguruma... no
apt install libonig-dev
vi /usr/local/php_8_3_6/etc/php.d/mbstring.ini
extension=/usr/local/php_8_3_6/lib/php/extensions/no-debug-non-zts-20230831/mbstring.so
systemctl restart php-fpm
php -m

-----------------------------------------------------------------------
/usr/local/php_8_3_6/bin/phpize
/usr/local/php_8_3_6/bin/php-config


docker save -o ubuntu.tar ubuntu:latest
docker save -o nginx.tar nginx:latest
docker save -o phpmyadmin.tar phpmyadmin
docker save -o mariadb.tar mariadb

docker save -o php_8_3_6_fpm.tar php_8_3_6_fpm:v04
docker save -o my_nginx_php.tar my_nginx_php:v04
docker save -o phpmyadmin-5080.tar phpmyadmin-5080:v04
docker save -o mariadb-test.tar mariadb-test

-u $(id -u)
Discuz! 提示
您的服务器不支持 Zlib,这将会导致应用无法安装。请联系您的服务商或者网站技术人员。
安装php zlib
/a/2/php-8.3.6/ext/zlib 
/usr/local/php_8_3_6/bin/phpize

2.在扩展模块目录,运行phpize程序。
/usr/local/php_8_3_6/bin/phpize
3.进行编译安装。
./configure --with-php-config=/usr/local/php_8_3_6/bin/php-config
make
make install

wget http://pecl.php.net/get/zip
tar -zxvf zip
然后目录下就会有config.m4
/a/2/zip_dir/zip-1.22.3/config.m4
Installing shared extensions:     /usr/local/php_8_3_6/lib/php/extensions/no-debug-non-zts-20230831/
vi /usr/local/php_8_3_6/etc/php.d/zlib.ini
extension=/usr/local/php_8_3_6/lib/php/extensions/no-debug-non-zts-20230831/zip.so
systemctl restart php-fpm
php -m


Discuz! 提示
您的服务器不支持 CURL,这将会导致应用无法安装。请联系您的服务商或者网站技术人员。
docker exec -it php_8_3_6_fpm /bin/bash
root@aa9bf135acb4:/# cd /a/2/php-8.3.6/ext/curl/
2.在扩展模块目录,运行phpize程序。
/usr/local/php_8_3_6/bin/phpize
3.进行编译安装。
./configure --with-php-config=/usr/local/php_8_3_6/bin/php-config
make
make install
root@aa9bf135acb4:/a/2/php-8.3.6/ext/curl# make install
Installing shared extensions:     /usr/local/php_8_3_6/lib/php/extensions/no-debug-non-zts-20230831/
Installing header files:          /usr/local/php_8_3_6/include/php/
root@aa9bf135acb4:/a/2/php-8.3.6/ext/curl# ls /usr/local/php_8_3_6/lib/php/extensions/no-debug-non-zts-20230831/
curl.so  mbstring.so  opcache.so  zip.so  zlib.so
root@aa9bf135acb4:/a/2/php-8.3.6/ext/curl# 
vi /usr/local/php_8_3_6/etc/php.d/curl.ini
extension=/usr/local/php_8_3_6/lib/php/extensions/no-debug-non-zts-20230831/curl.so
exit
docker restart php_8_3_6_fpm

20:28 2024/6/26
您当前系统环境内未安装或开启 GD 模块,程序无法按预期正常运行。我们强烈建议您安装或开启此模块,以满足程序正常运行的最低要求
docker exec -it php_8_3_6_fpm /bin/bash
root@aa9bf135acb4:/# cd /a/2/php-8.3.6/ext/gd/
2.在扩展模块目录,运行phpize程序。
/usr/local/php_8_3_6/bin/phpize
3.进行编译安装。
./configure --with-php-config=/usr/local/php_8_3_6/bin/php-config
make
make install
root@aa9bf135acb4:/a/2/php-8.3.6/ext/curl# make install
Installing shared extensions:     /usr/local/php_8_3_6/lib/php/extensions/no-debug-non-zts-20230831/
Installing header files:          /usr/local/php_8_3_6/include/php/
root@aa9bf135acb4:/a/2/php-8.3.6/ext/curl# ls /usr/local/php_8_3_6/lib/php/extensions/no-debug-non-zts-20230831/
curl.so  mbstring.so  opcache.so  zip.so  zlib.so
root@aa9bf135acb4:/a/2/php-8.3.6/ext/curl# 
vi /usr/local/php_8_3_6/etc/php.d/gd.ini
extension=/usr/local/php_8_3_6/lib/php/extensions/no-debug-non-zts-20230831/gd.so
exit
docker restart php_8_3_6_fpm


最后安装php的扩展
20:28 2024/6/26
您当前系统环境内未安装或开启 GD 模块,程序无法按预期正常运行。我们强烈建议您安装或开启此模块,以满足程序正常运行的最低要求
docker exec -it php_8_3_6_fpm /bin/bash
root@aa9bf135acb4:/# cd /a/2/php-8.3.9/ext/gd/
2.在扩展模块目录,运行phpize程序。
/usr/local/php_8_3_9/bin/phpize
3.进行编译安装。
./configure --with-php-config=/usr/local/php_8_3_9/bin/php-config
make
make install
root@aa9bf135acb4:/a/2/php-8.3.6/ext/curl# make install
Installing shared extensions:     /usr/local/php_8_3_6/lib/php/extensions/no-debug-non-zts-20230831/
Installing header files:          /usr/local/php_8_3_6/include/php/
root@aa9bf135acb4:/a/2/php-8.3.6/ext/curl# ls /usr/local/php_8_3_6/lib/php/extensions/no-debug-non-zts-20230831/
curl.so  mbstring.so  opcache.so  zip.so  zlib.so
root@aa9bf135acb4:/a/2/php-8.3.6/ext/curl# 
vi /usr/local/php_8_3_9/etc/php.d/gd.ini
extension=/usr/local/php_8_3_9/lib/php/extensions/no-debug-non-zts-20230831/gd.so
exit
docker restart php_8_3_6_fpm


curl
checking for libcurl >= 7.29.0... no
sudo apt-get update
sudo apt-get install libcurl4-openssl-dev


mbstring
configure: error: Package requirements (oniguruma) were not met:
configure: error: Package requirements (oniguruma) were not met:
configure: error: Package requirements (oniguruma) were not met:
sudo apt-get update
sudo apt-get install libonig-dev


zip

zlib

session

xsl
checking for libxslt >= 1.1.0... no
apt-get install libxslt1-dev

ls /usr/local/php_8_3_9/lib/php/extensions/no-debug-non-zts-20230831/
curl.so  gd.so  mbstring.so  opcache.so  session.so  xsl.so  zip.so  zlib.so

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值