Linux安装配置nginx+php搭建以及在docker中配置
文章目录
- Linux安装配置nginx+php搭建以及在docker中配置
- 1.nginx源码包编译环境和安装相应的依赖
- 1.1 安装编译环境
- 1.2 安装pcre库、zlib库和openssl库
- 2.安装nginx
- 2.1 在[nginx官网](https://nginx.org/en/download.html)上获取源码包并进行下载
- 2.2 进行解压编译
- 3.启动nginx服务
- 3.1 运行nginx
- 3.2 关闭防火墙
- 3.3 用本地浏览器服务虚拟机地址
- 4.修改nginx配置文件创建新的端口页面
- 5.安装php
- 5.1 使用yum安装php-fpm
- 5.2 修改php的配置文件
- 5.3 修改nginx的配置文件
- 5.4 创建php页面文件并查看测试
- 6.安装docker
- 6.1 查看操作系统发行版本与清空已安装的docker旧版本
- 6.2 安装docker前配置
- 6.3 安装docker与启动
- 7.在docker上拉取nginx镜像以及挂载配置
- 7.1 拉取nginx镜像
- 7.2 创建一个nginx服务以及挂载本地的nginx配置文件
- 7.3 查看对应的9090端口的映射情况
- 8.docker环境下配置php服务
- 8.1 拉取php-fpm镜像
- 8.2 创建容器
- 8.3 创建conf.d目录并配置.conf文件
- 8.4 创建nginx容器
- 8.5 测试
1.nginx源码包编译环境和安装相应的依赖
1.1 安装编译环境
#安装编译环境
[root@localhost /]# yum install -y gcc gcc-c++
1.2 安装pcre库、zlib库和openssl库
-
pcre(Perl Compatible Regular Expressions)是一个Perl库,是一个用C语言编写的正则表达式的函数库,是轻量级的函数库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库
-
zlib是一套通用的解压缩开源库,提供了内存(in-memory)压缩和解压函数,能检测解压出来的数据完整性。nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。
-
openssl,即open secure sockets layer,是一个开源的安全套接字层的密码库。包括常用的密码加解密算法、常用的密钥算法、证书管理和SSL协议。nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。
#安装pcre库
[root@localhost /]# yum install -y pcre pcre-devel#安装zlib库
[root@localhost /]# yum install -y zlib zlib-devel#安装openssl库
[root@localhost /]# yum install -y openssl-devel
2.安装nginx
2.1 在nginx官网上获取源码包并进行下载
[root@localhost /]# mkdir nginxfile
[root@localhost /]# cd nginxfile/#下载nginx源码包
[root@localhost nginxfile]# wget https://nginx.org/download/nginx-1.24.0.tar.gz
2.2 进行解压编译
#解压源码包
[root@localhost nginxfile]# tar -zxvf nginx-1.24.0.tar.gz#编译配置
[root@localhost nginxfile]# cd nginx-1.24.0/
[root@localhost nginx-1.24.0]# ./configure --with-http_ssl_module
[root@localhost nginx-1.24.0]# ./configure --with-stream
[root@localhost nginx-1.24.0]# ./configure#执行安装
[root@localhost nginx-1.24.0]# make && make install
3.启动nginx服务
3.1 运行nginx
进入到/usr/local/sbin的目录下执行./nginx命令
[root@localhost nginx-1.24.0]# cd /usr/local/nginx/sbin/
[root@localhost sbin]# ls
nginx#执行nginx
[root@localhost sbin]# ./nginx #查看nginx的进程开启情况
[root@localhost sbin]# ps -aux | grep nginx
root 72876 0.0 0.0 34444 384 ? Ss 21:27 0:00 nginx: master process ./nginx
nobody 72877 0.0 0.2 66624 3932 ? S 21:27 0:00 nginx: worker process
root 72887 0.0 0.0 12136 1120 pts/2 R+ 21:28 0:00 grep --color=auto nginx
3.2 关闭防火墙
关闭防火墙防止本地主机访问时被拦截
[root@localhost sbin]# systemctl stop firewalld.service
[root@localhost sbin]# systemctl status firewalld.service
3.3 用本地浏览器服务虚拟机地址
出现welcome to nginx页面代表nginx安装启动完成
4.修改nginx配置文件创建新的端口页面
cd到/usr/local/nginx/html的路径下,创建一个新的后缀为.html的文件
[root@localhost html]# touch web.html#在文件中编写新的网页
[root@localhost html]# vim web.html
<!DOCTYPE html>
<html>
<head>
<title>Hello World</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Hello world</h1>
</body>
</html>
cd到/usr/local/nginx/conf的目录下,修改配置文件,添加以下配置
[root@localhost conf]# vim nginx.confserver {listen 8080; #浏览器访问虚拟机的8080端口时显示该页面server_name localhost;#charset koi8-r;#access_log logs/host.access.log main;location / { root html;index web.html index.htm; #访问8080端口时定位到web.html文件}#error_page 404 /404.html;# redirect server error pages to the static page /50x.html#error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}#停止nginx服务
[root@localhost sbin]# cd /usr/local/nginx/sbin/
[root@localhost sbin]# ./nginx -s stop#重新启动nginx服务
[root@localhost sbin]# ./nginx
使用本地浏览器访问8080端口查看新建页面
5.安装php
5.1 使用yum安装php-fpm
#因为源码安装的方式会需要搭载很多的依赖包,安装编译过程也比较的繁琐,所以这里采用yum源安装途径,yum仓库安装的方法比源码包安装更加的简洁快速
[root@localhost /]# yum -y install php-fpm #启动php-fpm服务
[root@localhost /]# systemctl start php-fpm
[root@localhost /]# systemctl status php-fpm
● php-fpm.service - The PHP FastCGI Process ManagerLoaded: loaded (/usr/lib/systemd/system/php-fpm.service; disabled; vendor preset:> Active: active (running) since Tue 2023-08-08 14:29:59 CST; 22s ago
5.2 修改php的配置文件
#定位到php-fpm的文件下
[root@localhost /]# cd /etc/php-fpm.d/#修改www.conf文件内容
[root@localhost php-fpm.d]# vim www.conf
在www.conf文件下注释掉listen = /run/php-fpm/www.sock这段内容,添加listen = 127.0.0.1:9000
5.3 修改nginx的配置文件
#定位到nginx/conf文件下
[root@localhost nginx]# cd /usr/local/nginx/conf/#修改nginx.conf文件内容
[root@localhost conf]# vim nginx.conf
取消掉server
中location ~ \.php$
内容中的注释
将刚刚取消注释的location ~ \.php$
的fastcgi_param SCRIPT_FILENAME
内容后面的/scripts$fastcgi_script_name
修改为$document_root$fastcgi_script_name
在server
的第一段location /
内容下的index
后面添加web.php
文件名(用于定位到后面即将创建的php页面文件)
5.4 创建php页面文件并查看测试
#定位到nginx/html文件下
[root@localhost nginx]# cd /usr/local/nginx/html/#创建web.php页面文件
[root@localhost html]# vim web.php
<?php
phpinfo();
?>
所有的文件配置完毕后需要重启php-fpm服务和nginx
#重启php-fpm服务
[root@localhost html]# systemctl restart php-fpm
[root@localhost html]# systemctl status php-fpm
● php-fpm.service - The PHP FastCGI Process ManagerLoaded: loaded (/usr/lib/systemd/system/php-fpm.service; disabled; vendor preset:> Active: active (running) since Tue 2023-08-08 15:02:04 CST; 7s agoMain PID: 76438 (php-fpm)#重启nginx
#定位到nginx/sbin文件路径下
[root@localhost html]# cd /usr/local/nginx/sbin/#停止nginx
[root@localhost sbin]# ./nginx -s stop
#重新启动nginx
[root@localhost sbin]# ./nginx#查看开启情况
[root@localhost sbin]# ps -aux | grep nginx
root 76473 0.0 0.0 34444 440 ? Ss 15:03 0:00 nginx: master process ./nginx
nobody 76474 0.0 0.2 66564 4172 ? S 15:03 0:00 nginx: worker process
root 76503 0.0 0.0 12136 1192 pts/1 R+ 15:04 0:00 grep --color=auto nginx
在本地浏览器访问web.php页面
注意:如果访问不成功可以检查一下防火墙是否关闭
6.安装docker
6.1 查看操作系统发行版本与清空已安装的docker旧版本
docker要求centos的内核版本高于3.10
[root@localhost /]# uname -r
4.18.0-348.el8.x86_64#卸载旧的docker版本
[root@localhost /]# yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine
6.2 安装docker前配置
#安装yum-utils
[root@localhost /]# yum install -y yum-utils#添加阿里云仓库
[root@localhost /]# yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo#安装makecache
[root@localhost /]# yum makecache
6.3 安装docker与启动
[root@localhost /]# yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
一般都会报错
解决方法:
#运行以下内容
[root@localhost /]# yum erase podman buildah#重新进行安装
[root@localhost /]# yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
启动docker
[root@localhost /]# systemctl start docker
[root@localhost /]# systemctl status docker
● docker.service - Docker Application Container EngineLoaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset> Active: active (running) since Wed 2023-08-09 00:51:52 CST; 9s ago
运行hello-world进行测试
[root@localhost /]# docker run hello-world
7.在docker上拉取nginx镜像以及挂载配置
7.1 拉取nginx镜像
[root@localhost /]# docker pull nginx#查看本地镜像
[root@localhost /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 89da1fb6dcb9 11 days ago 187MB
hello-world latest 9c7a54a9a43c 3 months ago 13.3kB
7.2 创建一个nginx服务以及挂载本地的nginx配置文件
#创建运行一个nginx容器同时挂载本地文件
[root@localhost ~]# docker run --name nginx-test -p 9090:80 -d -v /usr/local/nginx/conf:/usr/share/nginx/conf -v /usr/local/nginx/html:/usr/share/nginx/html -v /etc/nginx/conf.d:/usr/share/nginx/conf.d nginx
38e38f4ea4534594b8b8cdcebee6bee843debbf8a18c82904ea5ac7f63efc283[root@localhost conf]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
38e38f4ea453 nginx "/docker-entrypoint.…" 4 minutes ago Up 4 minutes 0.0.0.0:9090->80/tcp, :::9090->80/tcp nginx-test
7.3 查看对应的9090端口的映射情况
8.docker环境下配置php服务
8.1 拉取php-fpm镜像
[root@localhost /]# docker pull php:7.2-fpm#查看本地镜像
[root@localhost /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 89da1fb6dcb9 11 days ago 187MB
hello-world latest 9c7a54a9a43c 3 months ago 13.3kB
php 7.2-fpm 28f52b60203d 2 years ago 398MB
8.2 创建容器
#创建php文件挂载目录
[root@localhost /]# mkdir -p /docker/nginx/www/myphp#创建容器
[root@localhost /]# docker run --name myphp -v /docker/nginx/www/myphp:/www/myphp -d php:7.2-fpm
dcfdfe9436d080c87d66305104df09a13e4335f6c3532fcd461982b22bf8c090[root@localhost /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dcfdfe9436d0 php:7.2-fpm "docker-php-entrypoi…" 37 seconds ago Up 36 seconds 9000/tcp myphp
8.3 创建conf.d目录并配置.conf文件
[root@localhost /]# mkdir -p /docker/nginx/conf/conf.d[root@localhost conf.d]# vim myphp.conf
在配置文件中写上以下内容
8.4 创建nginx容器
#创建一个nginx容器
[root@localhost conf.d]# docker run --name nginx1 -p 8088:80 -d \
> -v /docker/nginx/www:/usr/share/nginx/html \
> -v /docker/nginx/conf/conf.d:/etc/nginx/conf.d \
> --link myphp:php nginx
f761985089f1ed5abd61625ac84b90298a7f53f9c1c2013533afce05df135cc4[root@localhost conf.d]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f761985089f1 nginx "/docker-entrypoint.…" 5 minutes ago Up 5 minutes 0.0.0.0:8088->80/tcp, :::8088->80/tcp nginx1
dcfdfe9436d0 php:7.2-fpm "docker-php-entrypoi…" 13 minutes ago Up 13 minutes 9000/tcp myphp
8.5 测试
在/docker/nginx/www/myphp/
路径下创建.php文件
[root@localhost conf.d]# cd /docker/nginx/www/myphp/
[root@localhost myphp]# vim index.php
<?php
phpinfo();
?>
本地浏览器进行测试8088端口访问php主页