更新升级 专属应用 系统故障 硬件故障 电脑汽车 鸿蒙刷机 鸿蒙开发Linux教程 鸿蒙开发Linux命令
当前位置:HMXT之家 > 鸿蒙开发Linux教程 > 用Apache/Nginx Web服务器在Linux上托管PHP应用程序

用Apache/Nginx Web服务器在Linux上托管PHP应用程序

更新时间:2023-04-04 09:48:33浏览次数:911+次

在以下的指南中,我们将学习如何使用Apache/Nginx Web服务器在Linux上托管PHP应用程序,适用在Debian/Ubuntu/Rhel/Rocky/Alma Linux/CentOS系统上。

具体的操作步骤

1、在Linux系统上安装PHP的说明

第一步是确保PHP安装在您的Linux系统上,可以参考如何在Ubuntu 22.04/20.04系统上安装PHP 8.2版本一文,阅读地址在https://www.hmxthome.com/linux/4986.html。

一旦安装了所需的PHP版本,就可以使用以下命令进行验证:

$ php -v

PHP 8.2.1 (cli) (built: Jan  3 2023 18:40:55) (NTS gcc x86_64)

Copyright (c) The PHP Group

Zend Engine v4.2.1, Copyright (c) Zend Technologies

2、创建PHP应用程序

一旦安装了PHP,您就可以选择任何所需的web服务器来托管您的应用程序。但首先,您需要创建一个PHP应用程序。

对于本指南,我们将在/var/www/html目录中创建应用程序:

sudo mkdir -p  /var/www/html/php

现在,它将作为我们的PHP应用程序的目录。设置路径所需的权限:

sudo chmod -R 775 /var/www/html/php

现在导航到此目录并创建一个示例index.php文件,如下所示:

cd /var/www/html/php

sudo vim index.php

在该文件中,我们将为一个简单的HelloWorld应用程序添加PHP脚本:

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>PHP - Hello, World!</title>

</head>

<body>

        <h1><?php echo 'Hello, World! PHP is Amazing!'; ?></h1>

</body>

</html>

注:在以上这段代码中,看起来像一个普通的HTML文档,唯一的区别是带有“?PHP”,标记之间的代码是我们希望由PHP执行的代码。

如果尝试执行此代码,我们将看到HTML代码,因为终端不知道如何将HTML呈现到web上:

$ php index.php

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>PHP - Hello, World!</title>

</head>

<body>

        <h1>Hello, World! PHP is Amazing!</h1>

</body>

</html>

3、使用Apache/Nginx Web服务器托管PHP应用程序

为了能够在网络上查看应用程序,您需要一个网络服务器。在本指南中,我将演示如何使用Nginx和Apache托管应用程序。

选项1:使用Apache在Linux上托管PHP应用程序

要使用Apache托管PHP应用程序,需要安装web服务器和所有必需的模块。这可以通过命令来完成:

##Debian/Ubuntu

sudo apt install libapache2-mod-php8.2

##Rhel/Rocky/Alma Linux/CentOS

sudo yum install httpd

安装后,您可以为您的应用程序进行所需的配置:

##Debian/Ubuntu

sudo vim /etc/php/8.2/apache2/php.ini

##Rhel/Rocky/Alma Linux/CentOS

sudo vim /etc/php.ini

将所需配置添加到文件中:

max_execution_time = 300

upload_max_filesize = 100M

post_max_size = 128M

date.timezone = Asia/Shanghai

在基于Rhel的系统上,您需要编辑下面的文件才能加载PHP文件:

$ sudo vim /etc/httpd/conf/httpd.conf

# LoadModule foo_module modules/mod_foo.so

AddHandler php-script .php

保存文件并重新启动服务:

##Debian/Ubuntu 

sudo systemctl restart apache2

##Rhel/Rocky/Alma Linux/CentOS

sudo systemctl restart php-fpm httpd

现在我们将为应用程序创建一个virtual host文件:

##Debian/Ubuntu 

sudo vim /etc/apache2/sites-available/test.conf

##Rhel/Rocky/Alma Linux/CentOS

sudo vim /etc/httpd/conf.d/test.conf

将以下行添加到文件中:

<Directory /var/www/html/php>

        Require all granted

</Directory>

<VirtualHost *:80>

        ServerName test.computingforgeeks.com

        ServerAlias www.test.computingforgeeks.com

        ServerAdmin admin@localhost

        DocumentRoot /var/www/html/php

</VirtualHost>

对于基于Debian的版本,激活站点的方法如下:

sudo ln -s /etc/apache2/sites-available/test.conf /etc/apache2/sites-enabled/

sudo unlink /etc/apache2/sites-enabled/000-default.conf

重新启动服务:

##Debian/Ubuntu 

sudo systemctl restart apache2

##Rhel/Rocky/Alma Linux/CentOS

sudo systemctl restart php-fpm  httpd

允许端口通过防火墙:

#For UFW

sudo ufw allow 80

##For Firewalld

sudo firewall-cmd --add-port=80/tcp --permanent

sudo firewall-cmd --reload

配置到这里,可以使用URL地址格式为http://IP_Address来访问网站了:

\

选项2:使用Nginx在Linux上托管PHP应用程序

除了使用Apache在Linux上托管PHP应用程序外,也可以使用Nginx托管应用程序。首先,在您的系统上安装web服务器。

##Debian/Ubuntu 

sudo apt install nginx php8.2-fpm

##Rhel/Rocky/Alma Linux/CentOS

sudo yum install nginx php-fpm

一旦Nginx和PHP-FPM模块安装完成后,您就可以进行所需的PHP配置:

##Debian/Ubuntu 

sudo vim /etc/php/8.2/fpm/php.ini

##Rhel/Rocky/Alma Linux/CentOS

sudo vim /etc/php.ini

在文件中,添加行:

upload_max_filesize = 20M

short_open_tag = On

memory_limit = 256M

max_execution_time = 360

date.timezone = Asia/Shanghai

保存文件并重新启动服务:

sudo systemctl restart nginx php*-fpm.service

现在我们将为Nginx创建一个virtual host文件:

##Debian/Ubuntu 

sudo vim /etc/nginx/sites-available/test.conf

##Rhel/Rocky/Alma Linux/CentOS

sudo vim /etc/nginx/conf.d/test.conf

将下面的行添加到文件中:

server {

    listen 80;

    server_name test.computingforgeeks.com;

    root /var/www/html/php;

    index index.php index.html;

        location / {

            try_files $uri $uri/ /index.php;

    }

    location ~ \.php$ {

        include fastcgi_params;

        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;

        fastcgi_index  index.php;

        fastcgi_pass unix:/run/php-fpm.www.sock;

    }

}

在基于Debian的平台上,将/run/php-fpm.www.sock替换为/run/php/php8.2-fpm.sock。保存文件,然后启用站点:

sudo ln -s /etc/nginx/sites-available/test.conf /etc/nginx/sites-enabled/

sudo unlink /etc/nginx/sites-enabled/default

重新启动服务:

sudo systemctl restart nginx php*-fpm.service

允许HTTP,通过防火墙并使用URL地址格式为http://IP_Address的访问应用程序:

\

结论

到这里,标志着本指南的结束,该指南介绍了如何使用Apache/Nginx Web服务器在Linux上托管PHP应用程序,希望对有需求的用户提供帮助。