ubuntu下使用nginx部署Laravel

问题描述php

Laravel是PHP下当今最受欢迎的web应用开发框架,github上start数远超第二名Symfony,之前我用这个框架作项目的时候一般就是扔到apache里面,而后配置.htaccess文件移除路由里面的public字样,达到Pretty URLs效果,这这两天在完善各个版本的微信墙,准备部署在azure上,结果发现之前装的是nginx,mysql这样的环境,因而乎花了一点时间研究了一下如何部署,便就有了这篇文章,废话少说,上干货:html

配置环境mysql

 
 
 
 
sudo apt-get install nginx php5-fpm php5-cli php5-mcrypt git

这里会安装 nginx 做为web server,同时会安装一些PHP工具,安装git是为了后期部署的时候拉取代码 nginx

更改PHP配置laravel

安装完上诉组件以后,咱们须要进行一些配置,首先须要打开fpm/php.ini,去更改fix_pathinfo为0git

 
 
 
 
sudo vim /etc/php5/fpm/php.inicgi.fix_pathinfo=0

这里的设置是让PHP在请求的文件不在的时候别去尝试执行类似名字的脚本,防止攻击者欺骗PHP去执行一些不该该执行的代码,最后咱们须要显式地启用MCrypt扩展并重启php5-fpm 服务以便从新载入让刚才的更改github

 
 
 
 
sudo php5enmod mcryptsudo service php5-fpm restart

配置Nginxweb

下面咱们要配置一下nginx,里面存在一些路径,这里我是使用apt-get安装的nginx,若是是手动编译安装的话请自寻路径,首先咱们要建立一个目录以便放置咱们的laravel代码,这里我直接放到/usr/share/nginx/laravelsql

 
 
 
 
sudo mkdir -p /usr/share/nginx/laravel

下面须要配置咱们的nginxdocker

 
 
 
 
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。

注;github上面公开项目是免费的,可是私有项目要花钱,并且这两天回家我家的网也连不上github了,因此国内我推荐作‘不可告人’的项目的时候使用oschina的git,速度至关赞,并且每一个帐号能够免费建立1000个项目,公开或者私有都可。这半年的新项目以下图都放到了oschina上了,.NET项目也放弃了TFS(由于速度缘由,有时会disconnect),除了偶尔的一些冲突vs无法解决须要上git的命令行,体验仍是至关不错的

相关文章
相关标签/搜索