Day21-部署篇(三)Laravel 专案部署与 MySQL、Nginx 设定

大家好~
继续昨天的主题,
今天要来把 Laravel 部署上 Server,
顺便设定一下 MySQL 与 Nginx。

MySQL

先来为我们的专案建立一位专属 User 吧。

进入 MySQL

sudo mysql -u root 

建立 DATABASE

CREATE DATABASE `ironman2021`;

建立新 User

CREATE USER 'laravel'@'localhost' IDENTIFIED BY 'password';

给新 User 权限

// 下面这段给予 laravel 这位 User 在 ironman2021 这个资料库的所有资料表拥有所有权限
GRANT ALL ON ironman2021 . * TO 'laravel'@'localhost';

Laravel 专案部署

再来将专案 clone 下来~

git clone

使用 git clone 下载专案 ,
这边我是将专案放在 /var/www 下。

sudo git clone https://github.com/rrrui0812/Laravel-LINEBot.git ironman2021

修改专案的拥有者与群组

// 将 ubuntu 加到 www-data 这个群组
sudo usermod -a -G www-data ubuntu
// 修改拥有者与群组
sudo chown -R ubuntu:www-data /var/www/ironman2021
sudo chown -R www-data:www-data /var/www/ironman2021/storage

composer install

composer install

安装 npm

sudo apt install npm

npm install

修改 .env

cp .env.example .env
vim .env

把刚刚新建的 MySQL user 与 Database 写进 .env

建立 Key

php artisan key:generate

这个 Key 可以在 .env 内的 APP_KEY 看到。

php artisan migrate

sudo php artisan migrate

Nginx

cd /etc/nginx/sites-available
// 复制 default 来修改使用
sudo cp default ironman2021
sudo vim ironman2021
/etc/nginx/sites-available/ironman2021
server {
        listen 80;

        root /var/www/ironman2021/public;

        index index.php index.html;

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

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
        }

        location ~ /\.ht {
                deny all;
        }
}

测试一下,
确定 Nginx 可以正常执行。

sudo nginx -t

为刚刚建立好的 ironman2021sites-enabled 建立连结,
并把 sites-enableddefault 删除。

sudo ln -s /etc/nginx/sites-available/ironman2021 /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default

restart nginx。

重启 nginx。

sudo systemctl restart nginx

成果预览:

在浏览器上输入 IP,
看看有没有出现 Laravel 的预设首页。

成功~

那麽今天就先这样啦~
大家明天见!
若文章有任何问题,
还请大家不吝赐教!

参考资料:


<<:  网页盒子-30天学会HTML+CSS,制作精美网站

>>:  [Day22] Flutter GetX with Dio (一)

Day10 事件修饰符 (1)

Vue提供了一些常用的修饰符,它可以直接套上,减少程序码,尽量的单纯处里逻辑 .stop .prev...

轻松小单元 - 范围要多广

您说的核心系统在哪? 如果单看法规内容,可能会觉得防护措施写的简单,但要全部都纳入也很吓人。对於这点...

Day1.认识GUI和Tkinter

图形使用者介面(Graphical User Interface,GUI) 指透过点击图示执行隐含的...

Day.26 「闭包要谨慎使用!」 —— JavaScript 闭包(Closure)

我们前面已经认识了函式作用域,也了解了回调函式,但有时候会产生意想不到的事情,造成内存问题,其中一...

Day 08-Code 要 Review,Infrastrcture 岂不 Review?吾未见其明也

Code 要 Review,Infrastrcture 岂不 Review?吾未见其明也 CI/CD...