Linux installation configuration nginx+php build and configure in docker

Linux installation configuration nginx+php build and configure in docker

1.nginx source code package compilation environment and installation of corresponding dependencies

1.1 Install the compilation environment
#安装编译环境
[root@localhost /]# yum install -y gcc gcc-c++
1.2 Install the pcre library, zlib library and openssl library
  • pcre (Perl Compatible Regular Expressions) is a Perl library, a regular expression function library written in C language, and a lightweight function library. The http module of nginx uses pcre to parse regular expressions, so you need to install the pcre library on Linux

  • zlib is a set of general decompression open source libraries that provides in-memory compression and decompression functions and can detect the integrity of decompressed data. nginx uses zlib to gzip the contents of the http package, so the zlib library needs to be installed on Linux.

  • openssl, or open secure sockets layer, is an open source secure sockets layer cryptographic library. Including commonly used password encryption and decryption algorithms, commonly used key algorithms, certificate management and SSL protocols. nginx not only supports the http protocol, but also supports https (that is, transmitting http over the ssl protocol), so you need to install the openssl library on Linux.

#安装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.Install nginx

2.1 Obtain the source code package from the nginx official website and download it

Insert image description here

[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 Decompress and compile
#解压源码包
[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. Start nginx service

3.1 Run nginx

Enter the directory /usr/local/sbin and execute the ./nginx command

[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 Turn off the firewall

Turn off the firewall to prevent local host access from being blocked

[root@localhost sbin]# systemctl stop firewalld.service
[root@localhost sbin]# systemctl status firewalld.service
3.3 Use a local browser to serve the virtual machine address

The welcome to nginx page appears, indicating that the nginx installation is complete.

Insert image description here

4. Modify the nginx configuration file to create a new port page

cd to the path /usr/local/nginx/html and create a new file with the suffix .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 to the directory /usr/local/nginx/conf, modify the configuration file, and add the following configuration

[root@localhost conf]# vim nginx.conf
    server {
    
    
        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

Use a local browser to access port 8080 to view the new page

Insert image description here

5.Install php

5.1 Use yum to install 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 Manager
   Loaded: 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 Modify the php configuration file
#定位到php-fpm的文件下
[root@localhost /]# cd /etc/php-fpm.d/

#修改www.conf文件内容
[root@localhost php-fpm.d]# vim www.conf

Comment out the listen = /run/php-fpm/www.sock section in the www.conf file and add listen = 127.0.0.1:9000

Insert image description here

5.3 Modify nginx configuration file
#定位到nginx/conf文件下
[root@localhost nginx]# cd /usr/local/nginx/conf/

#修改nginx.conf文件内容
[root@localhost conf]# vim nginx.conf

Uncomment the servermissing location ~ \.php$content

Insert image description here

Change the content after the uncommented location ~ \.php$content tofastcgi_param SCRIPT_FILENAME/scripts$fastcgi_script_name$document_root$fastcgi_script_name

Insert image description here

Add the file name after serverthe first paragraph location /of content (used to locate the php page file that will be created later)indexweb.php

Insert image description here

5.4 Create php page files and view tests
#定位到nginx/html文件下
[root@localhost nginx]# cd /usr/local/nginx/html/

#创建web.php页面文件
[root@localhost html]# vim web.php
<?php
phpinfo();
?>

After all files are configured, you need to restart the php-fpm service and nginx

#重启php-fpm服务
[root@localhost html]# systemctl restart php-fpm
[root@localhost html]# systemctl status php-fpm
● php-fpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; disabled; vendor preset:>   Active: active (running) since Tue 2023-08-08 15:02:04 CST; 7s ago
 Main 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

Access the web.php page in your local browser

Insert image description here

Note: If the access is unsuccessful, you can check whether the firewall is turned off.

6.Install docker

6.1 Check the operating system release version and clear the old installed docker version

Docker requires centos kernel version to be higher than 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 Configuration before installing 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 Installing and starting docker
[root@localhost /]# yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Usually an error is reported

Insert image description here

Solution:

#运行以下内容
[root@localhost /]# yum erase podman buildah

#重新进行安装
[root@localhost /]# yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Start docker

[root@localhost /]# systemctl start docker
[root@localhost /]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset>   Active: active (running) since Wed 2023-08-09 00:51:52 CST; 9s ago

Run hello-world to test

[root@localhost /]# docker run hello-world

Insert image description here

7. Pull the nginx image and mounting configuration on docker

7.1 Pull nginx image
[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 Create an nginx service and mount the local nginx configuration file
#创建运行一个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 Check the mapping of the corresponding 9090 port

Insert image description here

8. Configure php service in docker environment

8.1 Pull the php-fpm image
[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 Create container
#创建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 Create the conf.d directory and configure the .conf file
[root@localhost /]# mkdir -p /docker/nginx/conf/conf.d

[root@localhost conf.d]# vim myphp.conf

Write the following content in the configuration file

Insert image description here

8.4 Create nginx container
#创建一个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 Testing

/docker/nginx/www/myphp/Create a .php file under the path

[root@localhost conf.d]# cd /docker/nginx/www/myphp/
[root@localhost myphp]# vim index.php
<?php
phpinfo();
?>

Use the local browser to test port 8088 to access the PHP home page.

Insert image description here

Guess you like

Origin blog.csdn.net/qq_44829421/article/details/132179531