Ubuntu 14/16 下的 Laravel LNMP 线上环境自动部署脚本

file

说明

此脚本用于在一台全新的 Ubuntu 14.04 LTS( Ubuntu 16 请使用这个脚本) 上部署适合 Laravel 使用的 LNMP 生产环境。

此脚本参照了 Homestead 环境设置脚本 ,并做了更加适用于生产环境的效率和安全调优。

项目地址:https://github.com/summerblue/laravel-ubun...

软件信息

  • Ubuntu 14.04 / Ubuntu 16 请使用这个脚本
  • Git
  • PHP 7.1
  • Nginx
  • MySQL 5.7
  • Sqlite3
  • Composer
  • Node 6 (With PM2, Bower, Grunt, and Gulp)
  • Redis
  • Memcached
  • Beanstalkd

安装步骤

1). 下载 deploy.sh 脚本

wget https://raw.githubusercontent.com/summerblue/laravel-ubuntu-init/master/deploy.sh
chmod +x deploy.sh

2). 设置 MYSQL 密码

vi deploy.sh 根据情况修改以下:

# Configure
MYSQL_ROOT_PASSWORD="这里填写复杂的密码"
MYSQL_NORMAL_USER="estuser"
MYSQL_NORMAL_USER_PASSWORD="这里填写复杂的密码"

3). 开始安装

有需要的话可以使用网易镜像加速:

wget http://mirrors.163.com/.help/sources.list.trusty -O /etc/apt/sources.list

开始安装:

./deploy.sh

注:请使用 root 运行。

安装后会有类似输出:

--
--
It's Done.
Mysql Root Password: xxx你的密码xxx
Mysql Normal User: estuser
Mysql Normal User Password: xxx你的密码xxx
--
--

安装完以后的配置和注意事项

1. 修改站点目录权限

通过此脚本配置的 Nginx 将使用 www 用户权限,因此需要在你的站点根目录下运行以下命令更新权限。

cd /data/www/{你的网站目录}
chown www:www -R ./

2. 添加站点的 Nginx 配置

下面是站点的 Nginx 配置模板,写入按照域名命名的文件中,并放入到 /etc/nginx/sites-enabled 目录下。

如:/etc/nginx/sites-enabled/phphub.org

server {
    listen 80;
    server_name {你的域名};
    root "{站点根目录}";

    index index.html index.htm index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    access_log /data/log/nginx/{你的网站标识}-access.log;
    error_log  /data/log/nginx/{你的网站标识}-error.log error;

    sendfile off;

    client_max_body_size 100m;

    include fastcgi.conf;

    location ~ /\.ht {
        deny all;
    }

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        #fastcgi_pass /run/php/php7.0-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

配置完以后重启 Nginx 即可。

service nginx restart

Practice makes perfect.

本帖已被设为精华帖!
本帖由系统于 3年前 自动加精
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 110

在16下面进行安装,安装完成后nginx起不起来,发现需要执行apt-get purge apache2 后nginx才能起起来。

1年前 评论

点赞一直失败,后来才发现自己没登陆,没提示登录了么?

3年前 评论

帮你把 Mysql 版本号标注出来了。

用过 Mysql 的 json 字段便离不开了。 :smile:

3年前 评论

@zhuzhichao :bug: 小能手

3年前 评论

Ubuntu 16.10.2版本的有没有

3年前 评论

点赞一直失败,后来才发现自己没登陆,没提示登录了么?

3年前 评论
Summer

@宋小北 多谢反馈,已 fix

3年前 评论

好像可以替代 forge 了

3年前 评论

安装完默认的 web 服务器是 apache?

3年前 评论
Destiny

:punch: 支持!

3年前 评论
Summer

@dinghua 这脚本没安装 apache,估计是你的 ubuntu 镜像里带着的,remove 掉即可。

3年前 评论

我都重新配置服务器,结果
Redis
Beanstalkd
这两个没有啊,咋回事

3年前 评论

debian的话,貌似修改一下也能用?

3年前 评论

我想在阿里云上安装,但是不想安装mysql因为我在使用阿里云的RDS,我怎么做呢?

3年前 评论

这个不错,省了好多事,不过是否能自定义选择一些组件,如我楼上的那样需求一样

3年前 评论
JobsLong

@隔壁老王 只是一些安装脚本,可以考虑 fork 一份根据自己的需要修改;

3年前 评论

@zhuzhichao 再试试PostgreSQL的JSONB你会觉得MYSQL很渣。

3年前 评论

@cevin :+1: PostgreSQL 的 JSONB 确实先进,不过偶尔少量数据用Mysql 的 JSON 处理已经够用了,如果这类数据多了会使用 mongodb 里做存储的。

3年前 评论

·service nginx restart· 提示 Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details. 不理解什么意思,也搜不到相关解释,重启服务器就好了。本地也是.

3年前 评论

擦能靠谱点吗 文件件都不见了

2年前 评论
Summer

@ydxred 有 bug?愿听赐教

2年前 评论

@Summer 抱歉!我是操作有误...

2年前 评论

为什么我配置完或者稍微改了一下配置nginx就启动不来了啊
root@ydxred:/etc/nginx/sites-enabled# service nginx restart
stop: Unknown instance:
nginx stop/pre-start, process 3318
root@ydxred:/etc/nginx/sites-enabled#
这是什么原因啊

2年前 评论
Chasers9527

@Class 我的也是这个情况

2年前 评论
Chasers9527

@Summer
ubuntu@VM-242-95-ubuntu:~$ systemctl status nginx

  • nginx.service - A high performance web server and a reverse proxy server
    Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
    Active: failed (Result: exit-code) since Thu 2017-03-09 07:55:04 CST; 1min 37s ago
    Main PID: 7222 (code=exited, status=0/SUCCESS)

  • Mar 09 07:55:04 VM-242-95-ubuntu systemd[1]: Starting A high performance web server and a reverse proxy server...
  • Mar 09 07:55:04 VM-242-95-ubuntu nginx[18329]: nginx: [emerg] unknown directive "erver" in /etc/nginx/sites-enabled/laragh
  • Mar 09 07:55:04 VM-242-95-ubuntu nginx[18329]: nginx: configuration file /etc/nginx/nginx.conf test failed
  • Mar 09 07:55:04 VM-242-95-ubuntu systemd[1]: nginx.service: Control process exited, code=exited status=1
  • Mar 09 07:55:04 VM-242-95-ubuntu systemd[1]: Failed to start A high performance web server and a reverse proxy server.
  • Mar 09 07:55:04 VM-242-95-ubuntu systemd[1]: nginx.service: Unit entered failed state.
  • Mar 09 07:55:04 VM-242-95-ubuntu systemd[1]: nginx.service: Failed with result 'exit-code'.
    lines 1-12/12 (END)

想哭

2年前 评论

服务器ubuntu 选择32位和64位会有影响吗?

2年前 评论
Summer

@颜⑧ 不能直接用官方的 settler 脚本,里面有很多安全问题。

2年前 评论

@xhh110 我的也是这样 所有的软件都没有安装成功,好像是依赖的问题,我看到安装过程中 好多报错, 依赖不匹配。我是刚装的16.04

2年前 评论
Chasers9527

@huazi 我也是依赖问题。。。所以直接换回centos。。。

2年前 评论
Summer

@xhh110
@huazi 从你的报错信息看是站点没配置对,目测是把 server 黏贴为 erver

Mar 09 07:55:04 VM-242-95-ubuntu nginx[18329]: nginx: [emerg] unknown directive "erver" in /etc/nginx/sites-enabled/laragh
Mar 09 07:55:04 VM-242-95-ubuntu nginx[18329]: nginx: configuration file /etc/nginx/nginx.conf test failed
2年前 评论

真是太好用了,一键安装 省时省力啊!但是大家线上的服务有用Centos 的吗!有什么脚本值得参考吗。

2年前 评论

16.04下,依次执行:apt-get update apt-get -y upgrade apt-get install -y software-properties-common curl之后,再按照步骤走,就没问题了。不然会导致:software-properties-common 安装不上,然后各种问题。 阿里云初始化N次后总结出来的。希望后面同学注意安全。哈哈
@Summer 老大,这个是网易镜像的问题吗?

2年前 评论

@Summer 我跟着这个教程上线了一个小博客,输入域名后提示EOF sumer哥能给指个方向吗?我以为是权限问题然后看了下权限是775,然后我改成了777,但访问是还是EOF.

2年前 评论

请教一下,我运行完脚本后,做到设置Nginx的这一步,但是在etc下没有找到Nginx?@Summer

file

2年前 评论

日后升级的话如何升级,apt?

2年前 评论

@Summer Supervisor 官方推荐的进程监控软件,有考虑弄到脚本里面吗?

2年前 评论

发现个问题,在16下运行脚本的时候由于安装php的时候会安装 apache 的依赖,导致在重启 nginx 的时候因为 80 被占用导致
nginx 重启失败,所以需要移出 apache 相关的软件,可能上面回复 apache 的原因就是在此。

2年前 评论

在16下面进行安装,安装完成后nginx起不起来,发现需要执行apt-get purge apache2 后nginx才能起起来。

1年前 评论

隔壁京东云新买服务器,除了 composer 似乎出了问题,手动复制脚本代码执行外,其余成功安装。

1年前 评论

/etc/nginx/sites-enabled# service nginx restart
stop: Unknown instance:
nginx stop/pre-start, process 21910 求教题主

1年前 评论

@Summer 有几个问题请教一下。

  1. 为什么 nginx 不选择使用最新的稳定版,而选择使用开发版?
    * 'community':  Community Build
    * 'development':  NGINX Mainline
    * 'nightly':  Nightly Snapshot
    * 'stable':  NGINX Stable 
  2. 在部署脚本中没有关于php-fpm进程数量的优化,个人认为如果这样处理并发能力上会有缺陷。
1年前 评论

我就想问下,这个环境有mssql驱动吗?项目用的是sql server数据库

1年前 评论
Yvan

@Summer 这帖子还可以用吗?是不是 Laravel 5.5 需要PHP 7.1 以上了?

1年前 评论

着急

第一次用这个脚本部署环境,部署完了把项目放进去提示:

could not find driver

1年前 评论

我用deploy-16的脚本安装的环境,php的扩展一个都没有加载,配置文件也很难找,试试14版本的再说

1年前 评论

请问17可以正常使用吗?

1年前 评论

Ubuntu 16.04 使用此脚本安装一切正常,唯独 composer 没有安装

1年前 评论

@Class 我也是这个问题,请问是怎么解决的

1年前 评论
lmaster

@Summer Ubuntu 16.04安装完成后发现php没mbstring扩展,这个怎么添加扩展

1年前 评论

在阿里云上使用ubuntu 16.04 安装记录:

  • 失败1: 安装 software-properties-common 失败, 提示python3 版本过高,使其依赖不能正常安装
  • 解决方式: 先apt-get update 然后, apt-get install -y software-properties-common, 然后 apt-get -y upgrade

  • 失败2: nginx 无法正常启动, 我这边的原因是 80 端口被 apache2 占用,最初删除了apache2, 当中可能在装依赖的时候又把apache2装上了
  • 解决方式:停止apache服务,删除它

  • 失败3: 执行composer install ,出现一系列的少php扩展的错误
  • 解决方式: 安装php扩展的时候指定前缀,如:php-mbstring php-xml 改成 php7.1-mbstring php7.1-xml 等
1年前 评论
ruodee

阿里云 1核 1G入门云服务器安装成功,最后出现:

--
It's Done.
Mysql Root Password: xxxxxx
Mysql Normal User: estuser
Mysql Normal User Password: xxxxx

--

1年前 评论

Ubuntu 14.04 使用此脚本安装正常

1年前 评论
ShMichaelLi

ubuntu 16 版本 安装后却是存在apache被安装,而且为默认服务器。

1年前 评论

问下 那个脚本 centos系统的话 怎么改能使用吗

1年前 评论

使用脚本安装完成后,需要自己建立 /data/www/{你的网站目录} 和/data/log/nginx/ 目录,否则nginx会出现错误无法重启。
另外,安装脚本后,nginx如果ubuntu reboot不会重新启动,需要通过 /etc/init.d/nginx start或者 service nginx start进行启动,所以,如果想重启后直接启动,可以sudo chmod a+x /etc/init.d/nginx,然后 vi /etc/rc.local,在 exit0 前面增加一行 /etc/init.d/nginx start 即可。

1年前 评论

@wuqi80 大佬,这个安装完后怎么用啊,直接把本地文件传到网站根目录吗

1年前 评论

用腾讯云ubuntu14使用这份攻略安装无报错,
但最后打开的网站却还是显示apache2(尽管端口80显示是nginx)。
办法是清除apache2,上面说的apt-get purge apache2不够,
我开始使用的命令为:
sudo apt-get --purge remove apache-common

sudo apt-get --purge remove apache
sudo find /etc -name "apache" |xargs rm -rf
sudo rm -rf /var/www
sudo rm -rf /etc/apache2
上述删除后发现还是不行,后面发现最关键的要到/etc/php/7.1中sudo rm -rf apache2(这个apache应该是安装php带上的),这时候打开网站就显示为nginx了

后面发现楼上提到这篇文章很好:
博客:阿里云 ECS 服务器 Ubuntu14.04 部署 Laravel 5.5 项目上线
亲测可行,本文中的一键安装后面的步骤也可以参考上文

1年前 评论
王成涛

一直在想怎样才能把 Homestead 的环境配置部署到服务器上,找了好久好久,终于找到了 :+1: :+1: :+1:

1年前 评论
JeffLi

@haoxing a啊 我也是腾讯云 ubuntu16,执行./deploy-16.sh 的时候,报错

root@VM-0-15-ubuntu:/home/ubuntu# ./deploy-16.sh
deploy-16.sh: line 7: syntax error near unexpected token newline
deploy-16.sh: line 7: <!DOCTYPE html>
root@VM-0-15-ubuntu:/home/ubuntu#

百度两天了没解决。。

1年前 评论

你好,我按照上面的流程执行了,没有问题。但是我执行phpize命令提示,phpize尚未安装 这个问题怎么解决? find / -name phpize 没有找到。phpize不是自带的吗

1年前 评论

出个docker 部署就更好了

1年前 评论
xin6841414

@MacDino 阿里云14.04 有这个问题, 安装完 浏览器访问 直接无法访问, 执行service nginx restart 失败 执行你的命令(apt-get purge apache2)后 nginx 才起来,但是 还是无法访问, 哭晕,这教程不适合萌新看啊,

1年前 评论

file

我不明白为什么会这样, 不知道是否有人与我遇到同样的问题, 如果你尝试帮我解决这个困惑, 我会非常感谢 :wink:

1年前 评论

--

It's Done.
Mysql Root Password: xwh0412
Mysql Normal User: estuser
Mysql Normal User Password: xwh0412

--#!/usr/bin/env bash
Error: MYSQL_ROOT_PASSWORD not define!!

求助

1年前 评论
wsure

执行php artisan migrate,报错:

In Connection.php line 664:
    could not find driver (SQL: select * from information_schema.tables where table_schema = Test and table_name = test_migrations)
In PDOConnection.php line 50:
    could not find driver
In PDOConnection.php line 46:
    could not find driver

求大神解答~,~

1年前 评论

@lcyitar 建立/data/log/nginx/ 目录 log 添加777权限 :flushed:试试

1年前 评论

请问mysql没有安装该怎么处理?
service mysql 是未识别的命令
运行脚本中的apt-get install -y mysql-server报错:
mysql-server : Depends: mysql-server-5.5 but it is not going to be installed

1年前 评论
晨读秀
wget https://github.com/summerblue/laravel-ubuntu-init/blob/master/deploy-16.sh

求解一下,下载下来 vi 编辑的时候文件里边是html代码?这个正确吗?

执行 vi deploy-16.sh,求大佬帮助下

file

file

1年前 评论
Ciroy

发现脚本里面的删除 apache 这个并没有删掉。然后nginx 的自启动没有,这样服务器宕机后重启的话,还需要单独打开nginx很不方便,建议改改。

1年前 评论

file
前面都没出错,为什么重启的时候没总是失败呢,域名也访问不了,求教

1年前 评论

出一个 CentOs 的呗 :grin:

1年前 评论

安装完成,但是 composer 无法使用?

file

file

1年前 评论

UCloud ubuntu 16 同样的 composer 没有安装上,其他正常

1年前 评论

另使用 root 运行很不安全吧

1年前 评论

===> 开始下载...
===> 下载完毕

安装脚本位于: /root/laravel-ubuntu-init
===> 正在初始化系统 [DONE]
===> 正在初始化软件源 [DONE]
===> 正在安装基础软件 [DONE]
===> 正在安装 PHP [DONE]
===> 正在安装 Mysql / Nginx / Redis / Memcached / Beanstalkd / Sqlite3 [DONE]
===> 正在安装 Nodejs / Yarn [DONE]
===> 正在安装 Composer [DONE]
安装完毕
Mysql root 密码:wb5XQCubN6rRDvZg5SzlIyrbeqXPmXR4
请手动执行 source ~/.bash_aliases 使 alias 指令生效。

已实践成功 :fireworks: :fireworks:

1年前 评论

vutlr 16.04 部分安装失败。。。

1年前 评论

这是一个坑吧,哈哈哈。被玩死,知道是这样就自己装一遍了。

1年前 评论

链接怎么失效啦

1年前 评论

@Kevinvinvin 没有安装还是没加入环境变量

1年前 评论

请问一下,我申请了腾讯云的学生服务器,只有一个公网ip,没有备案的域名,我可以成功地用大神的脚本部署,就是不知道怎么访问,直接访问ip的话是一个 Nginx 服务器的版本信息。

1年前 评论
harryzhang

https://raw.githubusercontent.com/summerbl... 14版本的脚本报404了?

1年前 评论
likunyan

我看了下download.sh,只支持16.04,这个文章需要修改下了吧。

1年前 评论

貌似用不了了,这个

1年前 评论
yanrui

文章发布太久,上面一些连接没法使用,本人测试使用了16.04的版本,完全没有问题,下面是GitHub地址:https://github.com/summerblue/laravel-ubun...

1年前 评论

請管理員更新 Ubuntu 16 版本教程的連接。謝謝!@Summer

11个月前 评论
DKChen

说明处点击"Ubuntu 16 请使用这个脚本",出现404。需要更新跳转地址了!

11个月前 评论

file
百度云16.04 amd 64bit,总是到这一步就停掉了。
使用apt-update 过了还是一样。各位大佬求助啊。
我使用的是github上面的教程

11个月前 评论

现在应该要用docker来部署项目啦,紧跟趋势

10个月前 评论

file

第一步就下载失败

10个月前 评论

file
一直显示正在初始化系统 ,是不是有什么问题呀,要多久呢

10个月前 评论

@Benny 我怎么装不上,阿里云

10个月前 评论

Ubuntu 16 请使用这个脚本 404了!!!!

10个月前 评论

Ubuntu 16 请使用这个脚本
这个链接打不开了。。。。。

9个月前 评论

@Summer Ubuntu 16 的脚本 页面404

7个月前 评论

@Summer 东西没了~~~ :grin:

6个月前 评论

脚本无法找到了

4个月前 评论

我使用的是ubuntu16.04,在安装的到正在初始化软件源的时候退出了安装
root@mingzheng-virtual-machine:/home/mingzheng# wget -qO- https://raw.githubusercontent.com/summerbl... - | bash
===> 开始下载...
===> 下载完毕

安装脚本位于: /root/laravel-ubuntu-init
===> 正在初始化系统... [DONE]
===> 正在初始化软件源...root@mingzheng-virtual-machine:/home/mingzheng#
我想请问各位大神一下这个问题如何解决,谢谢。

4个月前 评论

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!