这是我用chatGPT、kimi、deepseek生成的一键安装脚本,如果你想用lighttpd做为你的服务器的话,可以使用这些脚本来一键安装
lighttpd官网下载:https://www.lighttpd.net/
chatGPT
#!/bin/bash # LNMP 编译安装一键脚本 (Lighttpd + PHP + MySQL/MariaDB) # 支持 CentOS/RHEL/Debian/Ubuntu # Author: ChatGPT set -e # 版本 LIGHTTPD_VERSION="1.4.54" PHP_VERSION="8.2.20" MARIADB_VERSION="10.6.18" INSTALL_DIR="/usr/local" SRC_DIR="/usr/local/src" # 必须 root if [ "$(id -u)" -ne 0 ]; then echo "请用 root 用户运行此脚本!" exit 1 fi echo "===============================" echo " LNMP 源码编译安装脚本" echo " Lighttpd $LIGHTTPD_VERSION + PHP $PHP_VERSION + MariaDB $MARIADB_VERSION" echo "===============================" # 检测系统并安装依赖 echo "[1/5] 安装编译依赖..." if [ -f /etc/redhat-release ] || [ -f /etc/centos-release ]; then yum -y groupinstall "Development Tools" yum -y install wget gcc gcc-c++ make cmake autoconf automake libtool \ pcre pcre-devel zlib zlib-devel bzip2 bzip2-devel \ openssl openssl-devel libxml2 libxml2-devel sqlite sqlite-devel \ libcurl-devel libjpeg-devel libpng-devel freetype-devel libzip-devel elif [ -f /etc/debian_version ]; then apt update -y apt install -y build-essential wget gcc g++ make cmake autoconf automake libtool \ pkg-config zlib1g zlib1g-dev libpcre3 libpcre3-dev \ libbz2-dev libssl-dev libxml2 libxml2-dev \ libsqlite3-dev libcurl4-openssl-dev libjpeg-dev libpng-dev \ libfreetype6-dev libzip-dev else echo "不支持的系统,请手动安装依赖。" exit 1 fi mkdir -p $SRC_DIR cd $SRC_DIR ###################################### # 安装 Lighttpd ###################################### echo "[2/5] 编译安装 Lighttpd..." wget -c https://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-$LIGHTTPD_VERSION.tar.gz tar zxvf lighttpd-$LIGHTTPD_VERSION.tar.gz cd lighttpd-$LIGHTTPD_VERSION ./configure --prefix=$INSTALL_DIR/lighttpd make -j$(nproc) make install mkdir -p $INSTALL_DIR/lighttpd/{htdocs,etc} cp ./doc/lighttpd.conf $INSTALL_DIR/lighttpd/etc/lighttpd.conf cd .. ###################################### # 安装 MariaDB ###################################### echo "[3/5] 编译安装 MariaDB..." wget -c https://downloads.mariadb.org/interstitial/mariadb-$MARIADB_VERSION/source/mariadb-$MARIADB_VERSION.tar.gz tar zxvf mariadb-$MARIADB_VERSION.tar.gz cd mariadb-$MARIADB_VERSION cmake . -DCMAKE_INSTALL_PREFIX=$INSTALL_DIR/mariadb \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 make -j$(nproc) make install useradd -r -s /sbin/nologin mysql || true $INSTALL_DIR/mariadb/scripts/mysql_install_db --user=mysql --basedir=$INSTALL_DIR/mariadb --datadir=$INSTALL_DIR/mariadb/data cd .. ###################################### # 安装 PHP ###################################### echo "[4/5] 编译安装 PHP..." wget -c https://www.php.net/distributions/php-$PHP_VERSION.tar.gz tar zxvf php-$PHP_VERSION.tar.gz cd php-$PHP_VERSION ./configure --prefix=$INSTALL_DIR/php \ --with-config-file-path=$INSTALL_DIR/php/etc \ --enable-fpm \ --with-mysqli=$INSTALL_DIR/mariadb/bin/mysql_config \ --with-pdo-mysql=$INSTALL_DIR/mariadb \ --with-zlib \ --with-openssl \ --enable-mbstring \ --with-curl \ --with-gd \ --with-jpeg \ --with-freetype make -j$(nproc) make install cp php.ini-development $INSTALL_DIR/php/etc/php.ini cp sapi/fpm/php-fpm.conf $INSTALL_DIR/php/etc/php-fpm.conf cp sapi/fpm/www.conf $INSTALL_DIR/php/etc/php-fpm.d/www.conf || true cd .. ###################################### # 配置服务 ###################################### echo "[5/5] 配置 systemd 服务..." # Lighttpd cat > /etc/systemd/system/lighttpd.service <<EOF [Unit] Description=Lighttpd Web Server After=network.target [Service] ExecStart=$INSTALL_DIR/lighttpd/sbin/lighttpd -D -f $INSTALL_DIR/lighttpd/etc/lighttpd.conf ExecReload=/bin/kill -HUP \$MAINPID Restart=on-failure [Install] WantedBy=multi-user.target EOF # PHP-FPM cat > /etc/systemd/system/php-fpm.service <<EOF [Unit] Description=The PHP FastCGI Process Manager After=network.target [Service] ExecStart=$INSTALL_DIR/php/sbin/php-fpm --nodaemonize --fpm-config $INSTALL_DIR/php/etc/php-fpm.conf ExecReload=/bin/kill -USR2 \$MAINPID Restart=on-failure [Install] WantedBy=multi-user.target EOF # MariaDB cat > /etc/systemd/system/mariadb.service <<EOF [Unit] Description=MariaDB Database Server After=network.target [Service] ExecStart=$INSTALL_DIR/mariadb/bin/mysqld_safe --datadir=$INSTALL_DIR/mariadb/data ExecStop=$INSTALL_DIR/mariadb/bin/mysqladmin shutdown User=mysql Group=mysql Restart=on-failure [Install] WantedBy=multi-user.target EOF # FastCGI 配置 cat > $INSTALL_DIR/lighttpd/etc/15-fastcgi-php.conf <<EOF fastcgi.server += ( ".php" => (( "socket" => "/tmp/php-fpm.sock", "broken-scriptfilename" => "enable" )) ) EOF echo 'include "15-fastcgi-php.conf"' >> $INSTALL_DIR/lighttpd/etc/lighttpd.conf # 自启动 systemctl daemon-reload systemctl enable lighttpd php-fpm mariadb systemctl start mariadb php-fpm lighttpd # 初始化 MySQL $INSTALL_DIR/mariadb/bin/mysqladmin -u root password "root1234" # 测试页 echo "<?php phpinfo(); ?>" > $INSTALL_DIR/lighttpd/htdocs/info.php IP=$(hostname -I | awk '{print $1}') echo "===============================" echo " LNMP 编译安装完成!" echo " Lighttpd: http://$IP/" echo " PHP 测试: http://$IP/info.php" echo " MySQL root 密码: root1234" echo " 网站目录: $INSTALL_DIR/lighttpd/htdocs/" echo "==============================="
注:root1234 root1234 这两个需要修改成你需要设置的Myaql密码
保存为 install_lnmp.sh
即可使用:
脚本会自动安装:
-
Lighttpd
-
PHP + PHP-FPM (FastCGI)
-
MariaDB (MySQL 替代)
Kimi
#!/bin/bash # LNMP (Linux + Lighttpd + MySQL + PHP) 编译安装脚本 # 支持所有主流 Linux 发行版 # 包含编译安装和自启动配置 set -e # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # 软件版本 LIGHTTPD_VERSION="1.4.76" PHP_VERSION="8.2.12" MYSQL_VERSION="8.0.35" PCRE_VERSION="8.45" ZLIB_VERSION="1.3" # 安装目录 INSTALL_DIR="/usr/local" SRC_DIR="/usr/local/src" LIGHTTPD_DIR="$INSTALL_DIR/lighttpd" PHP_DIR="$INSTALL_DIR/php" MYSQL_DIR="$INSTALL_DIR/mysql" # 日志函数 log_info() { echo -e "${GREEN}[INFO]${NC} $1" } log_warn() { echo -e "${YELLOW}[WARN]${NC} $1" } log_error() { echo -e "${RED}[ERROR]${NC} $1" } log_step() { echo -e "${BLUE}[STEP]${NC} $1" } # 检查是否为root用户 check_root() { if [[ $EUID -ne 0 ]]; then log_error "请使用 root 用户运行此脚本" exit 1 fi } # 检测操作系统 detect_os() { if [[ -f /etc/os-release ]]; then . /etc/os-release OS=$ID VERSION=$VERSION_ID else log_error "无法检测操作系统" exit 1 fi log_info "检测到操作系统: $OS $VERSION" } # 获取服务器IP get_server_ip() { SERVER_IP=$(hostname -I | awk '{print $1}') if [[ -z "$SERVER_IP" ]]; then SERVER_IP="localhost" fi } # 安装编译依赖 install_dependencies() { log_step "安装编译依赖..." case $OS in ubuntu|debian) apt-get update -y apt-get install -y build-essential gcc g++ make cmake autoconf automake \ libtool pkg-config wget curl tar gzip bzip2 unzip \ libpcre3-dev zlib1g-dev libssl-dev libxml2-dev \ libbz2-dev libcurl4-openssl-dev libjpeg-dev \ libpng-dev libfreetype6-dev libmcrypt-dev \ libreadline-dev libzip-dev libsqlite3-dev \ libonig-dev libzip-dev libedit-dev \ libldap2-dev libsasl2-dev libkrb5-dev \ systemctl || true ;; centos|rhel|fedora) yum groupinstall -y "Development Tools" yum install -y gcc gcc-c++ make cmake autoconf automake \ libtool pkgconfig wget curl tar gzip bzip2 unzip \ pcre-devel zlib-devel openssl-devel libxml2-devel \ bzip2-devel libcurl-devel libjpeg-devel \ libpng-devel freetype-devel libmcrypt-devel \ readline-devel libzip-devel sqlite-devel \ oniguruma-devel libedit-devel \ openldap-devel cyrus-sasl-devel krb5-devel \ systemd-devel || true ;; *) log_error "不支持的操作系统: $OS" exit 1 ;; esac # 检查必要的编译工具 for tool in gcc g++ make cmake; do if ! command -v $tool &> /dev/null; then log_error "缺少必要的编译工具: $tool" exit 1 fi done } # 创建用户和组 create_users() { log_step "创建用户和组..." # 创建 www 用户 if ! id -u www &>/dev/null; then useradd -r -s /bin/false -d /var/www www fi # 创建 mysql 用户 if ! id -u mysql &>/dev/null; then useradd -r -s /bin/false -d /var/lib/mysql mysql fi } # 下载源码 download_sources() { log_step "下载源码..." mkdir -p "$SRC_DIR" cd "$SRC_DIR" # 下载 Lighttpd if [[ ! -f "lighttpd-${LIGHTTPD_VERSION}.tar.gz" ]]; then log_info "下载 Lighttpd ${LIGHTTPD_VERSION}..." wget -c "https://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-${LIGHTTPD_VERSION}.tar.gz" fi # 下载 PHP if [[ ! -f "php-${PHP_VERSION}.tar.gz" ]]; then log_info "下载 PHP ${PHP_VERSION}..." wget -c "https://www.php.net/distributions/php-${PHP_VERSION}.tar.gz" fi # 下载 MySQL if [[ ! -f "mysql-${MYSQL_VERSION}.tar.gz" ]]; then log_info "下载 MySQL ${MYSQL_VERSION}..." wget -c "https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-${MYSQL_VERSION}.tar.gz" fi # 下载依赖库 if [[ ! -f "pcre-${PCRE_VERSION}.tar.gz" ]]; then log_info "下载 PCRE ${PCRE_VERSION}..." wget -c "https://sourceforge.net/projects/pcre/files/pcre/${PCRE_VERSION}/pcre-${PCRE_VERSION}.tar.gz/download" -O "pcre-${PCRE_VERSION}.tar.gz" fi if [[ ! -f "zlib-${ZLIB_VERSION}.tar.gz" ]]; then log_info "下载 zlib ${ZLIB_VERSION}..." wget -c "https://www.zlib.net/zlib-${ZLIB_VERSION}.tar.gz" fi } # 编译安装 PCRE install_pcre() { log_step "编译安装 PCRE ${PCRE_VERSION}..." cd "$SRC_DIR" tar -xzf "pcre-${PCRE_VERSION}.tar.gz" cd "pcre-${PCRE_VERSION}" ./configure --prefix="$INSTALL_DIR/pcre" \ --enable-utf8 \ --enable-unicode-properties make -j$(nproc) make install # 添加库路径 echo "$INSTALL_DIR/pcre/lib" > /etc/ld.so.conf.d/pcre.conf ldconfig } # 编译安装 zlib install_zlib() { log_step "编译安装 zlib ${ZLIB_VERSION}..." cd "$SRC_DIR" tar -xzf "zlib-${ZLIB_VERSION}.tar.gz" cd "zlib-${ZLIB_VERSION}" ./configure --prefix="$INSTALL_DIR/zlib" make -j$(nproc) make install # 添加库路径 echo "$INSTALL_DIR/zlib/lib" > /etc/ld.so.conf.d/zlib.conf ldconfig } # 编译安装 Lighttpd install_lighttpd() { log_step "编译安装 Lighttpd ${LIGHTTPD_VERSION}..." cd "$SRC_DIR" tar -xzf "lighttpd-${LIGHTTPD_VERSION}.tar.gz" cd "lighttpd-${LIGHTTPD_VERSION}" # 生成 configure 脚本 ./autogen.sh # 配置编译选项 ./configure --prefix="$LIGHTTPD_DIR" \ --with-pcre="$INSTALL_DIR/pcre" \ --with-zlib="$INSTALL_DIR/zlib" \ --enable-static \ --enable-shared \ --with-openssl \ --with-ldap \ --with-mysql \ --with-webdav-locks \ --with-webdav-props \ --with-gdbm \ --with-memcached \ --with-lua \ --enable-ipv6 \ --with-bzip2 make -j$(nproc) make install # 创建必要目录 mkdir -p "$LIGHTTPD_DIR/htdocs" mkdir -p "$LIGHTTPD_DIR/logs" mkdir -p "$LIGHTTPD_DIR/conf.d" # 设置权限 chown -R www:www "$LIGHTTPD_DIR" # 添加库路径 echo "$LIGHTTPD_DIR/lib" > /etc/ld.so.conf.d/lighttpd.conf ldconfig } # 配置 Lighttpd configure_lighttpd() { log_step "配置 Lighttpd..." # 创建主配置文件 cat > "$LIGHTTPD_DIR/etc/lighttpd.conf" << 'EOF' server.modules = ( "mod_access", "mod_alias", "mod_compress", "mod_redirect", "mod_rewrite", "mod_accesslog", "mod_fastcgi", "mod_cgi", "mod_status", "mod_dirlisting" ) server.document-root = "/usr/local/lighttpd/htdocs" server.errorlog = "/usr/local/lighttpd/logs/error.log" server.pid-file = "/usr/local/lighttpd/logs/lighttpd.pid" server.username = "www" server.groupname = "www" server.port = 80 server.bind = "0.0.0.0" # 性能设置 server.max-worker = 4 server.max-keep-alive-requests = 16 server.max-keep-alive-idle = 5 server.max-read-idle = 60 server.max-write-idle = 360 # 日志设置 accesslog.filename = "/usr/local/lighttpd/logs/access.log" # 压缩设置 compress.cache-dir = "/usr/local/lighttpd/cache/compress/" compress.filetype = ( "application/javascript", "text/css", "text/html", "text/plain" ) # 安全设置 url.access-deny = ( "~", ".inc" ) static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" ) # 索引文件 index-file.names = ( "index.php", "index.html", "index.htm" ) # MIME 类型 include_shell "/usr/local/lighttpd/share/lighttpd/create-mime.assign.pl" # FastCGI 设置 (PHP) fastcgi.server = ( ".php" => (( "host" => "127.0.0.1", "port" => 9000, "broken-scriptfilename" => "enable" )) ) EOF # 创建 MIME 类型配置文件 mkdir -p "$LIGHTTPD_DIR/share/lighttpd" cat > "$LIGHTTPD_DIR/share/lighttpd/create-mime.assign.pl" << 'EOF' #!/usr/bin/perl use strict; my %mime = ( '.pdf' => 'application/pdf', '.sig' => 'application/pgp-signature', '.spl' => 'application/futuresplash', '.class' => 'application/octet-stream', '.ps' => 'application/postscript', '.torrent' => 'application/x-bittorrent', '.dvi' => 'application/x-dvi', '.gz' => 'application/x-gzip', '.pac' => 'application/x-ns-proxy-autoconfig', '.swf' => 'application/x-shockwave-flash', '.tar.gz' => 'application/x-tgz', '.tgz' => 'application/x-tgz', '.tar' => 'application/x-tar', '.zip' => 'application/zip', '.mp3' => 'audio/mpeg', '.m3u' => 'audio/x-mpegurl', '.wma' => 'audio/x-ms-wma', '.wax' => 'audio/x-ms-wax', '.ogg' => 'application/ogg', '.wav' => 'audio/x-wav', '.gif' => 'image/gif', '.jpg' => 'image/jpeg', '.jpeg' => 'image/jpeg', '.png' => 'image/png', '.xbm' => 'image/x-xbitmap', '.xpm' => 'image/x-xpixmap', '.xwd' => 'image/x-xwindowdump', '.css' => 'text/css', '.html' => 'text/html', '.htm' => 'text/html', '.js' => 'text/javascript', '.asc' => 'text/plain', '.c' => 'text/plain', '.cpp' => 'text/plain', '.log' => 'text/plain', '.conf' => 'text/plain', '.text' => 'text/plain', '.txt' => 'text/plain', '.dtd' => 'text/xml', '.xml' => 'text/xml', '.mpeg' => 'video/mpeg', '.mpg' => 'video/mpeg', '.mov' => 'video/quicktime', '.qt' => 'video/quicktime', '.avi' => 'video/x-msvideo', '.asf' => 'video/x-ms-asf', '.asx' => 'video/x-ms-asf', '.wmv' => 'video/x-ms-wmv', '.bz2' => 'application/x-bzip', '.tbz' => 'application/x-bzip-compressed-tar', '.tar.bz2' => 'application/x-bzip-compressed-tar' ); print "mimetype.assign = (\n"; foreach my $k (keys %mime) { print " \"$k\" => \"$mime{$k}\",\n"; } print ")\n"; EOF chmod +x "$LIGHTTPD_DIR/share/lighttpd/create-mime.assign.pl" # 创建必要目录 mkdir -p "$LIGHTTPD_DIR/cache/compress" mkdir -p "$LIGHTTPD_DIR/logs" chown -R www:www "$LIGHTTPD_DIR" } # 编译安装 MySQL install_mysql() { log_step "编译安装 MySQL ${MYSQL_VERSION}..." cd "$SRC_DIR" tar -xzf "mysql-${MYSQL_VERSION}.tar.gz" cd "mysql-${MYSQL_VERSION}" # 创建构建目录 mkdir -p build cd build # CMake 配置 cmake .. \ -DCMAKE_INSTALL_PREFIX="$MYSQL_DIR" \ -DMYSQL_DATADIR="$MYSQL_DIR/data" \ -DSYSCONFDIR="$MYSQL_DIR/etc" \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_READLINE=1 \ -DWITH_SSL=system \ -DWITH_ZLIB=system \ -DENABLED_LOCAL_INFILE=1 \ -DMYSQL_UNIX_ADDR="$MYSQL_DIR/mysql.sock" \ -DDEFAULT_CHARSET=utf8mb4 \ -DDEFAULT_COLLATION=utf8mb4_general_ci \ -DWITH_BOOST="$SRC_DIR" \ -DFORCE_INSOURCE_BUILD=1 make -j$(nproc) make install # 初始化数据库 cd "$MYSQL_DIR" ./bin/mysqld --initialize --user=mysql --basedir="$MYSQL_DIR" --datadir="$MYSQL_DIR/data" # 设置权限 chown -R mysql:mysql "$MYSQL_DIR" # 生成临时密码 TEMP_PASSWORD=$(grep 'temporary password' "$MYSQL_DIR/data"/*.err | tail -1 | awk '{print $NF}') log_info "MySQL 临时密码: $TEMP_PASSWORD" # 创建配置文件 cat > "$MYSQL_DIR/etc/my.cnf" << EOF [mysqld] basedir=$MYSQL_DIR datadir=$MYSQL_DIR/data port=3306 socket=$MYSQL_DIR/mysql.sock pid-file=$MYSQL_DIR/mysql.pid user=mysql # 字符集设置 character-set-server=utf8mb4 collation-server=utf8mb4_general_ci # InnoDB 设置 innodb_buffer_pool_size=128M innodb_log_file_size=48M innodb_flush_method=O_DIRECT # 日志设置 log-error=$MYSQL_DIR/logs/error.log slow-query-log=1 slow-query-log-file=$MYSQL_DIR/logs/slow.log long_query_time=2 [mysql] socket=$MYSQL_DIR/mysql.sock [client] socket=$MYSQL_DIR/mysql.sock EOF mkdir -p "$MYSQL_DIR/logs" chown -R mysql:mysql "$MYSQL_DIR" } # 编译安装 PHP install_php() { log_step "编译安装 PHP ${PHP_VERSION}..." cd "$SRC_DIR" tar -xzf "php-${PHP_VERSION}.tar.gz" cd "php-${PHP_VERSION}" # 配置编译选项 ./configure --prefix="$PHP_DIR" \ --with-config-file-path="$PHP_DIR/etc" \ --with-config-file-scan-dir="$PHP_DIR/etc/php.d" \ --enable-fpm \ --with-fpm-user=www \ --with-fpm-group=www \ --with-mysqli=mysqlnd \ --with-pdo-mysql=mysqlnd \ --with-mysql-sock="$MYSQL_DIR/mysql.sock" \ --with-openssl \ --with-zlib \ --with-bz2 \ --with-curl \ --with-gd \ --with-jpeg \ --with-png \ --with-freetype \ --with-gettext \ --with-mhash \ --with-readline \ --with-xmlrpc \ --with-xsl \ --with-zip \ --with-iconv \ --enable-bcmath \ --enable-calendar \ --enable-exif \ --enable-ftp \ --enable-gd-native-ttf \ --enable-intl \ --enable-json \ --enable-mbstring \ --enable-pcntl \ --enable-shmop \ --enable-soap \ --enable-sockets \ --enable-sysvmsg \ --enable-sysvsem \ --enable-sysvshm \ --enable-wddx \ --enable-zip \ --enable-opcache \ --enable-cli \ --enable-cgi make -j$(nproc) make install # 复制配置文件 cp php.ini-production "$PHP_DIR/etc/php.ini" cp "$PHP_DIR/etc/php-fpm.conf.default" "$PHP_DIR/etc/php-fpm.conf" # 配置 PHP-FPM cat > "$PHP_DIR/etc/php-fpm.conf" << EOF [global] pid = run/php-fpm.pid error_log = log/php-fpm.log log_level = notice [www] listen = 127.0.0.1:9000 listen.backlog = 65535 listen.owner = www listen.group = www listen.mode = 0660 user = www group = www pm = dynamic pm.max_children = 50 pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 35 pm.max_requests = 1000 request_terminate_timeout = 300 request_slowlog_timeout = 30 slowlog = log/slow.log EOF # 创建必要目录 mkdir -p "$PHP_DIR/log" mkdir -p "$PHP_DIR/run" mkdir -p "$PHP_DIR/etc/php.d" # 配置 PHP cat > "$PHP_DIR/etc/php.ini" << EOF ; PHP 配置文件 [PHP] engine = On short_open_tag = On precision = 14 output_buffering = 4096 zlib.output_compression = Off implicit_flush = Off unserialize_callback_func = serialize_precision = -1 disable_functions = disable_classes = zend.enable_gc = On expose_php = Off max_execution_time = 300 max_input_time = 300 memory_limit = 256M error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT display_errors = Off display_startup_errors = Off log_errors = On log_errors_max_len = 1024 ignore_repeated_errors = Off ignore_repeated_source = Off report_memleaks = On html_errors = On error_log = /usr/local/php/log/php_error.log variables_order = "GPCS" request_order = "GP" register_argc_argv = Off auto_globals_jit = On post_max_size = 64M auto_prepend_file = auto_append_file = default_mimetype = "text/html" default_charset = "UTF-8" doc_root = user_dir = enable_dl = Off file_uploads = On upload_tmp_dir = "/tmp" upload_max_filesize = 64M max_file_uploads = 20 allow_url_fopen = On allow_url_include = Off default_socket_timeout = 60 [CLI Server] cli_server.color = On [Date] date.timezone = Asia/Shanghai [filter] filter.default = unsafe_raw filter.default_flags = [iconv] iconv.input_encoding = iconv.internal_encoding = iconv.output_encoding = [intl] intl.default_locale = intl.error_level = 0 intl.use_exceptions = 0 [sqlite3] sqlite3.extension_dir = [Pcre] pcre.backtrack_limit = 100000 pcre.recursion_limit = 100000 [Pdo] pdo_mysql.default_socket = $MYSQL_DIR/mysql.sock [Pdo_mysql] pdo_mysql.default_socket = $MYSQL_DIR/mysql.sock [MySQLi] mysqli.default_socket = $MYSQL_DIR/mysql.sock mysqli.default_host = mysqli.default_user = mysqli.default_pw = mysqli.reconnect = Off [mysqlnd] mysqlnd.collect_statistics = On mysqlnd.collect_memory_statistics = On [OPcache] opcache.enable = 1 opcache.enable_cli = 1 opcache.memory_consumption = 128 opcache.interned_strings_buffer = 8 opcache.max_accelerated_files = 4000 opcache.revalidate_freq = 2 opcache.fast_shutdown = 1 [curl] curl.cainfo = [openssl] openssl.cafile = openssl.capath = EOF chown -R www:www "$PHP_DIR" } # 创建 Systemd 服务 create_systemd_services() { log_step "创建 Systemd 服务..." # Lighttpd 服务 cat > /etc/systemd/system/lighttpd.service << EOF [Unit] Description=Lighttpd Web Server After=network.target [Service] Type=forking PIDFile=$LIGHTTPD_DIR/logs/lighttpd.pid ExecStartPre=/usr/local/lighttpd/sbin/lighttpd -t -f /usr/local/lighttpd/etc/lighttpd.conf ExecStart=/usr/local/lighttpd/sbin/lighttpd -f /usr/local/lighttpd/etc/lighttpd.conf ExecReload=/bin/kill -USR1 \$MAINPID ExecStop=/bin/kill -WINCH \$MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target EOF # MySQL 服务 cat > /etc/systemd/system/mysql.service << EOF [Unit] Description=MySQL Server After=network.target [Service] Type=forking User=mysql Group=mysql PIDFile=$MYSQL_DIR/mysql.pid ExecStartPre=/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --ignore-db-dir=lost+found ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/etc/my.cnf --daemonize --pid-file=/usr/local/mysql/mysql.pid ExecReload=/bin/kill -HUP \$MAINPID ExecStop=/bin/kill -QUIT \$MAINPID PrivateTmp=false [Install] WantedBy=multi-user.target EOF # PHP-FPM 服务 cat > /etc/systemd/system/php-fpm.service << EOF [Unit] Description=PHP FastCGI Process Manager After=network.target [Service] Type=forking PIDFile=$PHP_DIR/run/php-fpm.pid ExecStartPre=/usr/local/php/sbin/php-fpm -t ExecStart=/usr/local/php/sbin/php-fpm --daemonize --pid /usr/local/php/run/php-fpm.pid ExecReload=/bin/kill -USR2 \$MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target EOF # 重新加载 systemd systemctl daemon-reload } # 设置环境变量 setup_environment() { log_step "设置环境变量..." cat > /etc/profile.d/lnmp.sh << EOF # LNMP 环境变量 export PATH=\$PATH:/usr/local/lighttpd/sbin:/usr/local/mysql/bin:/usr/local/php/bin:/usr/local/php/sbin export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/usr/local/lighttpd/lib:/usr/local/mysql/lib:/usr/local/pcre/lib:/usr/local/zlib/lib EOF chmod +x /etc/profile.d/lnmp.sh source /etc/profile.d/lnmp.sh } # 创建测试文件 create_test_files() { log_step "创建测试文件..." # 创建 index.php cat > "$LIGHTTPD_DIR/htdocs/index.php" << 'EOF' <!DOCTYPE html> <html> <head> <title>LNMP 编译安装成功</title> <meta charset="UTF-8"> <style> body { font-family: Arial, sans-serif; margin: 40px; background-color: #f5f5f5; } .container { max-width: 800px; margin: 0 auto; background: white; padding: 30px; border-radius: 10px; box-shadow: 0 2px 10px rgba(0,0,0,0.1); } .success { color: #28a745; font-size: 24px; } .info { background-color: #e7f3ff; padding: 15px; border-left: 4px solid #2196F3; margin: 15px 0; } .test-links { margin: 20px 0; } .test-links a { display: inline-block; margin: 10px; padding: 10px 20px; background-color: #007bff; color: white; text-decoration: none; border-radius: 5px; } .test-links a:hover { background-color: #0056b3; } .code { background-color: #f8f9fa; padding: 10px; border-radius: 3px; font-family: monospace; } </style> </head> <body> <div class="container"> <h1 class="success">LNMP 编译安装成功!</h1> <div class="info"> <h3>环境信息</h3> <p><strong>Web服务器:</strong> Lighttpd (编译安装)</p> <p><strong>PHP版本:</strong> <?php echo PHP_VERSION; ?></p> <p><strong>MySQL版本:</strong> <?php echo phpversion('mysql') ?: '已安装'; ?></p> <p><strong>安装时间:</strong> <?php echo date('Y-m-d H:i:s'); ?></p> <p><strong>服务器IP:</strong> <?php echo $_SERVER['SERVER_ADDR']; ?></p> </div> <div class="test-links"> <h3>测试链接</h3> <a href="info.php" target="_blank">📋 PHP 信息</a> <a href="test_mysql.php" target="_blank">🗄️ MySQL 连接测试</a> <a href="phpmyadmin" target="_blank">🛠️ phpMyAdmin (需安装)</a> </div> <div class="info"> <h3>安装路径</h3> <p>• Lighttpd: <span class="code">/usr/local/lighttpd</span></p> <p>• PHP: <span class="code">/usr/local/php</span></p> <p>• MySQL: <span class="code">/usr/local/mysql</span></p> <p>• 网站根目录: <span class="code">/usr/local/lighttpd/htdocs</span></p> </div> <div class="info"> <h3>服务管理</h3> <p>• 启动 Lighttpd: <span class="code">systemctl start lighttpd</span></p> <p>• 启动 PHP-FPM: <span class="code">systemctl start php-fpm</span></p> <p>• 启动 MySQL: <span class="code">systemctl start mysql</span></p> <p>• 查看状态: <span class="code">systemctl status lighttpd</span></p> </div> </div> </body> </html> EOF # 创建 info.php cat > "$LIGHTTPD_DIR/htdocs/info.php" << 'EOF' <?php phpinfo(); ?> EOF # 创建 MySQL 测试文件 cat > "$LIGHTTPD_DIR/htdocs/test_mysql.php" << 'EOF' <?php $servername = "127.0.0.1"; $username = "root"; $password = ""; try { $conn = new PDO("mysql:host=$servername;port=3306", $username, $password); echo "<h1 style='color: green;'>MySQL 连接成功</h1>"; echo "<p>服务器信息: " . $conn->getAttribute(PDO::ATTR_SERVER_INFO) . "</p>"; echo "<p>MySQL 版本: " . $conn->getAttribute(PDO::ATTR_SERVER_VERSION) . "</p>"; } catch(PDOException $e) { echo "<h1 style='color: red;'>MySQL 连接失败</h1>"; echo "<p>错误信息: " . $e->getMessage() . "</p>"; } ?> EOF chown -R www:www "$LIGHTTPD_DIR/htdocs" } # 设置 MySQL root 密码 setup_mysql_root() { log_step "设置 MySQL root 密码..." # 生成随机密码 MYSQL_ROOT_PASSWORD=$(openssl rand -base64 12) # 等待 MySQL 启动 sleep 5 # 修改 root 密码 "$MYSQL_DIR/bin/mysql" -u root << EOF ALTER USER 'root'@'localhost' IDENTIFIED BY '$MYSQL_ROOT_PASSWORD'; DELETE FROM mysql.user WHERE User=''; DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1'); DROP DATABASE IF EXISTS test; DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%'; FLUSH PRIVILEGES; EOF # 更新测试文件密码 sed -i "s/\$password = \"\"/\$password = \"$MYSQL_ROOT_PASSWORD\"/" "$LIGHTTPD_DIR/htdocs/test_mysql.php" log_info "MySQL root 密码已设置为: $MYSQL_ROOT_PASSWORD" log_warn "请妥善保存此密码!" # 保存密码到文件 echo "MySQL root 密码: $MYSQL_ROOT_PASSWORD" > /root/mysql_root_password.txt chmod 600 /root/mysql_root_password.txt } # 启动服务并设置开机自启 start_and_enable_services() { log_step "启动服务并设置开机自启..." # 启动服务 systemctl start lighttpd systemctl start php-fpm systemctl start mysql # 设置开机自启 systemctl enable lighttpd systemctl enable php-fpm systemctl enable mysql # 检查服务状态 for service in lighttpd php-fpm mysql; do if systemctl is-active --quiet $service; then log_info "$service 服务运行正常" else log_warn "$service 服务可能未正常启动" fi done } # 保存安装信息 save_install_info() { cat > /root/lnmp_compile_info.txt << EOF LNMP 编译安装信息 ================= 安装时间: $(date) 操作系统: $OS $VERSION Lighttpd版本: $LIGHTTPD_VERSION PHP版本: $PHP_VERSION MySQL版本: $MYSQL_VERSION 服务器IP: $SERVER_IP 安装路径: - Lighttpd: $LIGHTTPD_DIR - PHP: $PHP_DIR - MySQL: $MYSQL_DIR 服务管理: - 启动 Lighttpd: systemctl start lighttpd - 启动 PHP-FPM: systemctl start php-fpm - 启动 MySQL: systemctl start mysql - 查看状态: systemctl status lighttpd 测试链接: - 主页: http://$SERVER_IP - PHP信息: http://$SERVER_IP/info.php - MySQL测试: http://$SERVER_IP/test_mysql.php 重要文件: - Lighttpd配置: $LIGHTTPD_DIR/etc/lighttpd.conf - PHP配置: $PHP_DIR/etc/php.ini - MySQL配置: $MYSQL_DIR/etc/my.cnf - MySQL root密码: 见 /root/mysql_root_password.txt 环境变量: source /etc/profile.d/lnmp.sh EOF log_info "安装信息已保存到 /root/lnmp_compile_info.txt" } # 显示安装完成信息 show_completion_info() { echo "" echo "==========================================" log_info "LNMP 编译安装完成!" echo "==========================================" echo "" echo "Web服务器信息:" echo " Lighttpd 状态: $(systemctl is-active lighttpd)" echo " 安装路径: $LIGHTTPD_DIR" echo " 访问地址: http://$SERVER_IP" echo "" echo "PHP信息:" echo " PHP-FPM 状态: $(systemctl is-active php-fpm)" echo " 安装路径: $PHP_DIR" echo "" echo "MySQL信息:" echo " MySQL 状态: $(systemctl is-active mysql)" echo " 安装路径: $MYSQL_DIR" echo " Root密码: 见 /root/mysql_root_password.txt" echo "" echo "🔗 测试链接:" echo " 主页: http://$SERVER_IP" echo " PHP信息: http://$SERVER_IP/info.php" echo " MySQL测试: http://$SERVER_IP/test_mysql.php" echo "" echo "常用命令:" echo " 重启Lighttpd: systemctl restart lighttpd" echo " 重启PHP-FPM: systemctl restart php-fpm" echo " 重启MySQL: systemctl restart mysql" echo "" log_warn "重要: MySQL root 密码已保存到 /root/mysql_root_password.txt" echo "==========================================" } # 主函数 main() { echo "==========================================" echo " LNMP 编译安装一键脚本" echo " (Linux + Lighttpd + MySQL + PHP)" echo "==========================================" echo "" check_root detect_os get_server_ip # 安装过程 install_dependencies create_users download_sources install_pcre install_zlib install_lighttpd configure_lighttpd install_mysql install_php create_systemd_services setup_environment create_test_files start_and_enable_services setup_mysql_root save_install_info # 显示完成信息 show_completion_info } # 运行主函数 main "$@"
保存为 install_lnmp.sh
即可使用:
✅ 完整LNMP环境: Linux + Lighttpd + MySQL + PHP
✅ 多系统支持: Ubuntu、Debian、CentOS、RHEL 等主流 Linux 发行版
✅ 自动版本检测: 自动选择和安装最适合的PHP版本
✅ 安全优化: MySQL安全配置、防火墙规则、文件权限设置
✅ 性能优化: PHP-FPM、Lighttpd性能调优
✅ 完整测试: 包含PHP和MySQL连接测试文件
✅ 可选组件: 可选择安装 phpMyAdmin
✅ 信息保存: 自动生成安装信息文件供后续参考
✅ 服务管理: 自动启动和启用所有服务
-
主页:
http://您的服务器IP/
-
PHP信息:
http://您的服务器IP/info.php
-
MySQL测试:
http://您的服务器IP/test_mysql.php
-
phpMyAdmin:
http://您的服务器IP/phpmyadmin
(如果安装了)
deepseek
#!/bin/bash # 检查 root 权限 if [[ $EUID -ne 0 ]]; then echo "此脚本需要 root 权限。请使用 sudo 或以 root 用户身份运行。" exit 1 fi # 设置颜色输出 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # 日志函数 log_info() { echo -e "${GREEN}[INFO]${NC} $1" } log_warning() { echo -e "${YELLOW}[WARNING]${NC} $1" } log_error() { echo -e "${RED}[ERROR]${NC} $1" } # 检测系统类型并安装依赖 install_dependencies() { log_info "检测系统类型并安装编译依赖..." if [ -f /etc/os-release ]; then . /etc/os-release OS=$ID else log_error "无法检测操作系统类型。" exit 1 fi case $OS in ubuntu|debian) apt-get update apt-get install -y wget build-essential autoconf automake libtool pkg-config \ libpcre3-dev libbz2-dev zlib1g-dev libssl-dev libxml2-dev libjpeg-dev \ libpng-dev libgdbm-dev libmysqlclient-dev libcurl4-openssl-dev ;; centos|rhel|fedora) if [ "$OS" = "centos" ] || [ "$OS" = "rhel" ]; then yum install -y epel-release fi yum groupinstall -y "Development Tools" yum install -y wget pcre-devel bzip2-devel zlib-devel openssl-devel \ libxml2-devel libjpeg-turbo-devel libpng-devel gdbm-devel \ mysql-devel curl-devel ;; *) log_warning "未知操作系统,尝试安装通用依赖..." if command -v apt-get &> /dev/null; then apt-get update apt-get install -y wget build-essential autoconf automake libtool pkg-config elif command -v yum &> /dev/null; then yum groupinstall -y "Development Tools" yum install -y wget elif command -v dnf &> /dev/null; then dnf groupinstall -y "Development Tools" dnf install -y wget else log_error "无法确定包管理器,请手动安装编译工具和依赖。" exit 1 fi ;; esac } # 编译安装 Lighttpd compile_lighttpd() { log_info "开始编译安装 Lighttpd..." cd /tmp wget https://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.54.tar.gz tar zxvf lighttpd-1.4.54.tar.gz cd lighttpd-1.4.54 ./configure --prefix=/usr/local/lighttpd \ --with-openssl \ --with-zlib \ --with-bzip2 \ --with-pcre make -j$(nproc) make install # 创建必要的目录 mkdir -p /usr/local/lighttpd/htdocs mkdir -p /usr/local/lighttpd/etc mkdir -p /usr/local/lighttpd/logs mkdir -p /usr/local/lighttpd/var/run # 复制配置文件 cp ./doc/lighttpd.conf /usr/local/lighttpd/etc/ # 创建 lighttpd 用户和组 if ! id "lighttpd" &>/dev/null; then useradd -r -s /sbin/nologin lighttpd fi # 设置权限 chown -R lighttpd:lighttpd /usr/local/lighttpd log_info "Lighttpd 编译安装完成。" } # 配置 Lighttpd configure_lighttpd() { log_info "配置 Lighttpd..." # 备份原始配置 cp /usr/local/lighttpd/etc/lighttpd.conf /usr/local/lighttpd/etc/lighttpd.conf.backup # 创建新的配置文件 cat > /usr/local/lighttpd/etc/lighttpd.conf << 'EOF' server.modules = ( "mod_access", "mod_alias", "mod_compress", "mod_redirect", "mod_fastcgi", ) server.document-root = "/usr/local/lighttpd/htdocs" server.upload-dirs = ( "/var/cache/lighttpd/uploads" ) server.errorlog = "/usr/local/lighttpd/logs/error.log" server.pid-file = "/usr/local/lighttpd/var/run/lighttpd.pid" server.username = "lighttpd" server.groupname = "lighttpd" server.port = 80 index-file.names = ( "index.php", "index.html", "index.lighttpd.html" ) url.access-deny = ( "~", ".inc" ) static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" ) compress.cache-dir = "/var/cache/lighttpd/compress/" compress.filetype = ( "application/javascript", "text/css", "text/html", "text/plain" ) # default listening port for IPv6 falls back to the IPv4 port include_shell "/usr/local/lighttpd/share/lighttpd/use-ipv6.pl " + server.port include_shell "/usr/local/lighttpd/share/lighttpd/create-mime.conf.pl" # FastCGI configuration for PHP fastcgi.server = ( ".php" => (( "socket" => "/tmp/php.socket", "bin-path" => "/usr/local/php/bin/php-cgi", "max-procs" => 2, "bin-environment" => ( "PHP_FCGI_CHILDREN" => "4", "PHP_FCGI_MAX_REQUESTS" => "10000" ), "broken-scriptfilename" => "enable" )) ) EOF # 创建测试页面 cat > /usr/local/lighttpd/htdocs/index.php << 'EOF' <?php phpinfo(); ?> EOF chown lighttpd:lighttpd /usr/local/lighttpd/htdocs/index.php } # 创建 Lighttpd 系统服务 create_lighttpd_service() { log_info "创建 Lighttpd 系统服务..." # 创建 systemd 服务文件 cat > /etc/systemd/system/lighttpd.service << 'EOF' [Unit] Description=Lighttpd Web Server After=network.target [Service] Type=forking PIDFile=/usr/local/lighttpd/var/run/lighttpd.pid ExecStart=/usr/local/lighttpd/sbin/lighttpd -f /usr/local/lighttpd/etc/lighttpd.conf ExecReload=/bin/kill -USR1 $MAINPID ExecStop=/bin/kill -QUIT $MAINPID User=lighttpd Group=lighttpd [Install] WantedBy=multi-user.target EOF # 启用并启动服务 systemctl daemon-reload systemctl enable lighttpd systemctl start lighttpd # 检查服务状态 if systemctl is-active --quiet lighttpd; then log_info " Lighttpd 服务启动成功!" else log_error " Lighttpd 服务启动失败,请检查配置。" systemctl status lighttpd fi } # 编译安装 PHP compile_php() { log_info "开始编译安装 PHP..." cd /tmp wget https://www.php.net/distributions/php-7.4.33.tar.gz tar zxvf php-7.4.33.tar.gz cd php-7.4.33 ./configure --prefix=/usr/local/php \ --with-config-file-path=/usr/local/php/etc \ --enable-fpm \ --with-fpm-user=lighttpd \ --with-fpm-group=lighttpd \ --with-mysqli \ --with-pdo-mysql \ --with-openssl \ --with-zlib \ --with-curl \ --with-gd \ --with-jpeg \ --with-png-dir \ --with-gettext \ --with-zip \ --enable-mbstring make -j$(nproc) make install # 复制配置文件 mkdir -p /usr/local/php/etc cp php.ini-development /usr/local/php/etc/php.ini # 创建 PHP-FPM 配置文件 cat > /usr/local/php/etc/php-fpm.conf << 'EOF' [global] pid = /usr/local/php/var/run/php-fpm.pid error_log = /usr/local/php/var/log/php-fpm.log log_level = notice [www] user = lighttpd group = lighttpd listen = /tmp/php.socket listen.owner = lighttpd listen.group = lighttpd pm = dynamic pm.max_children = 5 pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 3 EOF log_info "PHP 编译安装完成。" } # 创建 PHP-FPM 系统服务 create_phpfpm_service() { log_info "创建 PHP-FPM 系统服务..." # 创建 systemd 服务文件 cat > /etc/systemd/system/php-fpm.service << 'EOF' [Unit] Description=PHP FastCGI Process Manager After=network.target [Service] Type=forking PIDFile=/usr/local/php/var/run/php-fpm.pid ExecStart=/usr/local/php/sbin/php-fpm --daemonize --fpm-config /usr/local/php/etc/php-fpm.conf ExecReload=/bin/kill -USR2 $MAINPID ExecStop=/bin/kill -QUIT $MAINPID [Install] WantedBy=multi-user.target EOF # 启用并启动服务 systemctl daemon-reload systemctl enable php-fpm systemctl start php-fpm # 检查服务状态 if systemctl is-active --quiet php-fpm; then log_info " PHP-FPM 服务启动成功!" else log_error " PHP-FPM 服务启动失败,请检查配置。" systemctl status php-fpm fi } # 安装 MySQL (使用包管理器安装) install_mysql() { log_info "开始安装 MySQL..." if [ -f /etc/os-release ]; then . /etc/os-release OS=$ID fi case $OS in ubuntu|debian) apt-get install -y mysql-server mysql-client ;; centos|rhel|fedora) if [ "$OS" = "centos" ] || [ "$OS" = "rhel" ]; then yum install -y mariadb-server mariadb else yum install -y mysql-server mysql fi ;; *) # 尝试使用通用方法安装 if command -v apt-get &> /dev/null; then apt-get install -y mysql-server mysql-client elif command -v yum &> /dev/null; then yum install -y mysql-server mysql elif command -v dnf &> /dev/null; then dnf install -y mysql-server mysql else log_error "无法确定包管理器,请手动安装 MySQL。" return 1 fi ;; esac # 启动 MySQL 服务 systemctl enable mysql systemctl start mysql # 安全配置 MySQL log_info "进行 MySQL 安全配置..." MYSQL_ROOT_PASSWORD=$(openssl rand -base64 12 | tr -d '/+=' | cut -c1-12) mysql -u root -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '$MYSQL_ROOT_PASSWORD'; FLUSH PRIVILEGES;" # 保存密码到文件 echo "MySQL root 密码: $MYSQL_ROOT_PASSWORD" > /root/mysql_password.txt chmod 600 /root/mysql_password.txt log_info "MySQL root 密码已保存到 /root/mysql_password.txt" # 检查服务状态 if systemctl is-active --quiet mysql; then log_info " MySQL 服务启动成功!" else log_error " MySQL 服务启动失败,请检查配置。" systemctl status mysql fi } # 显示安装结果 show_result() { log_info " LNMP 环境编译安装完成!" echo "" echo "安装信息:" echo " - Lighttpd 安装路径: /usr/local/lighttpd" echo " - PHP 安装路径: /usr/local/php" echo " - MySQL 已安装并配置" echo "" echo "服务状态:" systemctl status lighttpd --no-pager -l echo "" systemctl status php-fpm --no-pager -l echo "" systemctl status mysql --no-pager -l echo "" echo "访问地址:" echo " - 网站根目录: /usr/local/lighttpd/htdocs" echo " - 测试页面: http://$(hostname -I | awk '{print $1}')/index.php" echo "" if [ -f /root/mysql_password.txt ]; then echo "MySQL root 密码已保存到: /root/mysql_password.txt" echo "请妥善保管此密码!" fi echo "" echo "下一步操作建议:" echo "1. 修改 MySQL root 密码 (如果自动生成的密码不符合要求)" echo "2. 配置虚拟主机 (如果需要)" echo "3. 安装 SSL 证书 (如果需要 HTTPS)" echo "4. 配置防火墙开放必要端口" } # 主安装流程 main() { log_info "开始编译安装 LNMP 环境 (Lighttpd + PHP + MySQL)" # 安装依赖 install_dependencies # 编译安装 Lighttpd compile_lighttpd configure_lighttpd create_lighttpd_service # 编译安装 PHP compile_php create_phpfpm_service # 安装 MySQL install_mysql # 显示结果 show_result } # 执行主函数 main "$@"
保存为 install_lnmp.sh
即可使用:
-
自动检测系统类型(Ubuntu/Debian/CentOS/RHEL)
-
安装 Lighttpd Web 服务器
-
安装 MySQL/MariaDB 数据库
-
安装 PHP 及常用扩展
-
自动配置 PHP-FPM 与 Lighttpd 协同工作
-
自动生成安全的 MySQL root 密码
-
创建 PHP 测试页面
-
显示安装结果和后续操作建议
sicnature ---------------------------------------------------------------------
I P 地 址: 216.73.216.116
区 域 位 置: 美国加利福尼亚洛杉矶
系 统 信 息:

Original content, please indicate the source:
同福客栈论坛 | 蟒蛇科普 | 海南乡情论坛 | JiaYu Blog
sicnature ---------------------------------------------------------------------
没有评论