我继承了一个在我无法访问的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/available-sites/appname.conf文件进行了多次修改,但显然还没有完全正确。我还阅读了网络上关于修改各种其他配置文件的一些帖子,包括php配置文件和Apache配置文件。似乎这些其他mod(虽然它们可能是可行的)不应该是必要的。
这是我目前的/etc/apache2/available-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>
任何建议都表示赞赏。
答案 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 y
和press 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
上执行。