CentOS8一键安装LNMP(Nginx1.18 + php8.0 + Mysql8.0)
脚本代码如下:
#!/bin/bash
echo -n "请设置MySQL密码:"
read password
echo "更新系统内核..."
dnf -y update
echo "正在安装 EPEL && Remi..."
dnf -y install https://dl.Fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
dnf -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
echo "正在安装 Nginx-1.18..."
dnf -y module reset nginx
dnf -y module enable nginx:1.18
dnf -y install nginx
echo "正在设置 Nginx..."
echo 'user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {
use epoll;
worker_connections 102400;
}
http {
log_format main '"'"'$remote_addr - $remote_user [$time_local] "$request" '"'"'
'"'"'$status $body_bytes_sent "$http_referer" '"'"'
'"'"'"$http_user_agent" "$http_x_forwarded_for"'"'"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
server_tokens off;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_comp_level 2;
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
gzip_vary off;
gzip_disable "MSIE [1-6]\.";
include /etc/nginx/mime.types;
default_type application/octet-stream;
include /etc/nginx/conf.d/php-fpm.conf;
include /var/www/wwwconf/*.conf;
}' > /etc/nginx/nginx.conf
echo 'location ~ [^/]\.php(/|$){
try_files $uri =404;
fastcgi_intercept_errors on;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass php-fpm;
set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
set $real_script_name $1;
set $path_info $2;
}
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
}' > /etc/nginx/default.d/php.conf
echo "正在安装 PHP-8.0"
dnf -y module reset php
dnf -y module enable php:remi-8.0
dnf -y install php php-fpm php-pdo php-mysqlnd php-mbstring
echo "正在安装 MySQL-8.0"
dnf -y module reset mysql
dnf -y module enable mysql:8.0
dnf -y install mysql mysql-server
echo "正在设置 MySQL..."
systemctl start mysqld
dnf -y install expect
echo '#!/usr/bin/expect
set timeout 60
set password [lindex $argv 0]
spawn mysql_secure_installation
expect {
"Press Y" { send "Y\r"; exp_continue}
"Press y" { send "y\r"; exp_continue}
"Please enter 0 = LOW" { send "0\r"; exp_continue}
"password" { send "$password\r"; exp_continue}
}
interact ' > mysql_secure_installation.exp
chmod +x mysql_secure_installation.exp
./mysql_secure_installation.exp $password
rm -rf mysql_secure_installation.exp
echo "正在创建站点目录..."
rm -rf /var/www/*
mkdir /var/www/wwwconf
mkdir /var/www/wwwroot
mkdir /var/www/wwwssl
mkdir /var/www/wwwlog
echo '正在创建默认站点...'
echo 'server {
listen 80 default_server;
listen [::]:80;
server_name 127.0.0.1;
index index.php index.html;
root /var/www/wwwroot/default;
access_log /var/www/wwwlog/default.log;
include /etc/nginx/default.d/php.conf;
}' > /var/www/wwwconf/default.conf
mkdir /var/www/wwwroot/default
echo '<?php phpinfo(); ?>' > /var/www/wwwroot/default/index.php
echo "正在安装 phpmyadmin..."
wget -O phpmyadmin.zip https://files.phpmyadmin.net/phpMyAdmin/5.0.4/phpMyAdmin-5.0.4-all-languages.zip
unzip phpmyadmin.zip -d /var/www/wwwroot/default
mv /var/www/wwwroot/default/phpMyAdmin-5.0.4-all-languages /var/www/wwwroot/default/phpmyadmin
chmod -R 777 /var/www/wwwroot/default/*
rm -rf phpmyadmin.zip
echo "设置自动更新..."
echo "30 01 * * * dnf -y update >> /tmp/tmp.txt" >> /var/spool/cron/root
systemctl restart crond
echo "正在启动 Nginx..."
systemctl enable nginx
systemctl start nginx
echo "正在启动 PHP..."
systemctl enable php-fpm
systemctl start php-fpm
echo "正在启动 MySQL..."
systemctl enable mysqld
systemctl restart mysqld
echo "安装完成!"
数据目录:/var/www
站点配置目录:/var/www/conf
站点数据目录:/var/www/wwwroot
站点证书目录:/var/www/wwwssl
站点日志目录:/var/www/wwwlog
创建新站点:
1、创建站点配置文件/var/www/conf/主域名.conf
,内容参考 Nginx配置文件模板
2、创建站点根目录/var/www/wwwroot/主域名/
,并通过wget
下载或使用sftp
上传网站文件
3、若开启HTTPS,上传域名证书文件至/var/www/wwwssl/主域名/主域名.pem
,上传证书密钥文件至/var/www/wwwssl/主域名/主域名.key
4、执行systemctl reload nginx
,若有提示信息无法启动,执行nginx查看错误信息进行修改