国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Laravel5.4 博客部署到阿里云服務器

JowayYoung / 1100人閱讀

摘要:前邊已經學會在本地用進行開發了,現在就讓我們將本地開發的項目部署到阿里云服務器,來次實戰操作,阿里云部署環境阿里,,使用服務器,登錄。

前邊已經學會在本地用Homestead進行開發了,現在就讓我們將本地開發的項目部署到阿里云服務器,來次實戰操作,阿里云部署環境:阿里ECS,Ubuntu,使用Nginx服務器,SSH登錄。
一、服務器配置

如果你的服務器是剛申請的,則必須做一些基礎的配置,如安裝Nginx,MySQL,然后創建項目目錄,然后對Nginx進行配置,我的項目放在 /var/www/ 目錄下。

Nginx的默認root文件夾

/usr/share/nginx/html

Nginx的服務器配置文件所在目錄

/etc/nginx/sites-available/

上面兩個目錄記住就好,很常用,先擺出來

配置nginx服務器

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

重啟 nginx:

> sudo service nginx restart;

5.配置新的php.ini

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

#將cgi.fix_pathinfo=1這一行去掉注釋,將1改為0。

6.配置php-fpm

sudo vim /etc/php/7.0/fpm/pool.d/www.conf
#  配置這個 listen = /var/run/php/php7.0-fpm.sock

注意:這個文件php7.0-fpm.sock 的目錄每個服務器的安裝位置可能不同,我的是在 /var/run/php/php7.0-fpm.sock, 其他的可能是/var/run/php7.0-fpm.sock,具體可以自己查看,之前因為這個坑折騰了很久。
7.nginx 配置

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

配置相對應的路徑和 location,(以laravel項目為例):

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

root your_website_root; # /var/www/weixin
index index.php index.html index.htm;

# Make site accessible from http://localhost/
server_name your_domain;

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/php7.0-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

注意這里的 fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; 要和第6步的 php-fpm 配置:/var/run/php/php7.0-fpm.sock; 一致。

修改laravel項目的訪問權限

sudo chown -R :www-data /var/www/laravel

sudo chmod -R 775 /var/www/laravel/storage
二、克隆項目

將我們之前推到 github 倉庫的項目,使用 git clone 到我們的服務器,后邊就可以用 git pull 拉取github的代碼了。

root@im:/var/www# git clone https://github.com/corwien/digtime.git

然后進行項目:

> cd /var/www/digtime

給網站的用戶寫權限:

root@iZ9:/var/www/digtime# sudo chmod -R 775 /var/www/digtime/storage
三、生成配置文件

項目.env環境配置:

cp .env.example .env
四、安裝擴展包依賴
composer install
  Problem 1
    - This package requires php >=5.6.4 but your PHP version (5.5.9) does not satisfy that requirement.

如果在使用命令時出現阿里云服務器PHP版本過低的情況,請參照該博文進行升級:Ubuntu 14 PHP 5.6 升級到PHP 7.0

重啟 nginx:

> sudo service nginx restart;

升級后的PHP版本:

root@iZ9:/home# php -v
PHP 7.0.18-1+deb.sury.org~trusty+1 (cli) (built: Apr 11 2017 15:08:38) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.0.18-1+deb.sury.org~trusty+1, Copyright (c) 1999-2017, by Zend Technologies

更新composer版本

// 安裝解壓軟件
> sudo apt-get install zip unzip
// 清除緩存,防止zlib_decode(): data error錯誤發生
>composer clear-cache

// 更新到最新版本
>sudo composer self-update

使用 Composer 遇到的坑

五、安裝前端資源

如果你的服務器端沒有安裝Node.js,則先要使用下邊的命令進行安裝:

Ubuntu apt-get命令安裝
命令格式如下:

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

或者使用命令源碼編譯安裝:

以下部分我們將介紹在Ubuntu Linux下安裝 Node.js 。 其他的Linux系統,如Centos等類似如下安裝步驟。

在 Github 上獲取 Node.js 源碼:

$ sudo git clone https://github.com/nodejs/node.git
Cloning into "node"...
修改目錄權限:

$ sudo chmod -R 755 node
使用 ./configure 創建編譯文件,并按照:

$ cd node
$ sudo ./configure
$ sudo make
$ sudo make install

查看 node 版本:

$ node --version
v0.10.25

其他平臺安裝方法:
Node.js 安裝配置
nodejs,npm安裝(ubuntu14.04下)

然后執行npm命令安裝:

npm install

npm 升級:

// 最新的版本latest 3.10.10
 npm install npm@latest -g

Node相關文章:
Node.js 概述之版本管理工具nvm
如果想在同一臺機器,同時安裝多個版本的node.js,就需要用到版本管理工具nvm

$ git clone https://github.com/creationix/nvm.git ~/.nvm
$ source ~/.nvm/nvm.sh

安裝以后,nvm的執行腳本,每次使用前都要激活,建議將其加入~/.bashrc
文件(假定使用Bash)。激活后,就可以安裝指定版本的Node。

nvm 執行腳本加入Bash:
在Linux里設置環境變量的方法(export PATH)

root@iZ:~# vim /root/.bashrc

.bashrc 文件末尾添加這樣一行:

# ADD NVM node-NPM 20170502
export PATH="$PATH:/root/.nvm/versions/node/v7.9.0/bin"

查看變量是否添加成功:

root@iZ94:~# echo $PATH
/root/.nvm/versions/node/v7.9.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
root@iZ94:~# exec bash
root@iZ94:~# node -v
v7.9.0

NVM 相關操作:

# 安裝最新版本
$ nvm install node

# 安裝指定版本
$ nvm install 0.12.1

# 使用已安裝的最新版本
$ nvm use node

# 使用指定版本的node
$ nvm use 0.12

nvm也允許進入指定版本的REPL環境。

$ nvm run 0.12

如果在項目根目錄下新建一個.nvmrc 文件,將版本號寫入其中,就只輸入nvm use 命令即可,不再需要附加版本號。

下面是其他經常用到的命令。

# 查看本地安裝的所有版本
$ nvm ls

# 查看服務器上所有可供安裝的版本。
$ nvm ls-remote

# 退出已經激活的nvm,使用deactivate命令。
$ nvm deactivate
六、生成表
php artisan migrate

出現這樣的問題:

root@iZ94:/var/www/digtime# php artisan migrate
Migration table created successfully.


  [IlluminateDatabaseQueryException]
  SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max
   key length is 767 bytes (SQL: alter table `users` add unique `users_name_unique`(`name
  `))



  [PDOException]
  SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max
   key length is 767 bytes


root@iZ94:/var/www/digtime#

解決方法:Laravel 5.4 migrate時報錯: Specified key was too long error

手動配置遷移命令migrate生成的默認字符串長度,在AppServiceProvider 中調用 Schema::defaultStringLength 方法來實現配置:

use IlluminateSupportFacadesSchema;

    /**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
   Schema::defaultStringLength(191);
}

終于成功了:

root@iZ94:/var/www/digtime# php artisan migrate
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated:  2014_10_12_000000_create_users_table
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated:  2014_10_12_100000_create_password_resets_table
Migrating: 2017_04_15_235414_create_articles_table
Migrated:  2017_04_15_235414_create_articles_table
root@iZ94:/var/www/digtime#
七、Nginx

Nginx 重啟失敗,查看原因:

service nginx restart
 * Restarting nginx nginx                                                      [fail]
root@iZ94j7ehy5oZ:/var/www/digtime# sudo nginx -t
nginx: [emerg] unknown directive "i" in /etc/nginx/nginx.conf:71
nginx: configuration file /etc/nginx/nginx.conf test failed
root@iZ94j7ehy5oZ:/var/www/digtime# vim /etc/nginx/nginx.conf

這里的錯誤提示,原來配置文件在修改時疏忽多加了一個 "i" 字符,刪除即可。

又出現了一個坑:

GET http://xxx.cn/ 500 (Internal Server Error)

解決方法:
nginx提示:500 Internal Server Error錯誤的解決方法

八、pull 拉取github的代碼

服務器拉取部署到github的代碼

root@iZ94:/var/www/digtime# git pull
remote: Counting objects: 8, done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 8 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (8/8), done.
From https://github.com/corwien/digtime
   74785bd..b01ad17  master     -> origin/master
Updating 74785bd..b01ad17
Fast-forward
 app/Models/User.php                                          | 2 ++
 database/migrations/2014_10_12_000000_create_users_table.php | 2 +-
 2 files changed, 3 insertions(+), 1 deletion(-)
root@iZ94:/var/www/digtime#

具體步驟是這樣的:
本地開發代碼,然后推送到github倉庫,服務器端克隆github的項目,再然后服務器從github拉取代碼,在線上即看到改變的代碼。

九、安裝后臺

我們本項目使用 laravel-admin 開源的后臺:

1.安裝laravel-admin
php artisan admin:install
2.換掉谷歌的地圖,加載時間過長

由于該前端資源有引入google地圖,所以,前端加載會非常慢,這里我們對源碼進行一下修改:

/vendor/encore/laravel-admin/src/Form/Field/Map.php

/**
     * Get assets required by this field.
     *
     * @return array
     */
    public static function getAssets()
    {
        // 本項目配置環境使用的語言包是zh-CN,"resources/lang/zh-CN/", 所以這里對zh_CN做出修改【20170501】
        if (config("app.locale") == "zh-CN") {
            $js = "http://map.qq.com/api/js?v=2.exp";
        } else {
            $js = "https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&key=".env("GOOGLE_API_KEY");
        }

        return compact("js");
    }
3.重寫方法

/vendor/encore/laravel-admin/src/Form.php
重寫 store,update 方法

.
.
.
/**
     * Store a new record.
     * $data array  獲取到的輸入的處理過的數據
     * @return IlluminateHttpRedirectResponse|IlluminateRoutingRedirector|IlluminateHttpJsonResponse
     */
    public function store_v2(array $data)
    {
        $data = $data ? $data : Input::all();

        // Handle validation errors.
        if ($validationMessages = $this->validationMessages($data)) {
            return back()->withInput()->withErrors($validationMessages);
        }

        if (($response = $this->prepare($data)) instanceof Response) {
            return $response;
        }

        DB::transaction(function () {
            $inserts = $this->prepareInsert($this->updates);

            foreach ($inserts as $column => $value) {
                $this->model->setAttribute($column, $value);
            }

            $this->model->save();

            $this->updateRelation($this->relations);
        });

        if (($response = $this->complete($this->saved)) instanceof Response) {
            return $response;
        }

        if ($response = $this->ajaxResponse(trans("admin::lang.save_succeeded"))) {
            return $response;
        }

        return $this->redirectAfterStore();
    }
    
   /**
     * 重寫方法【20170501】
     * Handle update.
     *
     * @param int $id
     *
     * @return SymfonyComponentHttpFoundationResponse
     */
    public function update_v2($id, array $data)
    {
        $data = $data ? $data : Input::all();

        $data = $this->handleEditable($data);

        $data = $this->handleFileDelete($data);

        if ($this->handleOrderable($id, $data)) {
            return response([
                "status"  => true,
                "message" => trans("admin::lang.update_succeeded"),
            ]);
        }

        /* @var Model $this->model */
        $this->model = $this->model->with($this->getRelations())->findOrFail($id);

        $this->setFieldOriginalValue();

        // Handle validation errors.
        if ($validationMessages = $this->validationMessages($data)) {
            return back()->withInput()->withErrors($validationMessages);
        }

        if (($response = $this->prepare($data)) instanceof Response) {
            return $response;
        }

        DB::transaction(function () {
            $updates = $this->prepareUpdate($this->updates);

            foreach ($updates as $column => $value) {
                /* @var Model $this->model */
                $this->model->setAttribute($column, $value);
            }

            $this->model->save();

            $this->updateRelation($this->relations);
        });

        if (($result = $this->complete($this->saved)) instanceof Response) {
            return $result;
        }

        if ($response = $this->ajaxResponse(trans("admin::lang.update_succeeded"))) {
            return $response;
        }

        return $this->redirectAfterUpdate();
    } 
    
    

相關文章:
阿里云 ECS 部署:nginx+MySQL+Laravel+PHP7+Redis+Node.js
在阿里云的ECS上部署Laravel項目

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/22887.html

相關文章

  • laravel package收集

    摘要:查找保存下載用搭建自己的緩存倉庫權限管理的好選擇基于封裝的后臺管理系統,支持手機和端訪問支付寶風格的驗證器后臺系統微信接口的部署腳本開發的博客系統百度推送自動記錄用戶行為擴展一個項目管理系統根據生成對應導航的狀態 1.debug https://github.com/barryvdh/l... showImg(https://segmentfault.com/img/bVmhWL); ...

    psychola 評論0 收藏0
  • 零基礎入門—網站建站教程(新手必備)

    摘要:自行建站服務器購買網站搭建網站維護全程自主,彈性靈活。網站部署常見網站類型有以下幾種個人博客常用于搭建個人博客網站,尤其適用于首次使用阿里云進行建站的新用戶。若您需要在阿里云服務器上部署站點環境安裝應用程序,可點此查看網站基礎環境搭建服務。相信很多新用戶會有這樣的疑惑,我要做個網站,到底要使用什么產品,如何能快速完成網站建站呢?搭建網站有兩種選擇,一種是直接購買建站模板,另一種則是自行建站。...

    booster 評論0 收藏0
  • 零基礎入門—網站建站教程(新手必備)

    摘要:自行建站服務器購買網站搭建網站維護全程自主,彈性靈活。網站部署常見網站類型有以下幾種個人博客常用于搭建個人博客網站,尤其適用于首次使用阿里云進行建站的新用戶。若您需要在阿里云服務器上部署站點環境安裝應用程序,可點此查看網站基礎環境搭建服務。前言相信很多新用戶會有這樣的疑惑,我要做個網站,到底要使用什么產品,如何能快速完成網站建站呢?搭建網站有兩種選擇,一種是直接購買建站模板,另一種則是自行建...

    wemall 評論0 收藏0
  • vue+express+mysql項目總結(node項目部署阿里通用)

    摘要:原文發布于我的個人博客上原文點這里前面經歷千辛萬苦,終于把博客的所有東西都準備好了,現在就只等部署了。我的遠程連接工具是用的是,文件上傳用的是。 原文發布于我的個人博客上:原文點這里 ??前面經歷千辛萬苦,終于把博客的所有東西都準備好了,現在就只等部署了。下面我介紹下我的部署過程: 一、購買服務器和域名 ??如果需要域名(不用域名通過ip也可以訪問,雖然不方便,但可以節約一年幾十塊錢的...

    dreamGong 評論0 收藏0
  • vue+express+mysql項目總結(node項目部署阿里通用)

    摘要:原文發布于我的個人博客上原文點這里前面經歷千辛萬苦,終于把博客的所有東西都準備好了,現在就只等部署了。我的遠程連接工具是用的是,文件上傳用的是。 原文發布于我的個人博客上:原文點這里 ??前面經歷千辛萬苦,終于把博客的所有東西都準備好了,現在就只等部署了。下面我介紹下我的部署過程: 一、購買服務器和域名 ??如果需要域名(不用域名通過ip也可以訪問,雖然不方便,但可以節約一年幾十塊錢的...

    newtrek 評論0 收藏0

發表評論

0條評論

JowayYoung

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<