在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的自动化运维,包括部署、配置管理、后台进程管理和定时任务。