linux服务器下LNMP安装与配置方法

  • Post category:Linux

安装LNMP(即Linux + Nginx + MySQL + PHP)需要以下步骤:

准备工作

  1. 在Linux服务器上安装必要的依赖库: sudo apt-get updatesudo apt-get install -y build-essential openssl libssl-dev curl wget vim

  2. 下载最新版的Nginx、MySQL和PHP源码包:

cd /usr/local/src
sudo wget http://nginx.org/download/nginx-1.18.0.tar.gz
sudo wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz
sudo wget https://www.php.net/distributions/php-7.4.12.tar.gz

安装Nginx

  1. 解压缩Nginx源码包: sudo tar -zxvf nginx-1.18.0.tar.gz

  2. 进入Nginx源码目录: cd nginx-1.18.0

  3. 配置编译参数:sudo ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

  4. 编译并安装Nginx: sudo make && sudo make install

  5. 启动Nginx: sudo /usr/local/nginx/sbin/nginx

  6. 检查Nginx是否成功启动:在浏览器中访问服务器的IP地址或域名,如果看到“Welcome to nginx!”的页面,则说明Nginx已经正确安装并运行。

安装MySQL

  1. 解压缩MySQL源码包: sudo tar -xvf mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz

  2. 将解压后的MySQL目录改名为mysql并移动到/usr/local目录下: sudo mv mysql-8.0.21-linux-glibc2.12-x86_64 /usr/local/mysql

  3. 创建MySQL相关的用户和用户组,并设置MySQL目录的访问权限:

sudo useradd mysql
sudo groupadd mysql
sudo chown -R mysql:mysql /usr/local/mysql
sudo chmod -R 755 /usr/local/mysql
  1. 初始化MySQL数据库:
cd /usr/local/mysql/bin
sudo ./mysqld --user=mysql --initialize --console
  1. 启动MySQL服务: sudo ./mysqld_safe &

  2. 进入MySQL命令行: sudo ./mysql -u root -p,默认密码为空,直接回车即可。

  3. 修改MySQL root用户的初始密码:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_password_here';
  1. 退出MySQL命令行并重启MySQL服务:sudo systemctl restart mysql

安装PHP

  1. 解压缩PHP源码包:sudo tar -zxvf php-7.4.12.tar.gz

  2. 进入PHP源码目录: cd php-7.4.12

  3. 配置编译参数:sudo ./configure --prefix=/usr/local/php \
    --with-config-file-path=/usr/local/php/etc \
    --enable-fpm \
    --with-fpm-user=www-data \
    --with-fpm-group=www-data \
    --with-mysqli \
    --with-pdo-mysql \
    --with-openssl \
    --with-zlib \
    --with-jpeg \
    --with-png \
    --with-webp \
    --with-freetype \
    --enable-gd

  4. 编译并安装PHP:sudo make && sudo make install

  5. 复制PHP配置文件: sudo cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

  6. 修改PHP配置文件:sudo vim /usr/local/php/etc/php.ini,并进行如下设置:

cgi.fix_pathinfo=0
date.timezone=Asia/Shanghai
  1. 配置PHP-FPM:sudo cp /usr/local/src/php-7.4.12/sapi/fpm/php-fpm.service /lib/systemd/system/php-fpm.service 并启用开机启动启动: sudo systemctl enable php-fpm && sudo systemctl start php-fpm

配置Nginx

  1. 创建Nginx配置目录:sudo mkdir /usr/local/nginx/conf/vhost

  2. 创建Nginx虚拟主机配置文件: sudo vim /usr/local/nginx/conf/vhost/default.conf,并写入以下内容:

server {
    listen 80;
    server_name your_domain.com;
    index index.html index.php;
    root /var/www/your_domain.com;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        # fastcgi_pass 127.0.0.1:9000; # 若使用TCP方式连接PHP-FPM,则使用此行代码
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}
  1. 创建网站的根目录: sudo mkdir /var/www/your_domain.com

  2. 在网站根目录下创建一个测试PHP文件: sudo vim /var/www/your_domain.com/index.php 并写入以下内容:

<?php
phpinfo();
  1. 重新启动Nginx服务:sudo /usr/local/nginx/sbin/nginx -s reload

至此,LNMP的安装与配置已经完成。

示例一:在Nginx虚拟主机配置文件中增加一个新的域名

  1. 创建新的域名: sudo vim /usr/local/nginx/conf/vhost/new_domain.com.conf

  2. 在新的域名配置文件中写入以下内容:

server {
    listen 80;
    server_name new_domain.com;
    index index.html index.php;
    root /var/www/new_domain.com;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        # fastcgi_pass 127.0.0.1:9000; # 若使用TCP方式连接PHP-FPM,则使用此行代码
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}
  1. 创建新的网站根目录: sudo mkdir /var/www/new_domain.com

  2. 在新网站根目录下创建一个测试PHP文件: sudo vim /var/www/new_domain.com/index.php 并写入以下内容:

<?php
echo "Hello World!";
  1. 重新启动Nginx服务:sudo /usr/local/nginx/sbin/nginx -s reload

  2. 访问新的域名,应该可以看到输出了“Hello World!”的页面。

示例二:修改Nginx虚拟主机配置文件中的PHP解析方式

如果你想Nginx使用TCP socket连接PHP-FPM进程池而非本地Unix Domain Socket,则可以按照以下步骤进行修改:

  1. 打开Nginx虚拟主机配置文件:sudo vim /usr/local/nginx/conf/vhost/default.conf

  2. 修改fastcgi_pass指令,将原来的Unix Domain Socket路径方式改为TCP方式: fastcgi_pass 127.0.0.1:9000;

  3. 重新启动Nginx服务:sudo /usr/local/nginx/sbin/nginx -s reload

此时Nginx将会通过TCP socket连接到PHP-FPM进程池。