阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Ubuntu下使用Nginx部署Laravel

225次阅读
没有评论

共计 2673 个字符,预计需要花费 7 分钟才能阅读完成。

问题描述

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 程序,打开绑定的域名就可以看到效果了如下图

Ubuntu 下使用 Nginx 部署 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

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计2673字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中