详解如何在云服务器上部署Laravel


Posted in PHP onJune 30, 2017

学习PHP和Laravel已经有一段时间了,但是所有的代码都是跑在本地的虚拟主机上的,于是去腾讯云申请了一个月的免费云主机,想把项目部署到云服务器上。

不得不说这里面的坑实在是有点多,让我这个初次接触服务器的小白摸不清头脑。在配置好服务器之后,部署一个Laravel项目更是费劲心思,于是乎想记录下部署Laravel项目的过程。

PS: Linux真是越用越有感觉的系统,回家在台式机上也要装个Linux敲代码用。

环境简介

在操作系统的选择上,我选用了Linux ubuntu16.04的系统,使用的是LNMP的环境,即 Linux + Nginx + Mysql + PHP的环境。

删除Apache

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

先用这三条命令来删除Apaceh 之后更新一下包列表

sudo apt-get update

1.安装Nginx

sudo apt-get install nginx

在安装完Nginx之后,要重启nginx

sudo service nginx start

执行完之后,在浏览器输入云服务器分配给你的公网ip,就可以看到welcome to nginx的界面了

2. 安装Mysql

sudo apt-get install mysql-server mysql-client

过程中会提示你设置Mysql的密码,就跟平时的密码设置一样,一次输入,一次确认。密码确认完毕后基本等一会就安装好了。尝试

mysql -u root -p

如果登录成功,那Mysql就正确安装了。

3.安装PHP

sudo apt-get install php5-fpm php5-cli php5-mcrypt

只有通过php5-fpm,PHP在Nginx下才能正常运行,遂,安装之。

至于php5-mcrypt,有些PHP框架会依赖于这个,比如Laravel就是,所以也把它装上了。

题外话,这里的php5我自己在部署时安装了php7 如果想尝试的也可以试试。

4.配置PHP

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

打开PHP配置文件,找到cgi.fix_pathinfo选项,去掉它前面的注释分号;,然后将它的值设置为0,如下

cgi.fix_pathinfo=0

5. 启用php5-mcrypt:

sudo php5enmod mcrypt

6.重启php5-fpm:

sudo service php5-fpm restart

在搭建完LEMP环境之后,首先要明确两个重要目录

Nginx的默认root文件夹

/usr/share/nginx/html

Nginx的服务器配置文件所在目录

/etc/nginx/sites-available/

上面两个目录记住就好,很常用,先摆出来

下面一步一步在云服务器上部署Laravel

1.创建网站的根目录

sudo mkdir -p /var/www

2.配置nginx服务器

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

打开nginx的配置文件之后,找到server这一块,大概是长这个样子的

server {
  listen 80 default_server;
  listen [::]:80 default_server ipv6only=on;

  root /usr/share/nginx/html;
  index index.html index.htm;

  server_name localhost;

  location / {
    try_files $uri $uri/ =404;
  }
}

其中root,index ,server_name和location这几行需要稍微修改一下

root修改

root /var/www/laravel/public;

这里就是将nginx服务器的根目录指向Laravel的public文件夹下,后续的Laravel项目的代码我们会放在我们之前创建的/var/www/laravel目录下

index修改

index index.php index.html index.htm;

这里需要注意的是,将index.php排在最前面

server_name修改

server_name server_domain_or_IP;

将server_domain_or_IP修改为你的公网IP

location修改

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

修改完是这样的:

server {
 listen 80 default_server;
 listen [::]:80 default_server ipv6only=on;

 root /var/www/laravel/public;
 index index.php index.html index.htm;

 server_name server_domain_or_IP;

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

最后我们还需要配置一下Nginx,让其执行PHP文件。同样是在这个文件里,在location下方添加下面的配置:

server {
 listen 80 default_server;
 listen [::]:80 default_server ipv6only=on;

 root /var/www/laravel/public;
 index index.php index.html index.htm;

 server_name server_domain_or_IP;

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

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

注意,最下面的location ~ \.php$是自己加上去的:

配置完之后重启Nginx,使上面的配置项生效。

sudo service nginx restart

3.创建Laravel项目

在配置完nginx后,怎么获取Laravel的项目代码呢?有以下几种方法:

(1).直接composer安装

直接通过composer来安装,你可以在服务器上通过执行

cd ~
curl -sS https://getcomposer.org/installer | php

上面命令会安装composer

composer全局使用:

sudo mv composer.phar /usr/local/bin/composer

然后在/var/www目录下直接执行

sudo composer create-project laravel/laravel laravel

因为我们之前创建/var/www目录,你可以直接cd /var/www然后执行上面的命令。然后坐等安装完成。

(2).直接上传代码

使用下面命令上传

scp -r laravel root@your_IP:

然后在服务器上将laravel移动到/var/www目录下

sudo mv laravel/ /var/www

(3).使用Git和Coding平台

个人比较喜欢使用git来上传代码,可以很方便的更新代码和进行回滚,一旦版本更新出Bug我可以借助Git的强大版本管理能力来修复Bug。流程大概是这样:

本地代码---->Github---->云服务器

既然要使用git,那么先在云服务器上安装git:

sudo apt-get install git

安装完成就可以使用git了,然后在Github上创建一个私有项目laravel,里面包含所有该Laravel项目所需代码。

一旦本地代码都推送到Coding,然后在/var/www目录下直接使用

git clone your-project-git-link

your-project-git-link替换为你Github上的laravel项目地址

5.BINGO

在浏览器输入:http://server_domain_or_IP

至此,你可以在服务器上随意地用Laravel了,keep coding!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP 创建文件(文件夹)以及目录操作代码
Mar 04 PHP
php中++i 与 i++ 的区别
Aug 08 PHP
mysqli_set_charset和SET NAMES使用抉择及优劣分析
Jan 13 PHP
PHP5中Cookie与 Session使用详解
Apr 30 PHP
使用php记录用户通过搜索引擎进网站的关键词
Feb 13 PHP
Drupal7中常用的数据库操作实例
Mar 02 PHP
php实现图片局部打马赛克的方法
Feb 11 PHP
PHP多线程编程之管道通信实例分析
Mar 07 PHP
php截取指定2个字符之间字符串的方法
Apr 15 PHP
PHP使用内置函数生成图片的方法详解
May 09 PHP
PHP中遍历数组的三种常用方法实例分析
Jun 24 PHP
PHP反射基础知识回顾
Sep 10 PHP
[企业公众号]升级到[企业微信]之后发送消息失败的解决方法
Jun 30 #PHP
ThinkPHP实现登录退出功能
Jun 29 #PHP
PHP实现微信图片上传到服务器的方法示例
Jun 29 #PHP
PHP微信模板消息操作示例
Jun 29 #PHP
PHP开发的微信现金红包功能示例
Jun 29 #PHP
PHP实现微信模拟登陆并给用户发送消息的方法【文字,图片,图文】
Jun 29 #PHP
php实现微信模拟登陆、获取用户列表及群发消息功能示例
Jun 28 #PHP
You might like
为什么《星际争霸》是测试人工智能的理想战场
2019/12/03 星际争霸
让PHP COOKIE立即生效,不用刷新就可以使用
2011/03/09 PHP
php解析html类库simple_html_dom(详细介绍)
2013/07/05 PHP
PHP批量上传图片的具体实现方法介绍.
2014/02/26 PHP
php实现httpclient类示例
2014/04/08 PHP
php PDO异常处理详解
2016/11/20 PHP
关于Javascript模块化和命名空间管理的问题说明
2010/12/06 Javascript
Js 代码中,ajax请求地址后加随机数防止浏览器缓存的原因
2013/05/07 Javascript
JavaScript bold方法入门实例(把指定文字显示为粗体)
2014/10/17 Javascript
为什么JavaScript没有块级作用域
2016/05/22 Javascript
深入探讨Vue.js组件和组件通信
2016/09/12 Javascript
javascript设计模式之Adapter模式【适配器模式】实现方法示例
2017/01/13 Javascript
vue组件如何被其他项目引用
2017/04/13 Javascript
详解用Node.js实现Restful风格webservice
2017/09/29 Javascript
js 客户端打印html 并且去掉页眉、页脚的实例
2017/11/03 Javascript
利用ECharts.js画K线图的方法示例
2018/01/10 Javascript
浅谈对于react-thunk中间件的简单理解
2019/05/01 Javascript
Vue 中 template 有且只能一个 root的原因解析(源码分析)
2020/04/11 Javascript
解决nuxt页面中mounted、created、watch执行两遍的问题
2020/11/05 Javascript
python实现telnet客户端的方法
2015/04/15 Python
详解Python的Django框架中的通用视图
2015/05/04 Python
Python的Django中django-userena组件的简单使用教程
2015/05/30 Python
python实现的简单FTP上传下载文件实例
2015/06/30 Python
Python中列表和元组的相关语句和方法讲解
2015/08/20 Python
TensorFlow学习之分布式的TensorFlow运行环境
2020/02/05 Python
解决Python 函数声明先后顺序出现的问题
2020/09/02 Python
Python中读取文件名中的数字的实例详解
2020/12/25 Python
加拿大租车网站:Enterprise Rent-A-Car
2018/07/26 全球购物
耐克中国官方商城:Nike中国
2018/10/18 全球购物
简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程
2016/01/06 面试题
介绍一下UNIX启动过程
2013/11/14 面试题
入党后的感想
2015/08/10 职场文书
导游带团欢迎词
2015/09/30 职场文书
幼儿园心得体会范文
2016/01/21 职场文书
2019年大学生学年自我鉴定!
2019/03/25 职场文书
关于vue-router-link选择样式设置
2022/04/30 Vue.js