【问题标题】:Laravel site not showing content in sub-folder?Laravel 网站没有在子文件夹中显示内容?
【发布时间】:2020-05-14 17:49:32
【问题描述】:

我为现有网站创建了一个新版本,并将其放入 /var/www/new_site 的自己的文件夹中

/var/www 是现有站点所在的位置。 /var/www/stage 是开发新站点的地方。我复制了舞台文件夹并将其重命名为new_site

但我无法让服务器识别文件夹。

甚至可以创建一个文件位于子文件夹中的网站吗?

这是我启用的配置文件的样子。

ServerName site.com
ServerAlias site.com
DocumentRoot /var/www/new_site/public

<Directory /var/www/new_site>
    Options Indexes FollowSymLinks
    AllowOverride FileInfo Options
    Order allow,deny
    allow from all
</Directory>

该站点使用最新版本的 Laravel、Apache 2 和 Ubuntu 18。

我的开发人员告诉我的最后一件事是我们需要重新路由 apache 以使用站点文件夹,然后将公共文件移动到公共站点文件夹。

【问题讨论】:

  • 它可以在一个子文件夹中完成...出于测试目的,我在同一 Ubuntu 服务器上设置了两个不同的站点,例如 /var/www/site1 和 /var/www/site1。我相信您必须授予站点文件夹一些权限,否则服务器无法读取/写入站点文件夹。
  • @nikistag 不错!问题是如何让我的网站识别子文件夹?
  • 转到本教程的第4步digitalocean.com/community/tutorials/…
  • 您需要为该特定文件夹创建一个虚拟主机
  • 对不起.. 太多了。您只有一个网站。

标签: php laravel laravel-6 laravel-6.2


【解决方案1】:

首先,服务器需要访问站点文件夹: 授予访问权限的控制台命令:

chown -R www-data.www-data /var/www/new_site
chmod -R 755 /var/www/new_site
chmod -R 777 /var/www/new_site/storage

然后 cd 到 /var/www/new_site/ 检查工作类型命令的东西

php artisan 

如果它显示命令列表,那么到目前为止一切正常。

现在打开以使用 nano 或 vim 编辑站点配置:

nano /etc/apache2/sites-enabled/000-default.conf

此配置应适用于您的旧网站。如果是这种情况,请更改您的新网站。

应该是这样的

<VirtualHost *:80>

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/new_site/public

        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/new_site>
                AllowOverride All
        </Directory>

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

</VirtualHost>

保存配置后需要重启服务器:

sudo service apache2 restart

现在 cd 到 /var/www/new_site/ 并打开 .env 文件。

sudo nano .env

检查那里是否一切正常。它应该是这样的:

APP_NAME=XXXXXXXXXXXXXXXXXXX
APP_ENV=local
APP_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
APP_DEBUG=true
APP_URL=http://XXXXXXXXXXXXX

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=XXXXXXXXXXXXXX
DB_USERNAME=XXXXXXXXXXXXX
DB_PASSWORD=XXXXXXXXXXXXX

BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

【讨论】:

  • 我执行了所有这些命令。没有改变。站点仍在显示 /var/www 文件夹中的旧文件
  • 更改我的配置后.. 你重启服务器了吗?
  • 是的,我重新启动了服务器。不确定我应该在 conf 文件中更改什么。
  • 看看你的新网站是否出现在这里.. nano /etc/apache2/sites-enabled/000-default.conf
  • 查看我原帖中的代码。这就是我在我的 conf 文件中的代码。它是我停用的 000-default conf 文件的副本。我刚刚用我的新文件夹替换了旧文件夹。
【解决方案2】:

已修复(至少看起来已修复)。

我运行命令“apache2ctl -S”(不带引号)来确认主站点真正使用的是哪个虚拟主机。结果发现主站点使用了一个 .conf 文件,该文件位于启用站点的文件夹中,但未显示在站点可用文件夹中,所以我完全错过了它。对该文件和 .env 文件进行了适当的编辑(显然数据库名称错误),该站点现在指向新文件。

【讨论】:

    猜你喜欢
    • 2023-02-11
    • 2017-08-23
    • 2013-02-15
    • 2022-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-07
    相关资源
    最近更新 更多