laravel5.2部署到虚拟主机

laravel5.2部署到虚拟主机

laravel版本:5.2
虚拟主机:万网
迁移

1.先把所有文件复制到网站根目录
2.由于访问的时候入口文件在public目录下面,这时候访问url会变成url/public/,重写规则跳转就行了,在根目录新建.hatcess文件

    <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteCond %{REQUEST_URI} !^public
        RewriteRule ^(.*)$ public/$1 [L]
    </IfModule>

3.打开config/app.php

    "key" => env("APP_KEY", "..."), //32位字符串
    "cipher" => "AES-256-CBC",

改为

    "key" => "你的key值",//16位字符,例如qwertyuiasdfzxcv
     
    "cipher" => "AES-128-CBC",

由于万网不支持"AES-256-CBC"所以用128位加密,256位加密使用32位字符串,128位使用16位字符串
4.到这一步基本就没有什么问题了,但是在使用ajax的时候,post方法有可能会被301跳转然后变成get
解决方案:
打开public目录下的.htaccess文件删除下面这一段

      # Redirect Trailing Slashes If Not A Folder...
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)/$ /$1 [L,R=301]

5.好了,我的使用过程中就没什么问题了(注:把在控制台把万网的php版本调到最高,现在是5.5)

补充一点很多人容易忽略的,配置文件不要写在.env文件里面,虚拟机一般不支持,换到config目录下的相应配置文件下

 

============其他配置====================

    第一步
    首先要把laravel 项目FTP 上传到虚拟机上
    第二步
    把根目录下的 server.php 重命名为 index.php
    第三步
    修改.env文件的数据库配置等
    第四步
    修改config文件夹下 的 app.php 中的 Encryption Key 下的配置 改为

"key" => env("APP_KEY", "1234567890qwerty"),
"cipher" => "AES-128-CBC",

    因为虚拟机不支持’AES-256-CBC’所以用128位加密,256位加密使用32位字符串,128位使用16位字符串,需要查看错误的话
    就把debug打开
    第五步
    我在.env文件改了 好像没起作用 索性就去 config 文件夹下的database.php 文件中修改 数据库地址就是
    虚拟机里面数据库的地址 照着数据库填就ok,然后修改项目根目录的.env文件名为.env_bak或者删除.env文件
    第六步
    由于访问的时候入口文件在public目录下面,这时候访问url会变成url/public/,重写规则跳转就行了,在根目录新建.htaccess文件,写入一下内容

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

    第七步
    到这一步基本就没有什么问题了,但是在使用ajax的时候,post方法有可能会被301跳转然后变成get 所以就需要
    打开public目录下的.htaccess文件删除下面这一段:

# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]

    补充一个问题
    config/database.php 里面 因为DMS 数据库版本是 mysql 5.1.73
    "charset" => "utf8", "collation" => "utf8_unicode_ci",
    在DMS数据库 导入的时候 编码 要是 utf-8 哦 不然 前台页面 乱码

============其他设置====================

拿laravel5.1来说:在根目录下创建一个local文件夹,把网站根目录下除了public文件夹以外所有文件及文件夹剪切到local文件夹中然后把public文件夹下的所有文件剪切到网站根目录,接着删除public文件夹,这样入口就变成根目录而不是public了,接下来

1、打开根目录下的index.php(之前/public/index.php)将

    一、require __DIR__."/../bootstrap/autoload.php";

    修改为

    require __DIR__."/local/bootstrap/autoload.php";将

    二、$app = require_once __DIR__."/../bootstrap/app.php";

    修改为

    $app = require_once __DIR__."/local/bootstrap/app.php";

    三、打开/local/config/app.php将

    "key" => env("APP_KEY", "SomeRandomString"),

    "cipher" => "AES-256-CBC",

    修改为

    "key" => env("APP_KEY", "1234567890qwerty"),

    "cipher" => "AES-128-CBC",

    注释:其中key使用长度为16的随机字符串,由于万网不支持"AES-256-CBC"所以用128位加密就可以了,128用16个随机字符串做key,256用32个。