前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Laravel 开发和部署环境搭建

Laravel 开发和部署环境搭建

作者头像
zhonger
发布2022-10-28 11:02:38
1.4K0
发布2022-10-28 11:02:38
举报
文章被收录于专栏:仲儿的专栏

前言

  近来趁着 Ubuntu 20.04 发行版的发布,在台式机上安装了桌面版体验了一下。不知道是因为笔者的台式机(2016年组装的,CPU 还在 Intel 第4代)有点过于陈旧了,还是最新发行版的安装要求变高了,安装完成后总觉得使用起来不是很顺手。用着用着就死机了,键盘和鼠标完全失效。而且原来在 Ubuntu 上的美化操作也不是很好使了,因此就尝试了 Linux Mint 20 发行版(基于 Ubuntu 20.04)。自从安装完成后,体验下来还是比较顺畅,能够成功安装搜狗中文输入法、字体、主题、其他常用软件。于是就萌生了在 Linux Mint 上搭建 Laravel 开发环境的想法。

Laravel

  Laravel 是 PHP 领域内一大流行的 Web 应用框架,因开发成本低、依赖管理方便等优势深受国内外开发者的喜爱,有很多的应用案例。Laravel 官方提供了 Valet 工具专门用于 PHP 项目的开发环境管理,相当简单、强大。Valet 不但可以支持 Laravel,还可以支持 Zend、CakePHP 等多种 PHP 常用框架和 Wordpress 等多种 PHP 常用应用。以下会简要介绍该工具的配置使用。

  在前几年撰写的 《laravel 5.2 在 lnmpa 一键安装包环境下的部署》 一文中,使用了 lnmp.org 提供的一键 PHP 项目生产环境来开发和部署 Laravel。虽然说这种方式也是比较简单粗暴,可以利用脚本进行管理,后期的管理、配置成本都比较低,但是随着不断对各个基础环境的了解,可以自行对每个基础环境的进行单独配置和组合配置,这样的一键方式反而显得有不少冗余和复杂化。因此,此处想要介绍自行搭建 L(inux)+N(ginx)+M(ysql)+P(HP) 开发和部署环境。

基础环境配置

安装软件依赖

代码语言:javascript
复制
sudo apt update
sudo apt install -y libnss3-tools jq xsel wget curl
sudo apt install -y php7.4-cli php7.4-common php7.4-curl php7.4-json php7.4-mbstring php7.4-opcache
sudo apt install -y php7.4-readline php7.4-xml php7.4-zip php7.4-sqlite3 php7.4-mysql php7.4-pgsql
sudo apt install -y network-manager php7.4 php7.4-fpm nginx

配置 PHP

代码语言:javascript
复制
sudo vim /etc/php/7.4/fpm/php.ini

upload_max_filesize = 1024M
max_file_uploads = 20
# 取消下面一句的注释,并修改如下
cgi.fix_pathinfo=0
安装 Composer
代码语言:javascript
复制
wget -c https://mirrors.aliyun.com/composer/composer.phar
chmod +x composer.phar
sudo mv composer.phar /usr/local/bin/composer
验证 Composer 安装
代码语言:javascript
复制
composer diagnose

Checking platform settings: OK
Checking git settings: OK
Checking http connectivity to packagist: OK
Checking https connectivity to packagist: OK
Checking github.com rate limit: OK
Checking disk free space: OK
Checking pubkeys: 
Tags Public Key Fingerprint: 57815BA2 7E54DC31 7ECC7CC5 573090D0  87719BA6 8F3BB723 4E5D42D0 84A14642
Dev Public Key Fingerprint: 4AC45767 E5EC2265 2F0C1167 CBBB8A2B  0C708369 153E328C AD90147D AFE50952
OK
Checking composer version: OK
Composer version: 1.10.13
PHP version: 7.4.3
PHP binary path: /usr/bin/php7.4
OpenSSL version: OpenSSL 1.1.1f  31 Mar 2020
配置 Composer 镜像
代码语言:javascript
复制
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

安装 MariaDB

代码语言:javascript
复制
sudo apt install -y mariadb-client mariadb-server
启动 MariaDB
代码语言:javascript
复制
sudo systemctl enable mariadb
sudo systemctl start mariadb
配置 MariaDB 的 root 用户密码
代码语言:javascript
复制
sudo mysql -u root
MariaDB [mysql]> UPDATE mysql.user SET password=password('newpassword') WHERE user='root';
MariaDB [mysql]> flush privileges;  
MariaDB [mysql]> exit;
创建新数据库
代码语言:javascript
复制
mysql -p -u root

MariaDB [(none)]> CREATE DATABASE `blog` CHARACTER SET utf8 COLLATE utf8_general_ci;
MariaDB [(none)]> CREATE USER 'bloguser'@'%' IDENTIFIED BY 'password';
MariaDB [(none)]> use blog;
MariaDB [blog]> GRANT ALL ON `blog.*` TO 'bloguser'@'%';
MariaDB [blog]> FLUSH PRIVILEGES;
MariaDB [blog]> EXIT;

安装 Laravel

新建项目

代码语言:javascript
复制
mkdir -p ~/web && cd ~/web
composer global require laravel/installer
composer create-project --prefer-dist laravel/laravel blog "6.*"

配置文件夹权限

代码语言:javascript
复制
chmod -R 755 ~/web/blog

配置数据库

代码语言:javascript
复制
vim ~/web/blog/.env

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=blog
DB_USERNAME=bloguser
DB_PASSWORD=password

测试应用

代码语言:javascript
复制
cd ~/web/blog
php artisan serve --port=8000

  浏览器访问 http://localhost:8000Ctrl+C 停止测试。

安装和配置 Valet(二选一)

代码语言:javascript
复制
composer global require cpriego/valet-linux
tee -a ~/.zshrc << EOF
PATH=$PATH:/home/$(whoami)/.config/composer/vendor/bin
EOF
source ~/.zshrc
valet install
cd ~/web/blog && valet link blog

  浏览器访问 http://blog.test

代码语言:javascript
复制
valet secure blog

  浏览器访问 https://blog.test。由于最近浏览器对于 SSL 证书提升了验证的要求,对于本地签发的证书会报不信任,可以手动选择信任后访问。

配置 Nginx+php-fpm (二选一)

配置文件夹链接

代码语言:javascript
复制
sudo ln -s ~/web/blog /var/www/blog

配置 Nginx

  以下为 /etc/nginx/sites-avaiable/blog 的内容,其中 SSL 证书为 acme.sh 工具申请的 Let’s Encrypt 提供的三个月免费通配符域名证书,*.lisz.ml 解析 IP 为 127.0.0.1

代码语言:javascript
复制
server {
    listen 80;
    root /var/www/blog/public;
    index  index.php index.html index.htm;
    server_name  blog.lisz.ml;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name blog.lisz.ml;
    ssl_certificate /home/zhonger/ssl/lisz.ml.cert.pem;
    ssl_certificate_key /home/zhonger/ssl/lisz.ml.key.pem;
    index index.php index.html index.htm;
    root /var/www/blog/public;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    charset utf-8;

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

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_page 404 /index.php;

  
    location ~ \.php$ {
       include fastcgi_params;
       fastcgi_index index.php;
       fastcgi_pass     unix:/var/run/php/php-fpm.sock;
       fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }

}

  未开启 HTTPS 的配置文件如下:

代码语言:javascript
复制
server {
    listen 80;
    root /var/www/blog/public;
    index  index.php index.html index.htm;
    server_name  blog.lisz.ml;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    charset utf-8;

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

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_page 404 /index.php;

  
    location ~ \.php$ {
       include fastcgi_params;
       fastcgi_index index.php;
       fastcgi_pass     unix:/var/run/php/php-fpm.sock;
       fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }

}

Nginx 配置文件生效

代码语言:javascript
复制
sudo ln -s /etc/nginx/sites-avaiable/blog /etc/nginx/sites-enabled/
sudo nginx -t
sudo nginx -s reload

开启 php-fpm

代码语言:javascript
复制
sudo systemctl enable php-fpm
sudo systemctl start php-fpm

验证

  浏览器访问 https://blog.lisz.ml

参考资料

版权声明:如无特别声明,本文版权归 仲儿的自留地 所有,转载请注明本文链接。

(采用 CC BY-NC-SA 4.0 许可协议进行授权)

本文标题:《 Laravel 开发和部署环境搭建 》

本文链接:https://cloud.tencent.com/developer/article/2142968

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • Laravel
  • 基础环境配置
    • 安装软件依赖
      • 配置 PHP
        • 安装 Composer
        • 验证 Composer 安装
        • 配置 Composer 镜像
      • 安装 MariaDB
        • 启动 MariaDB
        • 配置 MariaDB 的 root 用户密码
        • 创建新数据库
    • 安装 Laravel
      • 新建项目
        • 配置文件夹权限
          • 配置数据库
            • 测试应用
            • 安装和配置 Valet(二选一)
            • 配置 Nginx+php-fpm (二选一)
              • 配置文件夹链接
                • 配置 Nginx
                  • Nginx 配置文件生效
                    • 开启 php-fpm
                      • 验证
                      • 参考资料
                      相关产品与服务
                      云数据库 MariaDB
                      腾讯云数据库 MariaDB(TencentDB for MariaDB) 让您轻松在云端部署、使用 MariaDB 数据库。MariaDB 是在 MySQL 版权被 Oracle 收购后,由 MySQL 创始人 Monty 创立,其版权授予了“MariaDB基金会(非营利性组织)”以保证 MariaDB 永远开源,良好的开源策略,是企业级应用的最优选择,主流开源社区系统/软件的数据库系统,均已默认配置 MariaDB。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档