ubuntu使用lnmp部署laravel

参考了两篇文章,今天终于在阿里云上尝试部署了laravel的环境
一步一步教你部署自己的Laravel应用程序到服务器
从零开始部署 Laravel 项目


准备工作

  • 在阿里云上购买一个ECS实例,本ECS安装环境为 ubuntu 14.04
  • 本文的使用的部署方式为 linux + mysql5.7 + nginx + php7.1

一.安装 Php 7.1


首先用SSH连接到你的服务器,Windows 用户建议使用 SecureCRT 来连接,这是一个收费软件,请自行搜索 XX版 。

登录命令

ssh root@公网IP

1. 准备

安装 Php7.1 之前,要先安装language-pack-en-base这个包,运行:

sudo apt-get update
sudo apt-get install -y language-pack-en-base

这个包是为了解决系统不同语言之间可能发生的冲突,安装之后可以减少许多因语言编码带来的问题。其中-y参数表明直接安装,无需确认。

安装完成之后,运行:

locale-gen en_US.UTF-8

设定语言编码为UTF-8。

接下来安装Git,Vim,运行:

sudo apt-get install git vim

Git 是必备的,你可以很方便的使用Git来拉取远程仓库的代码,vim是一款强大的编辑器,可以帮助你修改一些配置文件,如.env文件,如果的你的服务器已经安装了vim编辑器,可以忽略。

进入正题,安装Php7.1,本教程采用ppa方式安装php7.1,运行:

sudo apt-get install software-properties-common

software-properties-common是add-apt-repository所依赖的包,安装成功后,运行:

sudo LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php

来添加php7的ppa,注意LC_ALL=en_US.UTF-8参数告诉我们系统语言为UTF-8,如果没有,可能会出现错误,如阿里云的服务器。

安装完成之后,运行sudo apt-get update更新安装包,把刚才添加的包拉取下来。
运行apt-cache search php7.1搜索php7.1开头的包检验是否安装成功,输出如下:

root@demo:~# apt-cache search php7.1
php-yaml - YAML-1.1 parser and emitter for PHP
php-apcu - APC User Cache for PHP
php-ssh2 - Bindings for the libssh2 library
php-igbinary - igbinary PHP serializer
php-mailparse - Email message manipulation for PHP
php-libsodium - PHP wrapper for the Sodium cryptographic library
php-propro - propro module for PHP
php-raphf - raphf module for PHP

....................省略...........................

2. 安装

安装php7.1:

sudo apt-get -y install php7.1

安装成功后运行php -v查看是否安装成功,成功的话会输出类似如下信息:

PHP 7.1.0beta2 (cli) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.1.0-dev, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.1.0beta2, Copyright (c) 1999-2016, by Zend Technologies

安装php7.1-mysql,这是 Php7.1 与 mysql 的通信模块:

sudo apt-get -y install php7.1-mysql

安装 fpm,这是Nginx 用来解析php文件的:

sudo apt-get install php7.1-fpm

安装其他必备模块:

apt-get install php7.1-curl php7.1-xml php7.1-mcrypt php7.1-json php7.1-gd php7.1-mbstring

至此与php相关的模块安装安装完成。

二.安装Mysql


直接安装Mysql5.7吧,5.7 可以说是里程碑式的版本,提高了性能,并增加了很多新的特性。特别是新增加的json字段,用过之后你会爱上她的!!

1. 下载.deb

包到你的服务器:

wget http://dev.[MySQL](http://lib.csdn.net/base/mysql).com/get/mysql-apt-config_0.8.1-1_all.deb

2. 然后使用dpkg

命令添加Mysql的源:

sudo dpkg -i mysql-apt-config_0.8.1-1_all.deb

注意在添加源的时候,会叫你选择安装 MySQL 哪个应用,这里选择 Server 即可,再选择 MySQL 5.7 后又会回到选择应用的那个界面,此时选择 Apply 即可。

  1. 安装
sudo apt-get update 
sudo apt-get install mysql-server

安装完成之后运行mysql -V
查看版本:
root@demo:~# mysql -Vmysql Ver 14.14 Distrib 5.7.15, for Linux (x86_64) using EditLine wrapper

  1. 注意
如果你已经通过 ppa 的方式安装了 MySQL 5.6,首先得去掉这个源。
sudo apt-add-repository --remove ppa:ondrej/mysql-5.6# 如果没有 apt-add-repository 先安装上# sudo apt-get install software-properties-common

然后其它和上面一样,**但最后要运行sudo mysql_upgrade -u root -p
升级数据库,

** 如果安装mysql出现问题,需要卸载旧版mysql

sudo apt-get autoremove mysql* --purge
sudo apt-get remove apparmor  
sudo rm /var/lib/mysql/ -R          //非常重要
sudo rm /etc/mysql/ -R               //非常重要

运行sudo service mysql restart
重启数据库,这样你的数据会完好无缺(不出意外的话)**。

三,安装Nginx

简单,运行:

sudo apt-get -y install nginx

即可,然后运行curl localhost
查看是否运行成功。你也可以直接访问你的IP地址,如下:

file
file

如果你打开浏览器发现看到的是Apache的话,可以禁用或删除apache

通过下面的命令来删除Apache

sudo service apache2 stop
update-rc.d -f apache2 remove
sudo apt-get remove apache2

四.配置


1. 配置php:

sudo vim /etc/php/7.1/fpm/php.ini

vim命令输入/fix_pathinfo搜索,将cgi.fix_pathinfo=1改为cgi.fix_pathinfo=0

Why ? 假设有如下的 URL:http://phpvim.net/foo.jpg,当访问 http://phpvim.net/foo.jpg/a.php 时,foo.jpg 将会被执行,如果 foo.jpg 是一个普通文件,那么 foo.jpg 的内容会被直接显示出来,但是如果把一段 php 代码保存为 foo.jpg,那么问题就来了,这段代码就会被直接执行。这对一个 Web 应用来说,所造成的后果无疑是毁灭性的。具体参看:http://www.cnblogs.com/buffer/archive/2011/07/24/2115552.html

2. 编辑fpm的配置文件:

运行:

sudo vim /etc/php/7.1/fpm/pool.d/www.conf

找到listen = /run/php/php7.1-fpm.sock修改为listen = /var/run/php/php7.1-fpm.sock。当然,你也可以不修改,但必须前后一致,后面会用到这个配置。

file
file

3. 配置Nginx:

sudo vim /etc/nginx/sites-available/default

主要是配置server这一部分,最终配置如下:

server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;
        root /var/www/your-laravelproject-name/public;
        index index.php index.html index.htm;
        # Make site accessible from http://localhost/
        server_name lufficc.com www.lufficc.com;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ /index.php?$query_string;
                # Uncomment to enable naxsi on this location
                # include /etc/nginx/naxsi.rules
        }

        location ~ \.php$ {
                try_files $uri /index.php =404;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
        }
} 

解释:

  • root:是你的项目的public目录,也就是网站的入口
  • index:添加了,index.php,告诉Nginx先解析index.php文件
  • server_name:你的域名,没有的话填写localhost
  • location / try_files修改为了try_files $uri $uri/ /index.php?$query_string;
  • location ~ .php$部分告诉Nginx怎么解析Php,原封不动复制即可,但注意:fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;的目录要和fpm的配置文件中的listen一致。

4. 创建网站目录,Laravel项目:

如果你还没有/var/www目录,运行mkdir /var/www,然后将Nginx的用户名和用户组www-data分配给它:

sudo chown -R www-data:www-data   项目路径

然后进入到/var/www/目录,cd /var/www/。这个www目录就是放置你的网站文件的目录(可以多个)。

这里创建Laravel项目可以使用git 把已有的项目拉下来或使用 composer 来新建

1. git方式,假设项目名称为laraveldemo

首先cd到 /var/www/ 目录

git clone  代码仓库路径

再次给予目录权限,运行(在/var/www/laraveldemo下面):

sudo chmod -R 775 storage/
sudo chown -R www-data:www-data /var/www/laraveldemo

注:上面这一步十分重要
记得修改前面步骤的nginx配置的root 位置 为
root /var/www/laraveldemo/public;

最后!!重启nginx,fpm,访问你的ip地址,不出意外,安装成功,部署完成!

sudo service nginx restart
sudo service php7.1-fpm restart

2. composer方式

安装 composer

$ curl -sS https://getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer

由于被墙的原因,第一条指令通常会失败,可以直接在composer官网下载composer.phar压缩包,然后再移动到 /usr/local/bin/composer

如果发现composer指令提示权限问题无法使用,可以增加权限

 chmod +x  composer.phar

安装完 composer后可以使用 composer来安装larvavel项目

在使用 composer来安装larvavel项目前,你必须确认你的ubuntu系统安装了zip和uzip包,如果木有,则需要 先安装zip和uzip

apt-get install zip unzip

使用 composer来安装larvavel项目

cd /var/www/
composer create-project laravel/laravel laraveldemo --prefer-dist "5.1.*"

然后重复 Git方式安装 的 最后几个步骤: 修改nginx配置文件 -> 指定项目用户与组,修改权限

至此,本教程基本结束

node.js安装


如果有些库需要用到node.js,可自行安装
参考ubuntu安装node.js

方式一 apt-get

sudo apt-get update
sudo apt-get install nodejs
sudo apt-get install npm

方式二 添加ppa源方式安装

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -

For the older LTS (the 4.x branch), use:

curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -

For the currently active release (the 7.x branch), use:

curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -

The PPA will be added to your configuration and your local package cache will be updated automatically. After running the setup script from nodesource, you can install the Node.js package in the same way that you did above:

sudo apt-get install nodejs

The nodejs package contains the nodejs binary as well as npm, so you don't need to install npm separately. However, in order for some npm packages to work (such as those that require building from source), you will need to install the build-essentials package:

sudo apt-get install build-essential

yarn安装


参考
一个替代npm包管理器方案的选择

你需要先配置仓库:

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt-get update && sudo apt-get install yarn
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,386评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,142评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,704评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,702评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,716评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,573评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,314评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,230评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,680评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,873评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,991评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,706评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,329评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,910评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,038评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,158评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,941评论 2 355

推荐阅读更多精彩内容