问题描述

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

配置环境

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

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

更改PHP配置

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

  1. sudo vim /etc/php5/fpm/php.ini
  2. cgi.fix_pathinfo=0

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

  1. sudo php5enmod mcrypt
  2. sudo service php5-fpm restart

配置Nginx

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

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

下面需要配置我们的nginx

  1. sudo nano /etc/nginx/sites-available/default

这里你看到的大概是这样的

  1. server {
  2.  listen 80 default_server;
  3.  listen [::]:80 default_server ipv6only=on;
  4.  root /usr/share/nginx/html;
  5.  index index.html index.htm;
  6.  # Make site accessible from http://localhost/
  7.  server_name localhost;
  8.  location / {
  9.  # First attempt to serve request as file, then
  10.  # as directory, then fall back to displaying a 404.
  11.  try_files $uri $uri/ =404;
  12.  # Uncomment to enable naxsi on this location
  13.  # include /etc/nginx/naxsi.rules
  14.  }
  15.  #error_page 404 /404.html;
  16.  # redirect server error pages to the static page /50x.html
  17.  #
  18.  #error_page 500 502 503 504 /50x.html;
  19.  #location = /50x.html {
  20.  # root /usr/share/nginx/html;
  21.  #}
  22.  #location ~ \.php$ {
  23.  #fastcgi_split_path_info ^(.+\.php)(/.+)$;
  24.  # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
  25.  # With php5-cgi alone:
  26.  #fastcgi_pass 127.0.0.1:9000;
  27.  # With php5-fpm:
  28.  #fastcgi_pass unix:/var/run/php5-fpm.sock;
  29.  #fastcgi_index index.php;
  30.  #include fastcgi_params;
  31.  #}
  32.  #}

需要把它替换成下面的配置文件,其中server_name要替换成你自己的域名或者ip,其中root里面的内容就是刚才我们创建laravel的目录并且多了一个public目录,这里public目录的作用就是去掉我们每次请求laravel路由里面的public,让路由语义更强

  1. server {
  2.  listen 80 default_server;
  3.  listen [::]:80 default_server ipv6only=on;
  4.  root /usr/share/nginx/laravel/public;
  5.  index index.php index.html index.htm;
  6.  server_name server_domain_or_IP;
  7.  location / {
  8.  try_files $uri $uri/ /index.php?$query_string;
  9.  }
  10.  location ~ \.php$ {
  11.  try_files $uri /index.php =404;
  12.  fastcgi_split_path_info ^(.+\.php)(/.+)$;
  13.  #With php5-fpm:
  14.  fastcgi_pass unix:/var/run/php5-fpm.sock;
  15.  fastcgi_index index.php;
  16.  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  17.  include fastcgi_params;
  18.  }
  19.  }

做完这些我们的工作基本就完成了,在目录中部署写好的laravel程序,打开绑定的域名就可以看到效果了如下图

后记

今天有人在QQ上问我部署的问题,一般来讲可以使用ftp,在高级一点可以使用sftp,或者搭建svn,不过自从有了git以后,我一般是先在git上创建一个项目,本地开发好push上去,在测试服务器上pull下来,测试通过后,在生产服务器上pull下来,这个足够应对大部分场景了,不过在搭建分布式项目的时候我一般是写一个自动化的脚本去替我完成那些重复的劳动,令最近这阶段心情足够好的时候我会用docker。

注;github上面公开项目是免费的,但是私有项目要花钱,而且这两天回家我家的网也连不上github了,所以国内我推荐做‘不可告人’的项目的时候使用oschina的git,速度相当赞,而且每个账号可以免费创建1000个项目,公开或者私有均可。这半年的新项目如下图都放到了oschina上了,.NET项目也放弃了TFS(因为速度原因,有时会disconnect),除了偶尔的一些冲突vs没法解决需要上git的命令行,体验还是相当不错的

Linux使用nginx部署Laravel的更多相关文章

  1. Ubuntu 14.04 上使用 Nginx 部署 Laravel

    本教程将会涉及以下工具: Ubuntu 14.04 LTS PHP 5.5 MySQL Laravel 5.0 Nginx 参考文章:Ubuntu 14.04 上使用 Nginx 部署 Laravel ...

  2. Linux nginx部署laravel

    Composer Composer 是 php 的一个依赖管理工具.它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们.运行 Composer 需要 PHP 5.3.2+ 以上版本.一些敏感 ...

  3. ubuntu下使用nginx部署Laravel

    问题描述 Laravel是PHP下当今最受欢迎的web应用开发框架,github上start数远超第二名Symfony,以前我用这个框架做项目的时候通常就是扔到apache里面,然后配置.htacce ...

  4. s11 day Linux 和nginx 部署

      https://www.cnblogs.com/pyyu/p/9481344.html ,开机初始化的配置 iptables -F 清空防火墙 /etc/init.d/iptables stop ...

  5. Linux +Docker +Nginx 部署代理转发初探

    很多开发人员仅仅只会码代码,如果让开发人员部署一些深入点的东西,或者做负载均衡等,很多开发人员估计就懵逼了,作为一个专业的开发还需要懂一些基本的运维知识:虽然说在互联网行业中,中小企业都有一个牛逼的运 ...

  6. linux下nginx部署以及配置详解

    1.下载源码包解压编译 启动多个,请看:在linux系统下安装两个nginx以及启动 查看nginx包路径:http://nginx.org/download/,两种下载方式: 1.在官网下载使用Xf ...

  7. Linux上Nginx部署配置--二级域名配置

    http://www.cnblogs.com/yaunion/archive/2013/03/16/2962385.html http://blog.csdn.net/LBinin/article/d ...

  8. Linux上Nginx部署配置

    一.下载软件 openssl-fips-2.0.10.tar.gz pcre-8.40.tar.gz zlib-1.2.11.tar.gz nginx-1.10.2.tar.gz gcc-c++ 下载 ...

  9. Django Linux环境下部署CentOS7+Python3+Django+uWSGI+Nginx(含Nginx返回400问题处理、防火墙管理)

    本文将介绍如何在Linux系统上部署Django web项目,本次部署基于下面的架构: CentOS7+ Python3.5 + Django1.11 + uWSGI + Nginx 亲测可行!!按照 ...

随机推荐

  1. windows安装 Nodejs,NPM, CNPM

    1, dowload Nodejs from :  http://nodejs.cn/download/ 下载完毕后,可以安装node,建议不要安装在系统盘(本例安装在 D:\vueProject) ...

  2. How to secure remote desktop connections using TLS/SSL

    How to secure remote desktop connections using TLS/SSL based authentication Requirement When you ena ...

  3. rem、em、px之间的转换

    rem是相对于根元素<html>,这样就意味着,我们只需要在根元素确定一个参考值,这个参考值设置为多少,完全可以根据您自己的需求来定. 我们知道,浏览器默认的字号16px,来看一些px单位 ...

  4. 转:Java NIO(2)

    java.nio包是Java在1.4之后增加的,用来提高I/O操作的效率.在nio包中主要包括以下几个类或接口: * Buffer:缓冲区,用来临时存放输入或输出数据. * Charset:用来把Un ...

  5. POJ1386 Play on Words

    Time Limit: 1000MS   Memory Limit: 10000KB   64bit IO Format: %I64d & %I64u Description Some of ...

  6. 汕头市队赛 SRM10 T1模拟只会猜题意

    模拟只会猜题意 SRM 10 描述 有一本n个单词的词典,求按下列方法能造出的不相同的词汇数目.  1.词典中的单词是一个词. 2.能分为两部分的,其中前一部分是一个词典词或者其非空前缀,后一部分是一 ...

  7. 自定义View Measure过程(2)

    目录 目录 1. 作用 测量View的宽/高 在某些情况下,需要多次测量(measure)才能确定View最终的宽/高: 在这种情况下measure过程后得到的宽/高可能是不准确的: 建议在layou ...

  8. [ CodeVS冲杯之路 ] P3145

     不充钱,你怎么AC? 题目:http://codevs.cn/problem/3145/ 经典的汉诺塔问题 我们移动的时候,如果是最小的1号就可以直接移动,否则先将上面的x-1号先移动到借用塔上,然 ...

  9. 疫情控制(NOIP2012)庆祝2012满贯!٩(๑•◡-๑)۶ⒽⓤⒼ

    丧病至极的D2T3啊! 好吧~ 先放个传送门~ 原题传送门 好吧,这道题呢.. 根据题意我们可以很明显的看出来 军队往上走的越多(在没到根节点之前),效益一定越大.. 所以可以分情况讨论: 对于无法走 ...

  10. 【原创】Linux环境下的图形系统和AMD R600显卡编程(11)——R600指令集

    1 低级着色语言tgsi OpenGL程序使用GLSL语言对可编程图形处理器进行编程,GLSL语言(以下高级着色语言就是指GLSL)是语法类似C的高级语言,在GLSL规范中,GLSL语言被先翻译成教低 ...