在Apache虚拟主机上为Laravel项目设置文档根目录

时间:2018-03-08 23:42:45

标签: php laravel apache

我继承了一个在我无法访问的Apache服务器上运行的php / Laravel应用程序。我的任务是让它在另一台Apache服务器上运行。我对PHP非常好,但对Laravel来说相对较新,对Apache配置也很新。

我已经想出如何在运行在Ubuntu VM(VirtualBox)上的Apache上运行Laravel应用程序。我可以通过http://localhost在Ubuntu VM上的浏览器中访问Laravel应用程序。我还可以通过http://appname.com/public从Internet访问浏览器中的Laravel应用程序。但是,如果我只使用http://appname.com,那么我只需获取/ var / www / appname的文件夹列表。

我已经对/etc/apache2/av​​ailable-sites/appname.conf文件进行了多次修改,但显然还没有完全正确。我还阅读了网络上关于修改各种其他配置文件的一些帖子,包括php配置文件和Apache配置文件。似乎这些其他mod(虽然它们可能是可行的)不应该是必要的。

这是我目前的/etc/apache2/av​​ailable-sites/appname.conf

    <VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName appname.com
        ServiceAlias www.appname.com
        DocumentRoot /var/www/appname/public

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>

任何建议都表示赞赏。

  • 鲍勃

2 个答案:

答案 0 :(得分:5)

您需要在apache服务器和allowSymLinks中允许mod_rewrite。 Source

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName appname.com
    ServiceAlias www.appname.com
    DocumentRoot /var/www/appname/public

    <Directory "/var/www/appname/public">
            Options FollowSymLinks
            ReWriteEngine On
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
在DocumentRoot目录中的

我也允许使用MultiViews

<Directory "/var/www/appname/public">
        Options FollowSymLinks MultiViews
        ReWriteEngine On
</Directory>

您可能还需要

  

sudo a2enmod重写

启用模块重写。

修改1:

在我的.conf文件中,我用引号获取它们并且它们正在工作。 你启用了模块重写吗?

除了一些选项,我还有“/”文件夹和下一个配置。

<Directory "/">
    Options FollowSymLinks
    AllowOverride All
    ReWriteEngine On
</Directory>

在这里,我将编写公共目录的完整代码

<Directory "/var/www/appname/public">
        Options FollowSymLinks MultiViews
        Order Allow,Deny
        Allow from all
        ReWriteEngine On
</Directory>

在删除您不喜欢使用的选项后,尝试并查看它是否有效。

答案 1 :(得分:0)

按照这些步骤进行操作,一切都会变得容易和简单,

1)。terminal

中键入以下命令

cd /etc/apache2/sites-available

2)。制作一个新的配置文件

sudo cp 000-default.conf appname.dev.conf

3。。打开新的配置文件并粘贴以下代码

<VirtualHost *:80>
        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        #ServerName www.example.com

        ServerAdmin yourmail@example.com
        ServerAlias appname.dev
        DocumentRoot /var/www/html/appname/public

        <Directory /var/www/html/appname/public>
           Options -Indexes +FollowSymLinks +MultiViews
            AllowOverride All
            Require all granted
            <FilesMatch \.php$>
               #Change this "proxy:unix:/path/to/fpm.socket"
               #if using a Unix socket
               #SetHandler "proxy:fcgi://127.0.0.1:9000"
            </FilesMatch>
        </Directory>

        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

4)。 CTRL+x,然后依次是press ypress enter,并在终端中运行以下命令

sudo a2ensite appname.dev.conf

5)。键入以下命令并编辑/ etc / hosts文件

sudo nano /etc/hosts

127.0.0.1 appname.dev

press CTRL x然后press Enter并键入以下命令

sudo service apache2 restart

6)。现在,您的应用将成功在appname.dev上执行。