共计 2673 个字符,预计需要花费 7 分钟才能阅读完成。
问题描述
Laravel 是 PHP 下当今最受欢迎的 web 应用开发框架,github 上 start 数远超第二名 Symfony,以前我用这个框架做项目的时候通常就是扔到 apache 里面,然后配置.htaccess 文件移除路由里面的 public 字样,达到 Pretty URLs 效果,这这两天在完善各个版本的微信墙,准备部署在 azure 上,结果发现以前装的是 nginx,mysql 这样的环境,于是乎花了一点时间研究了一下如何部署,便就有了这篇文章,废话少说,上干货:
配置环境
sudo apt-get install nginx php5-fpm php5-cli php5-mcrypt git
这里会安装 nginx 作为 web server,同时会安装一些 PHP 工具,安装 git 是为了后期部署的时候拉取代码
更改 PHP 配置
安装完上诉组件之后,我们需要进行一些配置,首先需要打开 fpm/php.ini, 去更改 fix_pathinfo 为 0
sudo vim /etc/php5/fpm/php.ini
cgi.fix_pathinfo=0
这里的设置是让 PHP 在请求的文件不在的时候别去尝试执行相似名字的脚本,防止攻击者欺骗 PHP 去执行一些不应该执行的代码,最后我们需要显式地启用 MCrypt 扩展并重启 php5-fpm 服务以便重新载入让刚才的更改
sudo php5enmod mcrypt
sudo service php5-fpm restart
配置 Nginx
下面我们要配置一下 nginx,里面存在一些路径,这里我是使用 apt-get 安装的 nginx,如果是手动编译安装的话请自寻路径,首先我们要创建一个目录以便放置我们的 laravel 代码,这里我直接放到 /usr/share/nginx/laravel
sudo mkdir -p /usr/share/nginx/laravel
下面需要配置我们的 nginx
sudo nano /etc/nginx/sites-available/default
这里你看到的大概是这样的
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.html index.htm;
# Make site accessible from http://localhost/
server_name localhost;
location /{
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/=404;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
#error_page 500 502 503 504 /50x.html;
#location = /50x.html {
# root /usr/share/nginx/html;
#}
#location ~ \.php$ {
#fastcgi_split_path_info ^(.+\.php)(/.+)$;
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# With php5-cgi alone:
#fastcgi_pass 127.0.0.1:9000;
# With php5-fpm:
#fastcgi_pass unix:/var/run/php5-fpm.sock;
#fastcgi_index index.php;
#include fastcgi_params;
#}
#}
需要把它替换成下面的配置文件,其中 server_name 要替换成你自己的域名或者 ip,其中 root 里面的内容就是刚才我们创建 laravel 的目录并且多了一个 public 目录,这里 public 目录的作用就是去掉我们每次请求 laravel 路由里面的 public,让路由语义更强
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/laravel/public;
index index.php index.html index.htm;
server_name server_domain_or_IP;
location /{
try_files $uri $uri//index.php?$query_string;
}
location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
#With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
做完这些我们的工作基本就完成了,在目录中部署写好的 laravel 程序,打开绑定的域名就可以看到效果了如下图
后记
今天有人在 QQ 上问我部署的问题,一般来讲可以使用 ftp,在高级一点可以使用 sftp,或者搭建 svn,不过自从有了 git 以后,我一般是先在 git 上创建一个项目,本地开发好 push 上去,在测试服务器上 pull 下来,测试通过后,在生产服务器上 pull 下来,这个足够应对大部分场景了,不过在搭建分布式项目的时候我一般是写一个自动化的脚本去替我完成那些重复的劳动,令最近这阶段心情足够好的时候我会用 docker。
Ubuntu 14.04 上使用 Nginx 部署 Laravel 5.0 http://www.linuxidc.com/Linux/2015-08/121986.htm
更多 Ubuntu 相关信息见 Ubuntu 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=2
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2015-08/121988.htm