所需环境
环境安装
自动
手动
部署
- 项目名称
example
- 访问域名
example.test
- 项目目录
/www/wwwroot/web
框架判断
- 如果
/www/wwwroot/web
存在 composer.json
文件 那里面的 name
字段通常是 框架名称
- 人肉分析
获取源代码
git
方式
运行
1 2 3 4 5
| cd /www/wwwroot/
git clone --depth 1 git@github.com:puzzle/project.git web
git clone --depth 1 https://github.com/puzzle/project.git web
|
文件
方式
配置文件
大多都是类似的 具体可看相应注释
复制
1 2
| cd /www/wwwroot/web cp .env.example .env
|
修改 .env
文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| # 项目名称 APP_NAME=example # 当前运行环境 可选值 local 本地 | production 线上 | ... APP_ENV=production # 密钥 需运行生成 APP_KEY=base64:hello # 是否开启调试模式 APP_DEBUG=false # 当前运行网址 APP_URL=http://example.test
# 数据库连接类型 DB_CONNECTION=mysql # 数据库连接地址 DB_HOST=127.0.0.1 # 数据库端口 DB_PORT=3306 # 数据库表名 DB_DATABASE=deploy # 数据库用户名 DB_USERNAME=root # 数据库密码 DB_PASSWORD=root
# redis 连接地址 REDIS_HOST=127.0.0.1 # redis 密码 REDIS_PASSWORD=root # redis 端口号 REDIS_PORT=6379
# session 储存位置 可选值 file | redis | ... SESSION_DRIVER=redis
# 队列执行方式 可选值 sync 同步 | redis 异步 | ... QUEUE_CONNECTION=redis
|
安装 composer 包
检查版本
composer --version
输出应该类似
1
| Composer version 2.0.12 2021-04-01 10:14:59
|
安装扩展包
1 2
| cd /www/wwwroot/web composer install -vvv
|
输出应该类似
1 2 3
| Package manifest generated successfully. 1 packages you are using are looking for funding. Use the `composer fund` command to find out more!
|
这时候 /www/wwwroot/web
就会存在 vendor
和 composer.lock
文件了
生成 key
1 2
| cd /www/wwwroot/web php artisan key:generate
|
运行成功后 .env
文件 APP_KEY
将会自动填充值
目录映射
1 2
| cd /www/wwwroot/web php artisan storage:link
|
优化应用
1 2 3 4 5
| cd /www/wwwroot/web
php artisan config:cache php artisan route:cache php artisan view:cache
|
设置文件夹权限
如果 当前终端登录用户 和 php-fpm
用户一致 可不用设置
1 2
| cd /www/wwwroot/web chmod 777 -R bootstrap storage
|
迁移数据库
根据 sql
判断执行顺序
根据实际情况运行迁移命令
1 2
| cd /www/wwwroot/web php artisan migrate
|
配置 nginx
| apache
nginx
https://laravel.com/docs/8.x/deployment#nginx
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| server { listen 80; server_name example.test; root /www/wwwroot/web/public;
add_header X-Frame-Options "SAMEORIGIN"; add_header X-Content-Type-Options "nosniff";
index index.php;
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$ { fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; }
location ~ /\.(?!well-known).* { deny all; } }
|
apache
todo
访问验证
如果配置成功的话 访问 example.test
就可以看到页面了
定时任务(按需要添加)
1
| * * * * * /usr/bin/php /www/wwwroot/web/artisan schedule:run >> /dev/null 2>&1
|
队列(按需要添加)
1 2 3 4 5 6 7 8
| [program:example] process_name=%(program_name)s command=/usr/bin/php /www/wwwroot/web/artisan horizon autostart=true autorestart=true user=www redirect_stderr=true stdout_logfile=/www/wwwroot/web/storage/logs/supervisord.log
|
错误
- 可根据
/www/wwwroot/web/storage/logs/
排查
其他参考文档