在Debian系统上实现LNMP(Linux+Nginx+MySQL/MariaDB+PHP)自动化,可通过脚本工具(一键安装包、自动化运维工具)或配置管理工具简化部署流程,减少手动操作错误。以下是具体实现方法:
适用场景:快速部署基础LNMP环境(Nginx、MySQL/MariaDB、PHP),适合个人或小规模项目。
操作步骤:
wget -c http://soft.vpser.net/lnmp/lnmp1.1-full.tar.gztar zxf lnmp1.1-full.tar.gz && cd lnmp1.1-full./debian.sh(脚本会自动检测系统环境,提示输入MySQL root密码、PHP版本等参数)适用场景:需要自定义组件版本(如特定PHP版本、数据库引擎)或多环境部署(如同时安装LNMP/LNMPA)。
操作步骤:
bash <(curl -s https://oneinstack.com/auto/install.sh))。适用场景:需要高度定制化部署流程(如添加额外模块、修改默认配置),或集成到现有自动化体系。
操作示例:
deploy_lnmp.sh),内容包含系统更新、组件安装、配置修改等步骤(参考以下模板):#!/bin/bash
# 更新系统
sudo apt update && sudo apt upgrade -y
# 安装Nginx
sudo apt install -y nginx
sudo systemctl enable --now nginx
# 安装MariaDB(MySQL替代)
sudo apt install -y mariadb-server
sudo mysql_secure_installation <<EOF
y
YourRootPassword
YourRootPassword
y
y
y
EOF
sudo systemctl enable --now mariadb
# 安装PHP及扩展
sudo apt install -y php-fpm php-mysql php-curl php-gd php-mbstring
sudo systemctl enable --now php7.4-fpm # 根据实际PHP版本调整
# 配置Nginx支持PHP
sudo sed -i 's/^;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/' /etc/php/7.4/fpm/php.ini
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
sudo systemctl reload nginx
echo "LNMP环境部署完成!"
chmod +x deploy_lnmp.sh && sudo ./deploy_lnmp.sh。适用场景:企业级批量部署、多服务器配置同步,或需要版本控制的运维流程。
操作步骤:
sudo apt install -y ansiblelnmp.yml),定义LNMP部署任务(示例):- hosts: webservers
become: yes
tasks:
- name: Update apt cache
apt:
update_cache: yes
- name: Install Nginx
apt:
name: nginx
state: present
- name: Start and enable Nginx
service:
name: nginx
state: started
enabled: yes
- name: Install MariaDB
apt:
name: mariadb-server
state: present
- name: Secure MariaDB installation
command: mysql_secure_installation
args:
stdin: "y\nYourRootPassword\nYourRootPassword\ny\ny\ny"
- name: Install PHP and extensions
apt:
name:
- php-fpm
- php-mysql
- php-curl
state: present
- name: Configure Nginx for PHP
lineinfile:
path: /etc/nginx/sites-available/default
regexp: '^ location ~ \.php$'
insertafter: '^ location /'
line: |
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
}
- name: Reload Nginx
service:
name: nginx
state: reloaded
ansible-playbook -i inventory.ini lnmp.yml(inventory.ini需包含目标服务器IP列表)。以上方法可根据实际需求选择,一键脚本适合快速部署,Ansible适合企业级管理,自定义脚本则提供最大灵活性。