Laravel 生产环境部署之难之感慨
昨天在论坛里面请教“Homestead 环境下的项目要怎样迁移到 Ubuntu 下的生产环境“,见帖子 问答:Homestead 环境下的项目要怎样迁移到 Ubuntu 下的生产环境?, 无一回复,唉本来因为是小白所以花了钱买了教程学着用Hoemstead来建了自己的Laravel项目,可是可是,部署竟然成了个大问题,更郁闷的是,竟然打死找不到一个系统地介绍部署的帖子,我觉得这是Laravel China社区做得不好的地方,推荐新手使用Homestead做开发,也得说说开发完了怎么移到生产环境上去吧,移到自建的服务器上到底还有多少坑要踩啊?
这两天边琢磨边部署边踩坑,过程中随手记了一下自己部署过程中遇到的一些问题和解决办法,记在博客里面希望对后来的小白有所帮助吧,记的时候真的是只求内容没怎么管格式了。
Laravel从Homestead开发环境移到Ubuntu生产环境(1) - Ubuntu16.04 生产环境安装
https://blog.csdn.net/hitcompass1/article/...
Laravel从Homestead开发环境移到Ubuntu生产环境(2) - 修改Laravel为生产环境
https://blog.csdn.net/hitcompass1/article/...
记了这么多,最后到现在部署也没有成功,元旦节加了一天班也没成功,希望有看到贴的好心人大神帮忙提点一下,感激不尽。
管理员大大,能不能指点一下
谢谢各位热心的大神,我最后终于找到原因了,最后就是因为bootstrap和storage两个目录没有改权限,一路走过来不容易,我把我遇到的问题都纪录在这篇帖子里面的两个博客地址里面了,希望对后来的小白有所启发。
另外,谢谢回思恋莹 ,如果再早点看到你的帖子就好了,能减少我的好多摸索时间,我最后就是少做了一步改权限的操作,在回思恋莹的帖子里最后一步就是改权限,还是谢谢你。
高认可度评论:
虽说授人以鱼不如授人以渔,但是授人以渔不是一蹴而就,还是先授人以鱼让你能看到成效吧。请照着做:
假定你能熟练使用
apt install
命令安装软件安装
sudo apt install nginx
sudo apt install mysql-server mysql-client mysql-common
sudo apt install php7.2-fpm php7.2-mysqli php7.2-gd php7.2-curl php7.2-mbstring php7.2-pdo-mysql
sudo apt install redis-server
配置
cd /etc/nginx/sites-enabled/
touch www.yourdomain.com
vim www.yourdomain.com
把laravel文档里的部署的内容拷贝进去,里面有几个注意的地方,需要修改
cd /etc/php/7.1/fpm/pool.d/
vim www.conf
修改几个选项,以下是核心配置,还有一些日志之类的你就用默认的吧启动服务
sudo service nginx start
sudo service php-fpm start
sudo service mysql start
注意你的代码的文件夹最好把它所有者设置为
www-data
, 然后上级目录www-data
要有搜索权限,还有记得解析你的域名到你的服务器上。然后应该没什么问题,有的话再问
@天上白玉京 谢谢你的回复,这个贴子里面的脚本早已过期,也没有更新,最新的脚本在GITHubhttps://github.com/summerblue/laravel-ubuntu-init放着。
并且我也按照这个脚本完成了最初的环境搭建,可这离最后的完全部署还差得远啦,光是Homestead下代码移到非Hoemstead环境下就还有好多事情要做,比如Nginx里面一些配置文件的定制,数据库的迁移等等,详情请看我的博客帖子。
可能对老手这些事情都不算什么,问题是对一个新手,很多东西都只能自己摸索,和去网上找一些东拼西凑的文章,Laravel China应该有一个教程详细讲讲Hoemstead开发完成之后怎么移到非Homestead上面去,不然太虎头蛇尾了。
两年前的帖子 Ubuntu 14/16 下的 Laravel LNMP 线上环境自动部署脚本,你竟然说你找不到
@天上白玉京 谢谢你的回复,这个贴子里面的脚本早已过期,也没有更新,最新的脚本在GITHubhttps://github.com/summerblue/laravel-ubuntu-init放着。
并且我也按照这个脚本完成了最初的环境搭建,可这离最后的完全部署还差得远啦,光是Homestead下代码移到非Hoemstead环境下就还有好多事情要做,比如Nginx里面一些配置文件的定制,数据库的迁移等等,详情请看我的博客帖子。
可能对老手这些事情都不算什么,问题是对一个新手,很多东西都只能自己摸索,和去网上找一些东拼西凑的文章,Laravel China应该有一个教程详细讲讲Hoemstead开发完成之后怎么移到非Homestead上面去,不然太虎头蛇尾了。
虽说授人以鱼不如授人以渔,但是授人以渔不是一蹴而就,还是先授人以鱼让你能看到成效吧。请照着做:
假定你能熟练使用
apt install
命令安装软件安装
sudo apt install nginx
sudo apt install mysql-server mysql-client mysql-common
sudo apt install php7.2-fpm php7.2-mysqli php7.2-gd php7.2-curl php7.2-mbstring php7.2-pdo-mysql
sudo apt install redis-server
配置
cd /etc/nginx/sites-enabled/
touch www.yourdomain.com
vim www.yourdomain.com
把laravel文档里的部署的内容拷贝进去,里面有几个注意的地方,需要修改
cd /etc/php/7.1/fpm/pool.d/
vim www.conf
修改几个选项,以下是核心配置,还有一些日志之类的你就用默认的吧启动服务
sudo service nginx start
sudo service php-fpm start
sudo service mysql start
注意你的代码的文件夹最好把它所有者设置为
www-data
, 然后上级目录www-data
要有搜索权限,还有记得解析你的域名到你的服务器上。然后应该没什么问题,有的话再问
ubuntu16.04做开发的路过,不会用Git你就不是好程序员,单机运行的话直接搭LAMP然后GIT下来Composer安装一下就可以运行了。有这么难吗?
不踩坑就不会进步。该踩还得踩,不会的就 google 查找资料,LC 的价值不在论坛的帖子,在文档
参考这篇文章
https://www.zhouyingwei.vip/post/4.html
@夜晚的雨 谢谢您
谢谢各位热心的大神,我最后终于找到原因了,最后就是因为bootstrap和storage两个目录没有改权限,一路走过来不容易,我把我遇到的问题都纪录在这篇帖子里面的两个博客地址里面了,希望对后来的小白有所启发。
另外,谢谢回思恋莹 ,如果再早点看到你的帖子就好了,能减少我的好多摸索时间,我最后就是少做了一步改权限的操作,在回思恋莹的帖子里最后一步就是改权限,还是谢谢你。
@夜晚的雨
listen = /run/php/php7.1-fpm.sock
为什么不用端口呢@lovecn 我猜测他是部署一台服务器,nginx 和 php 在同一台服务器的话,使用 socket 更快
@夜晚的雨 确实是在部署一台服务器,LNMP都在同一台服务器,使用socket更快这个是个什么说法呢?该去查看哪一块的资料呢?
@pipiba
socket 全名「unix domain socket」,是 *nix 系統的行程間通訊(IPC)的方式之一。
如果用 socket 基本上你可以視為直接對本機的 RAM 做存取(詳細的存取方式可以自己補一下 Linux/Unix 相關的知識);如果用 TCP socket 它還需要經過本地的 loopback interface、建立 TCP 相關的資源(如三方交握、申請 port 等)
結論而言,如果不做 load balance 、而且不用負載高併發的話,用 socket 相對節省資源、效率高(前提是你的機器資源要足夠),但是如果要做 load balance(例如一台 nginx 擁有很多台 php-fpm 的資源可利用),只有 TCP 的方法可以使用
既然有服务器,那干嘛还用homestead,直接部署到 lnmp 上啊
哈哈哈,我以前也是觉得一直要用homesteat,后来自己在服务器上搭建lnmp环境,也是可以运行的~
那个……https://nginxconfig.io/ , 这个是好东西, 我生产环境的设置都是用这个生成的
所以最终问题还是自己没有认真阅读文档吧:https://learnku.com/docs/laravel/5.7#installing-la...
nginx php composer mysql 然后git clone composer install就可以了 部署已经很简单了
@天上白玉京 我也用这个部署的。。
我根据《Laravel 部署到阿里云 / 腾讯云》成功部署