在 ubuntu 17.10 安裝 Nginx 1.12.1 + MariaDB 10.1.30 + PHP 7.1.11 for Laravel 5.5.28

動機:希望在目前最新的網站開發環境(LNMP)中安裝 Laravel,實作如下~

示意圖

準備環境
1.Server: 桌機PC(台式機), Client: Windows10筆電
2.ubuntu 17.10.1 Desktop-amd64安裝光碟片 (下載 https://www.ubuntu.com/download/desktop/thank-you?country=TW&version=17.10.1&architecture=amd64 )

實作步驟
1.[作業系統]ubuntu 安裝DVD放入桌機光碟機內並於BIOS啟動光碟開機及依安裝精靈指示步驟安裝之...
安裝完成後重新開機...

2.於 ubuntu 登入 步驟1. 設定的帳號,待出現 下載更新 並執行之...重新開機...
待重新登入後點選 左下角(九個圓點) 及 終端機...先行安裝 遠端連線 工具,指令如下
sudo apt-get install openssh-server -y

再安裝 網路工具,指令如下
$ sudo apt install net-tools

再查詢網卡IP,指令如下
$ ifconfig           ( enp4s0 )
畫面如下圖

3.於遠端Client端(Windows10筆電),利用 Xshell 5 登入 上述步驟2. 的 IP...如下圖

4.[Web服務器]依據 參攷1. 指示,安裝 Nginx (1.12.1),指令如下(可利用 Ctrl + Insert 複製、Shift + Insert 貼上)
sudo apt install nginx

執行畫面,如下圖

並啟動 enable Nginx service (讓重開機後可自動執行),指令如下
$ sudo systemctl stop nginx.service
$ sudo systemctl start nginx.service
$ sudo systemctl enable nginx.service

執行畫面,如下圖

5.[資料庫管理系統]再依網頁安裝 MariaDB (10.1.30),指令如下
$ sudo apt-get install mariadb-server mariadb-client

執行畫面,如下圖

並啟動 enable MariaDB service,指令如下
$ sudo systemctl stop mariadb.service
$ sudo systemctl start mariadb.service
$ sudo systemctl enable mariadb.service

執行畫面,如下圖

再執行 MariaDB server 安全檢查,如下圖

再重啟 Restart MariaDB server,指令如下
$ sudo systemctl restart mariadb.service

執行畫面,如下圖

再新增資料庫使用者,指令如下
$ mysql -u user -p
MariaDB [(none)]> CREATE DATABASE homestead;
MariaDB [(none)]> CREATE USER 'homestead'@'localhost' IDENTIFIED BY 'secret';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON homestead.* TO 'homestead'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> quit
$ mysql -u homestead -psecret

6.[網頁腳本語言]再安裝 PHP-FPM (7.1.11) 及相關模組,指令如下
sudo apt install php-fpm php-common php-mbstring php-xmlrpc php-soap php-gd php-xml php-mysql php-cli php-mcrypt php-zip

執行畫面,如下圖

再修改設定檔 php.ini,指令如下
sudo nano /etc/php/7.1/fpm/php.ini

修改內容如下
memory_limit = 256M
upload_max_filesize = 64M
cgi.fix_pathinfo=0

7.[Web開發框架]再安裝 COMPOSER,指令如下
sudo apt install composer unzip

執行畫面,如下圖

再下載 Laravel,指令如下
$ cd /var/www/html
$ sudo composer create-project laravel/laravel
$ sudo composer global require "laravel/installer"

執行畫面,如下圖

再修改檔案權限屬性,指令如下
$ sudo chown -R www-data:www-data /var/www/html/laravel/
$ sudo chmod -R 755 /var/www/html/laravel/
sudo chmod -R 777 /var/www/html/laravel/bootstrap/cache/
sudo chmod -R 777 /var/www/html/laravel/storage/

再修改 app.php 設定,指令如下
$ sudo nano laravel/config/app.php
內容如下
'timezone'           => 'Asia/Taipei',
'locale'                => 'zh-TW',
'fallback_locale'    => 'zh-TW',

執行畫面,如下圖

8.設定 NGINX,指令如下
sudo nano /etc/nginx/sites-available/laravel
檔案內容如下
server {
    listen 80;
    listen [::]:80;
    root /var/www/html/laravel/public;
    index  index.php index.html index.htm;
    server_name  example.com www.example.com;

    location / {

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

    location ~ \.php$ {

         try_files $uri = 404;
         fastcgi_split_path_info  ^(.+\.php)(/.+)$;
         fastcgi_index            index.php;
         fastcgi_pass             unix:/var/run/php/php7.1-fpm.sock;        # for Ubuntu 17.10
         include                  fastcgi_params;
         fastcgi_param   PATH_INFO       $fastcgi_path_info;
         fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

}


9.設定 VirtualHost,指令如下
$ sudo ln -s /etc/nginx/sites-available/laravel /etc/nginx/sites-enabled/

10.重啟 Nginx,指令如下
sudo systemctl restart nginx.service

11.修改 Windows hosts 檔案 ( 目錄: C:\Windows\System32\drivers\etc\hosts )
內容如下(IP設為 Server 的IP)
192.168.1.103 example.com

12.使用 瀏覽器Chrome 來查看 laravel網頁,如下圖
如果看到上面的畫面才算成功...!!


--------------------------------------------------------------------------------------------------------------
以下,記錄錯誤問題排除...
(1).MariaDB無法以root登入(參攷2.) 指令如下
sudo systemctl stop mariadb.service
sudo mysqld_safe --skip-grant-tables --skip-networking &
sudo mysql -u root
MariaDB [(none)]> use mysql;
MariaDB [mysql]> update user set password=PASSWORD("new_password_here") where User='root';
MariaDB [mysql]> flush privileges;
MariaDB [mysql]> \q
$ sudo systemctl stop mariadb.service
$ sudo systemctl start mariadb.service
$ sudo mysql -u root -p
--------------------------------------------------------------------------------------------------------------
(2).做完 上述(1). 發現並未成功讓 root 登入 MariaDB,故找了 參攷3. 指令如下
sudo mysql
MariaDB [(none)]> use mysql;
MariaDB [(mysql)]> UPDATE user SET Password=PASSWORD('輸入你 root 的新密碼') where USER='root';
MariaDB [(mysql)]> GRANT all ON *.* TO root@'localhost' IDENTIFIED BY '輸入你 root 的密碼';
MariaDB [(mysql)]> FLUSH PRIVILEGES;
MariaDB [(mysql)]> quit
sudo mysql -u root -p
終於可以成功登入root了!!
--------------------------------------------------------------------------------------------------------------
(3).執行遷移時發生767 bytes錯誤,指令如下
$ sudo php artisan migrate:fresh

畫面如下圖

此時,利用 Adminer 查看該資料庫,如下圖
參攷4. 修改 AppServiceProvider.php,指令如下
$ sudo nano app/Providers/AppServiceProvider.php
內容如下
use Illuminate\Support\Facades\Schema;

    public function boot()
    {
        Schema::defaultStringLength(191);
    }

再執行遷移即可正常,如下圖

查詢資料庫狀況,如下圖
--------------------------------------------------------------------------------------------------------------


參攷
1.INSTALL LARAVEL ON UBUNTU 17.04 / 17.10 WITH NGINX, MARIADB AND PHP SUPPORT, https://websiteforstudents.com/install-laravel-on-ubuntu-17-04-17-10-with-nginx-mariadb-and-php-support/
2.RESET MARIADB ROOT PASSWORD ON UBUNTU 17.04 / 17.10, https://websiteforstudents.com/reset-mariadb-root-password-ubuntu-17-04-17-10/
3.環境轉換,從Mysql到Mariadb, http://iam24j.blogspot.tw/2015/05/sqlmysqlmariadb.html
4.Laravel 5.5 - 1071 specified key was too long max key length is 767 bytes, https://hdtuto.com/article/laravel-55-1071-specified-key-was-too-long-max-key-length-is-767-bytes
5.Adminer - Database management in a single PHP file, https://www.adminer.org/
6.Laravel 安装指南, https://d.laravel-china.org/docs/5.5/installation

留言