如何将使用Laravel开发的Rest API部署到生产中?

时间:2019-04-22 05:39:47

标签: laravel laravel-5.8

我已经开发了使用laravel并从Angular 4调用它们的rest api。当我使用“ php artisan serve”运行laravel时,它在本地系统上都可以正常工作。但是,当我以相同的方式将其托管在AWS EC2实例上并且调用api时,它将给我404错误。

我将所有代码都放在/ var / www / html中,并像http://domain/api/report一样访问了它,但仍然给了我404。但是当我像http://domain/public/index.php这样访问公用文件夹时,它的工作正常。

请帮助我。

谢谢!

4 个答案:

答案 0 :(得分:1)

请在/etc/apache2/sites-available/00-default.conf此文件中更改您的文档目录路径

您还检查您的重写模块是否打开。

sudo a2enmod rewrite

var/www/html

var/www/html/public

重启服务器后

service apache2 restart

答案 1 :(得分:1)

因此您需要进行2次更改。

首先将您的应用程序域指向公用文件夹,因此步骤将是: 使用sudo a2enmod rewrite启用重写模块 b。更改apache conf文件中的AllowOverride:

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted

c。将路径从var/www/html更新为var/www/html/public

如果您对默认文件进行了一些更改(您可以在项目的公共目录中找到此文件),则使用.htaccess文件从您的网址中删除index.php。

答案 2 :(得分:0)

您的api似乎不在公共磁盘中。

要进行链接,只需在public / api和api之间创建符号链接

答案 3 :(得分:0)

要将laravel上传到服务器,必须将所有laravel目录上传到var svg = jQuery('#graphUnits').html(); var rawSVG = svg.split("<div")[0]; canvg(document.getElementById('graph_units_can'),rawSVG); html2canvas($("#graph_units_can"), { onrendered: function(canvas) { var imgData = canvas.toDataURL('image/png'); console.log(imgData); linkUnits.href = imgData; var url = linkUnits.href.replace(/^data:image\/[^;]/, 'data:application/octet-stream'); } }); 中 和var/www

中公用文件夹的内容

laravel这样做是出于安全考虑,因此没有人可以访问html之类的配置文件或任何其他使其更安全的PHP文件

所以您的.env的输出就像

var/www

以此类推

然后您的var/www/app var/www/bootstrap var/www/config的输出就像

html

以此类推

然后您的应用程序将运行良好 如果您遇到无法访问路线的问题,则必须在html/js html/css html/index.php文件中进行一些重写,以便观看视频教程rewrite configuration laravel