Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony在外部环境中内置Web服务器_Php_Symfony_Fosrestbundle - Fatal编程技术网

Php Symfony在外部环境中内置Web服务器

Php Symfony在外部环境中内置Web服务器,php,symfony,fosrestbundle,Php,Symfony,Fosrestbundle,我使用FOSRestBundle在本地配置了一个web服务,它工作得非常好。我需要写的唯一一件事就是开始我的服务 php bin/console server:run xxx.xxx.x.xx:port 一切都准备好了 但后来我阅读了一些关于symfony web服务器的文档,这些信息让我感到困惑: 内置web服务器将在受控环境中运行 环境它不是为在公共网络上使用而设计的 我该如何在我的云环境中使用它?如果我想公开,我应该如何在不使用内置服务器的情况下启动REST服务 什么与“server:

我使用FOSRestBundle在本地配置了一个web服务,它工作得非常好。我需要写的唯一一件事就是开始我的服务

php bin/console server:run xxx.xxx.x.xx:port 
一切都准备好了

但后来我阅读了一些关于symfony web服务器的文档,这些信息让我感到困惑:

内置web服务器将在受控环境中运行 环境它不是为在公共网络上使用而设计的

我该如何在我的云环境中使用它?如果我想公开,我应该如何在不使用内置服务器的情况下启动REST服务


什么与“server:run”命令等效?如果我只是把代码放在那里,它将不起作用。我需要为我的REST API启动服务器。

如前所述,内置Web服务器仅用于开发。 它速度慢,容易受到各种攻击。 您可以像使用Web服务器的任何其他应用程序一样运行您的服务。 Symfony网站上有一个指南,向您展示了如何做到这一点

或者,如果您具有云服务器的root访问权限,则可以配置Web服务器


如前所述,内置Web服务器仅用于开发。 它速度慢,容易受到各种攻击。 您可以像使用Web服务器的任何其他应用程序一样运行您的服务。 Symfony网站上有一个指南,向您展示了如何做到这一点

或者,如果您具有云服务器的root访问权限,则可以配置Web服务器


在生产环境中,
server:run
命令的等效值要复杂一些。面向公众的机器上的web服务器比本地开发服务器承担更多的责任,因此需要更多的配置

出于生产(甚至登台)目的,请使用生产就绪的web服务器,如或

我将在这里分享一个基于Debian(Ubuntu)系统上的apache默认设置,并详细介绍一些要避免的常见陷阱

  • 安装灯组件

    ssh
    安装到您的计算机中,并运行此命令以确保apache、php、mysql等都已安装

    首先,从存储库中获取最新数据:

    sudo-apt-get-update

    需要在其上运行symfony的指示灯组件:

    sudo apt get安装apache2 mysql服务器libapache2 mod auth mysql php5 mysql php5 libapache2-mod-php5 php5 mcrypt

    如果根MySQL通道要求您提供一个,请确保将其存储下来。(如果您还没有安装它。)

  • 配置MySQL

    sudomysql\u install\u db
    初始化mysql的系统/帮助表等

    sudo/usr/bin/mysql\u secure\u安装
    要删除测试表,请重新加载特权表

    跳入MySQL shell,为你的应用程序创建一个用户&db

    mysql-u root-p
    ,并在提示时提供您的root pw

    mysql>创建由“密码”标识的用户“otuyh”@“localhost”
    将使用密码创建您的
    otuyh
    用户
    password

    mysql>创建数据库otuyh\u应用程序
    将创建应用程序运行所需的数据库

    mysql>将otuyh_app.*上的所有权限授予“otuyh”@“localhost”

    mysql>刷新权限

  • 配置Apache(生产版的
    server:run

    将项目克隆或上载到
    /var/www/html

    编辑
    /etc/apache2/sites enabled/000 default.conf
    并更改行:

    DocumentRoot/var/www/html
    DocumentRoot/var/www/html/web

    这将告诉apache哪个目录为来自应用程序web文件夹的请求提供服务

    另外,将行
    ServerName white macbook
    改为
    ServerName example.com
    ,其中example.com是指向服务器的域名

    最后,在其中添加一个
    AllowOverride All
    行,明确声明
    .htaccess
    文件也可以为web服务器添加指令

    web/
    文件夹中放置一个.htaccess文件,如下所示:

    <IfModule mod_rewrite.c>
        Options +FollowSymlinks
        RewriteEngine On
    
        RewriteBase /
    
        # Explicitly disable rewriting for front controllers
        RewriteRule ^app_dev.php - [L]
    
        RewriteCond %{REQUEST_FILENAME} !-f
        # Change below before deploying to production
        RewriteRule ^(.*)$ app_dev.php [QSA,L]
    </IfModule>
    
    
    选项+FollowSymlinks
    重新启动发动机
    重写基/
    #显式禁用前控制器的重写
    重写规则^app_dev.php-[L]
    重写cond%{REQUEST_FILENAME}-F
    #在部署到生产环境之前进行以下更改
    重写规则^(.*)$app_dev.php[QSA,L]
    
    当您准备将环境更改为生产环境时,将
    app\u dev
    更改为仅
    app

    确保在更改apache2服务的配置后重新启动它:
    sudo服务重新启动apache2

    运行常规sf2模式创建、composer安装等

    然后,确保提供文件的apache用户确实可以访问这些文件

    此外,在运行
    composer*
    cache:clear
    作为提供文件的用户之外的用户之后,写入权限可能会混淆,而
    www-data
    将需要此权限来写入日志和获取缓存文件。快速解决方案:

    chown-R您的unix用户:www-data./app
    find./app/cache-type d-exec chmod 775{}
    
    find./app/logs-d型-exec chmod 775{}\
    
    find./app/cache-type f-exec chmod 664{}\
    find./app/logs-type f-exec chmod 664{}\


  • 在生产环境中,
    server:run
    命令的等效值要复杂一些。面向公众的机器上的web服务器比本地开发服务器承担更多的责任,因此需要更多的配置

    出于生产(甚至登台)目的,请使用生产就绪的web服务器,如或

    我将在这里分享一个基于Debian(Ubuntu)系统上的apache默认设置,并详细介绍一些相关信息