在Linux上实现Laravel的自动化运维,可以通过以下几个步骤来完成:
确保你可以通过SSH访问你的Linux服务器。你可以使用ssh命令来连接服务器。
ssh user@your_server_ip
Ansible是一个强大的自动化工具,可以帮助你自动化Laravel项目的部署、配置和管理。
在本地机器上安装Ansible:
pip install ansible
创建一个Ansible playbook文件,例如deploy_laravel.yml,内容如下:
---
- name: Deploy Laravel application
hosts: your_server_ip
become: yes
vars:
app_path: /var/www/your_laravel_app
web_user: www-data
web_group: www-data
project_repo: git@github.com:your_repo/your_laravel_app.git
tasks:
- name: Update apt cache
apt:
update_cache: yes
- name: Install dependencies
apt:
name:
- php7.4-cli
- php7.4-fpm
- php7.4-mysql
- php7.4-zip
- php7.4-gd
- php7.4-curl
- php7.4-mbstring
- php7.4-xml
- nginx
- git
- name: Clone repository
git:
repo: "{{ project_repo }}"
dest: "{{ app_path }}"
version: master
- name: Set permissions
file:
path: "{{ app_path }}"
owner: "{{ web_user }}"
group: "{{ web_group }}"
state: directory
mode: '0755'
- name: Install Composer dependencies
command: composer install --no-interaction --prefer-dist --optimize-autoloader
- name: Configure Nginx
template:
src: nginx.conf.j2
dest: /etc/nginx/sites-available/your_laravel_app
notify: restart nginx
- name: Enable Nginx site
file:
src: /etc/nginx/sites-available/your_laravel_app
dest: /etc/nginx/sites-enabled/your_laravel_app
notify: restart nginx
- name: Restart Nginx
service:
name: nginx
state: restarted
handlers:
- name: restart nginx
service:
name: nginx
state: restarted
创建一个Nginx配置模板文件,例如nginx.conf.j2,内容如下:
server {
listen 80;
server_name your_domain.com;
root {{ app_path }};
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
在本地机器上运行Ansible playbook:
ansible-playbook -i inventory_file deploy_laravel.yml
Supervisor可以帮助你管理Laravel的后台进程,例如队列监听器和调度器。
在服务器上安装Supervisor:
sudo apt-get install supervisor
创建一个Supervisor配置文件,例如/etc/supervisor/conf.d/laravel-worker.conf,内容如下:
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php artisan queue:work --sleep=3 --tries=3
autostart=true
autorestart=true
user=www-data
numprocs=8
redirect_stderr=true
stdout_logfile=/var/log/laravel-worker.log
更新Supervisor配置并启动进程:
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start laravel-worker:*
你可以使用Cron来设置定时任务,例如定期清理缓存或运行备份脚本。
编辑当前用户的Crontab文件:
crontab -e
添加定时任务,例如每天凌晨清理缓存:
0 0 * * * cd /var/www/your_laravel_app && php artisan cache:clear && php artisan config:clear && php artisan route:clear
通过以上步骤,你可以在Linux上实现Laravel的自动化运维,包括部署、配置管理、后台进程管理和定时任务。