local ContOS7 build php dev envs
本文最后更新于:星期日, 二月 20日 2022, 3:44 下午
ContOS7 php
多环境的配置
使用最小化安装之后的第一个问题,内外网不通
vi /etc/sysconfig/network-scripts/ifcfg-ens33
- 修改
ONBOOT=yes
后systemctl restart network.service
- 重启主机,如果此时内外网通了但是
yum list
失败,主要是服务不可达,考虑为DNS
的原因 - 修改
vi /etc/resolv.conf
修改dns
为nameserver 8.8.8.8
1
2
3
4
5
6
7
8yum update # 成功
yum install wget -y # 装一个下载工具
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup # 备份
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo # 添加阿里源
yum clean all # 清除缓存
yum makecache # 生成缓存
yum update -y # 更新
一些准备工作
yum install vim -y && yum install net-tools -y
习惯了vim
加上一个网络分析小工具yum install gcc gcc-c++ httpd-tools autoconf pcre pcre-devel make automake -y
安装一些编译测试工具systemctl stop firewalld.service && systemctl disable firewalld.service
关闭并禁用 防火墙vim /etc/selinux/config
- 修改
SELINUX=disabled
千万不要改错位置 - 下面的
selinuxtype
要是改成disable
建议删了重装会快一些 - 不然
selinux
可能会导致你的网络端口不可访问
安装 nginx
vim /etc/yum.repos.d/nginx.repo
创建yum
源文件根据官方提示修改为
1
2
3
4
5[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1yum list|grep nginx
能够看到nginx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16[root@localhost ~]# yum list|grep nginx
nginx.x86_64 1:1.16.0-1.el7.ngx nginx
nginx-debug.x86_64 1:1.8.0-1.el7.ngx nginx
nginx-debuginfo.x86_64 1:1.16.0-1.el7.ngx nginx
nginx-module-geoip.x86_64 1:1.16.0-1.el7.ngx nginx
nginx-module-geoip-debuginfo.x86_64 1:1.16.0-1.el7.ngx nginx
nginx-module-image-filter.x86_64 1:1.16.0-1.el7.ngx nginx
nginx-module-image-filter-debuginfo.x86_64 1:1.16.0-1.el7.ngx nginx
nginx-module-njs.x86_64 1:1.16.0.0.3.1-1.el7.ngx nginx
nginx-module-njs-debuginfo.x86_64 1:1.16.0.0.3.1-1.el7.ngx nginx
nginx-module-perl.x86_64 1:1.16.0-1.el7.ngx nginx
nginx-module-perl-debuginfo.x86_64 1:1.16.0-1.el7.ngx nginx
nginx-module-xslt.x86_64 1:1.16.0-1.el7.ngx nginx
nginx-module-xslt-debuginfo.x86_64 1:1.16.0-1.el7.ngx nginx
nginx-nr-agent.noarch 2.0.0-12.el7.ngx nginx
pcp-pmda-nginx.x86_64 4.1.0-5.el7_6 updatesyum install nginx -y
安装nginx
systemctl enable nginx
开机自启nginx
systemctl start nginx
启动nginx
然后输入
IP
到浏览器访问成功默认配置位置
/etc/nginx/nginx.conf
/etc/nginx/conf.d/default.conf
安装 PHP
-
1
2yum install epel-release
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm 安装
php
全扩展yum install mod_php72w php72w-bcmath php72w-cli php72w-common php72w-dba php72w-devel php72w-embedded php72w-enchant php72w-fpm php72w-gd php72w-imap php72w-interbase php72w-imap php72w-intl php72w-ldap php72w-mbstring php72w-mysqlnd php72w-odbc php72w-opcache php72w-pdo php72w-pdo_dblib php72w-pear php72w-pecl-apcu php72w-pecl-imagick php72w-pecl-mongodb php72w-pgsql php72w-phpdbg php72w-process php72w-pspell php72w-recode php72w-snmp php72w-soap php72w-sodium php72w-tidy php72w-xml php72w-xmlrpc -y
配置文件位置
/etc/php.ini
php -m
就可以查看装了哪些扩展 嗯 基本都开了systemctl start php-fpm
虽然是一台机器但我们还是用php-fpm
模式,便于后期加入docker
的扩展 也可以使用.sock
的模块加载模式 理论上会快一些systemctl enable php-fpm
开机自启发现一个坑,并没有
redis
扩展 原生进行编译扩展wget http://pecl.php.net/get/redis-4.2.0.tgz
tar zxvf redis-4.2.0.tgz
cd redis-4.2.0
/usr/bin/phpize
(这个根据phpize
实际情况来)./configure --with-php-config=/usr/bin/php-config
(这个根据php-config
实际情况来)make && make install
vim /etc/php.d/redis.ini
这个根据实际情况去决定 是改php.ini
还是别的什么- 写入
extension=redis.so
systemctl restart php-fpm
就ok
了
php
与nginx
链接起来
1 |
|
vim /etc/nginx/conf.d/default.conf
1
2
3
4
5
6
7
8
9
10
11location / {
root /dev/www/php/test;
index index.php index.html index.htm;
}
location ~* \.php$ {
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /dev/www/php/test$fastcgi_script_name;
}nginx -t && nginx -s reload
安装docker
1 |
|
使用docker
构建 php5.4
环境
更换镜像,使用阿里云的镜像加速
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
vim /etc/docker/daemon.json
修改成自己的镜像加速
"registry-mirrors": ["https://xxxxx.mirror.aliyuncs.com"]
systemctl daemon-reload
systemctl restart docker
运行生成一个
php5.4
的容器1
2
3
4docker run -d \
-v /dev/www/php/:/var/www/html \
-p 9001:9000 \
--name phpfpm54 --privileged=true php:5.4-fpm
docker 中 扩展安装
docker exec -ti phpfpm54 /bin/bash
-ti
打开图形界面/bin/bash
执行 这个命令exec
可以在 不exit
的情况下进行附加操作- 进去后需要
apt-get update
里面是debian9
系统 docker-php-ext-install pdo_mysql
来装pdo_mysql
扩展- 以下这些扩展都可以安装 不过好多有坑0.0
1 |
|
docker Debian
换源安装 gd
库
1 |
|
- 装
redis
扩展
1 |
|
退出测试
vim /etc/nginx/conf.d/default.conf
修改
fastcgi_param SCRIPT_FILENAME /var/www/html/test$fastcgi_script_name;
这里由于是在容器内执行所以修改路径为这个
设置
phpstrom
的sftp
自动上传到 本地虚拟机ps aux|grep php
1 |
|
- 如果是在外面也可以:docker exec -it 容器id或名称 kill -USR2 1
- 或者重启容器 docker restart 容器id或名称
安装 swoole
yum install git openssl-devel -y
git clone https://gitee.com/swoole/swoole.git
高版本
cd swoole
git checkout v4.4.6
./configure --enable-openssl --enable-mysqlnd --enable-sockets
make clean && make && sudo make install
cd /etc/php.d/
cp sockets.ini ./swoole.ini
vim swoole.ini 修改为 swoole
systemctl restart php-fpm
低版本
wget https://github.com/redis/hiredis/archive/v0.14.0.zip
yun install -y unzip
unzip v0.14.0.zip
cd hiredis-0.14.0
make -j
1
2
3
4
5
6
7./configure \
--with-php-config=/usr/bin/php-config \
--enable-openssl \
--enable-http2 \
--enable-async-redis \
--enable-sockets \
--enable-mysqlnd && make clean && make && sudo make install1
2
3
4
5cd /etc/php.d/
cp sockets.ini ./swoole.ini
ls
vim swoole.ini 修改为 swoole
systemctl restart php-fpm
1 |
|
docker
安装 mysql
服务
dokcer pull mysql:5.7
mkdir -p /data/mysql/datadir
#用于挂载mysql
数据文件mkdir -p /data/mysql/conf.d
#用于挂载mysql
配置文件
1 |
|
-e
:设置环境变量,此处指定root
密码
docker 构建生产可用 php8.1
1 |
|
构建镜像
docker build -t php81-laravel:v1 .
构建运行时
1 |
|
执行者权限问题
- 在容器内
php-fpm
的运行时分组 为www-data
1 |
|
- 所以其生成的 log 文件也是 属于这个分组下
- 在宿主机上 如果没有 33 的分组与用户, 展示的则为
tape tape
- 如若在宿主机上使用 crontab 势必会导致 log 权限的问题,
- 解决方式 就是保证内外用户uid 的一致 如:
1 |
|
laravel 相关任务
1 |
|
docker
安装 portainer
1 |
|
lnmp 一键安装 脚本,
- 支持到 php8.1 , 测试服用这个省心
https://lnmp.org/
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!