跳至正文

LAMP/LNMP环境搭建

内容目录

本文档为搭建LAMP或LNMP环境过程

LAMP即Linux+Apache+MySQL+PHP环境,LNMP即将Apache更换为Nginx代理

环境配置所使用操作系统为Alibaba Cloud Linux 3.2104 LTS 64位,完全兼容Centos

安全组设置

在安全组入方向上添加以下端口:

应用 端口号
SSH 22
http 80
MySQL 3306

Apache

Apache概要

  1. 定义
    Apache HTTP服务器是一个开源的、跨平台的Web服务器软件,最初由Robert McCool开发,后来成为Apache软件基金会的项目之一。它是目前全球使用最广泛的Web服务器软件之一。

  2. 特点

    • 开源性:Apache HTTP服务器是自由开源软件,任何人都可以免费获取、使用和修改。
    • 跨平台性:支持多种操作系统,包括Linux、Unix、Windows等。
    • 模块化:具有丰富的模块化架构,可以通过加载不同的模块来扩展功能。
    • 稳定性与可靠性:经过长期的发展和测试,已经被证明在高负载环境下表现稳定可靠。
    • 安全性:提供多种安全功能和配置选项,可以保护服务器免受各种网络攻击。
    • 灵活性:支持多种配置选项和定制能力,可以满足不同场景下的需求。
  3. 功能

    • 静态和动态内容服务:能够提供静态文件(如HTML、CSS、图像等)和动态内容(如PHP、Python、Perl等脚本语言生成的页面)的服务。
    • 虚拟主机支持:能够在一台物理服务器上托管多个虚拟主机,每个主机拥有独立的域名和配置。
    • HTTPS支持:提供SSL/TLS加密支持,可以用于安全地传输数据。
    • URL重定向和重写:支持通过配置文件实现URL重定向和重写,以便优化网站结构和SEO。
    • 访问控制和身份验证:支持多种访问控制机制和身份验证方式,保护服务器资源不被未经授权的访问。
    • 日志记录:能够记录访问日志、错误日志等信息,方便管理员进行监控和故障排查。
  4. 使用范围
    Apache HTTP服务器被广泛应用于各种类型的网站和Web应用,包括企业网站、电子商务网站、博客、论坛、内容管理系统等。

Apache HTTP服务器是一个功能强大、稳定可靠、灵活易用的Web服务器软件,适用于各种规模和类型的Web应用。

Apache安装

执行命令安装Apache及其拓展包

yum install -y httpd httpd-manual mod_ssl mod_perl mod_auth_mysql

系统提示

No match for argument: mod_auth_mysql
Error: Unable to find a match: mod_auth_mysql

搜索解决方案如下:

  1. 尝试以下命令

    yum -y install httpd httpd-manual mod_ssl mod_perl
    yum -y install httpd httpd-devel

    该命令可同样安装Apache及其拓展包

可通过查看Apache版本确认是否安装成功

httpd -v

如下:

Server version: Apache/2.4.37 (Alibaba Cloud Linux)
Server built:   Jun 28 2023 17:14:29

通过以下命令启动Apache并设置自启动:

systemctl start httpd
systemctl enable httpd

通过以下命令获取Apache运行状态:

systemctl status httpd

可获得结果如下:

● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2024-02-05 20:59:43 CST; 29s ago
     Docs: man:httpd.service(8)
 Main PID: 16872 (/usr/sbin/httpd)
   Status: "Running, listening on: port 443, port 80"
    Tasks: 213 (limit: 11828)
   Memory: 36.6M
   CGroup: /system.slice/httpd.service
           ├─16872 /usr/sbin/httpd -DFOREGROUND
           ├─16873 /usr/sbin/httpd -DFOREGROUND
           ├─16874 /usr/sbin/httpd -DFOREGROUND
           ├─16875 /usr/sbin/httpd -DFOREGROUND
           └─16876 /usr/sbin/httpd -DFOREGROUND

Feb 05 20:59:43 iZuf6bk3ycdczx5tq96ms1Z systemd[1]: Starting The Apache HTTP Server...
Feb 05 20:59:43 iZuf6bk3ycdczx5tq96ms1Z httpd[16872]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.23.204.97. Set the 'ServerName'>
Feb 05 20:59:43 iZuf6bk3ycdczx5tq96ms1Z systemd[1]: Started The Apache HTTP Server.
Feb 05 20:59:44 iZuf6bk3ycdczx5tq96ms1Z httpd[16872]: Server configured, listening on: port 443, port 80

浏览器中通过http://公网ip 访问得到页面如下:

202402101506828

自此,Apache配置完成

Nginx

Nginx概要

  1. 定义
    Nginx是一个高性能的开源Web服务器软件,也可以用作反向代理服务器、负载均衡器和HTTP缓存等。它最初由Igor Sysoev开发,现已成为许多网站和Web应用的首选服务器软件之一。

  2. 特点

    • 高性能:以其高度优化的事件驱动架构而闻名,能够处理大量并发连接而不损失性能。
    • 低资源消耗:相对于一些传统的Web服务器软件,Nginx消耗的系统资源更少,具有更高的效率。
    • 灵活性:支持动态模块加载和配置,可以根据需要轻松扩展功能。
    • 可靠性:在高负载环境下表现稳定可靠,能够有效地处理大规模的请求。
    • 反向代理和负载均衡:具有强大的反向代理和负载均衡功能,可以将请求转发给后端服务器,并平衡负载以提高性能和可用性。
    • 灵活的配置:采用简洁而灵活的配置语法,使得配置和管理变得简单易行。
  3. 功能

    • 静态和动态内容服务:能够高效地提供静态文件和动态内容的服务,支持多种后端语言和框架。
    • 反向代理和负载均衡:可以作为反向代理服务器,将请求转发给多个后端服务器,并根据负载情况进行负载均衡。
    • HTTP缓存:支持HTTP缓存机制,可以缓存静态和动态内容,提高响应速度和降低服务器负载。
    • SSL/TLS支持:提供SSL/TLS加密支持,可以保护数据传输的安全性。
    • URL重写:支持灵活的URL重写规则,可以优化网站结构和SEO。
    • 模块化架构:具有丰富的模块化架构,支持各种扩展模块,如HTTP反向代理、负载均衡、安全性、日志记录等。
  4. 使用范围
    Nginx被广泛应用于各种类型的网站和Web应用,特别适用于高负载环境和需要高性能的场景,如电子商务网站、社交网络、流媒体服务、游戏服务器等。

Nginx是一个功能强大、高性能、灵活易用的Web服务器软件,适用于各种规模和类型的Web应用,并且在处理高并发和大规模请求时表现出色。

Nginx安装

dnf -y install http://nginx.org/packages/centos/8/x86_64/RPMS/nginx-1.16.1-1.el8.ngx.x86_64.rpm

通过以下命令查看nginx版本并确认安装是否成功

nginx -v

接下来修改nginx配置文件

首先查看Nginx配置文件路径,信息位于/etc/nginx/nginx.conf文件中

可运行以下命令较方便查看

cat /etc/nginx/nginx.conf

文件内容如下

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    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;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

则配置文件路径为/etc/nginx/conf.d/*.conf

然后修改配置文件(可以备份默认配置文件)

cd /etc/nginx/conf.d
cp default.conf default.conf.bak
sudo vim default.conf

修改location中内容

location / {
    #将该路径替换为网站根目录。
    root   /usr/share/nginx/html;
    #添加默认首页信息index.php。
    index  index.html index.htm index.php;
}

取消location ~ .php$前注释并修改内容

location ~ \.php$ {
    #将该路径替换为您的网站根目录。
    root           /usr/share/nginx/html;
    #Nginx通过unix套接字与PHP-FPM建立联系,该配置与/etc/php-fpm.d/www.conf文件内的listen配置一致。
    fastcgi_pass   unix:/run/php-fpm/www.sock;
    fastcgi_index  index.php;
    #将/scripts$fastcgi_script_name修改为$document_root$fastcgi_script_name。
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    #Nginx调用fastcgi接口处理PHP请求。
    include        fastcgi_params;
}

运行以下命令启动Nginx服务并设置自启动

systemctl start nginx
systemctl enable nginx

至此Nginx配置完成

访问链接http://公网ip 可以查看是否配置成功,成功则如下:

202402101506842

MySQL

MySQL概要

  1. 定义
    MySQL是一个关系型数据库管理系统,最初由瑞典的MySQL AB公司开发,后来被Sun Microsystems收购,再后来Sun Microsystems被Oracle Corporation收购。MySQL的开源版本由社区维护,而企业版则由Oracle提供支持和服务。

  2. 特点

    • 开源性:MySQL的开源版本遵循GNU通用公共许可证(GPL),任何人都可以免费获取、使用和修改。
    • 跨平台性:支持多种操作系统,包括Linux、Unix、Windows等。
    • 高性能:具有优化的存储引擎和查询优化器,能够处理大量数据并提供高性能的查询。
    • 可靠性:经过长期的发展和测试,MySQL在各种环境下表现稳定可靠。
    • 易用性:提供简单易用的管理工具和语法,使得数据库的管理和查询变得简单和高效。
    • 灵活性:支持多种存储引擎和数据类型,能够满足不同应用场景的需求。
  3. 功能

    • 数据存储:能够存储和管理结构化数据,支持多种数据类型和索引类型。
    • 数据查询:提供强大的查询功能和优化器,支持复杂的查询语句和子查询。
    • 事务管理:支持事务的提交、回滚和并发控制,保证数据的一致性和完整性。
    • 安全性:提供多种安全功能和配置选项,包括用户权限管理、SSL加密传输等。
    • 复制和高可用性:支持主从复制和集群部署,以实现数据的备份和高可用性。
    • 扩展性:支持分布式数据库和分区表等高级特性,以应对大规模数据的存储和处理需求。
  4. 使用范围
    MySQL被广泛应用于各种类型的应用程序和网站中,包括企业应用、电子商务网站、社交网络、博客、论坛等。它是许多流行开源应用软件的首选数据库,如WordPress、Joomla、Magento等。

MySQL是一个功能强大、稳定可靠、易用灵活的关系型数据库管理系统,适用于各种规模和类型的应用程序,并且在开源社区和企业中都有广泛的应用和支持。

MySQL安装

通过以下命令下载并安装MySQL数据库

wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
yum install -y mysql57-community-release-el7-10.noarch.rpm
yum install -y mysql-community-server --nogpgcheck

通过以下命令启动MySQL数据库

systemctl start mysqld.service

通过以下命令获得MySQL数据库运行状态

systemctl status mysqld.service

获得结果如下

● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2024-02-05 21:20:13 CST; 25s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 18137 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
  Process: 18083 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
 Main PID: 18139 (mysqld)
    Tasks: 27 (limit: 11828)
   Memory: 378.2M
   CGroup: /system.slice/mysqld.service
           └─18139 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid

Feb 05 21:20:05 iZuf6bk3ycdczx5tq96ms1Z systemd[1]: Starting MySQL Server...
Feb 05 21:20:13 iZuf6bk3ycdczx5tq96ms1Z systemd[1]: Started MySQL Server.

数据库安装完成后会自动创建一个初始密码,

为登录数据库完成自定义密码修改需要获取初始密码,在mysqld.log文件中可查看MySQL数据库初始密码,

可以手动查看或者可以利用grep命令搜索该文件中password字段

grep "password" /var/log/mysqld.log

使用初始密码登录MySQL数据库

mysql -u root -p

修改MySQL数据库密码:

alter user 'root'@'localhost' identified by 'yourpassword';
  • 经实验,密码可能是采用的强模式,需同时含有:

    • 大小写英文字母
    • 数字
    • 特殊符号
  • 某些系统中某些版本MySQL数据库似乎有长期未使用自动替换密码的功能,表现为原用户密码无法登录情况,数据库在root用户以外还创建了其它用户,通过查看日志获取用户名和密码后登录数据库,再更改root用户密码即可,但此情况极少发生,本人仅有幸遇到过1次

自此,MySQL数据库配置完成

PHP

PHP概要

  1. 定义
    PHP是一种通用的服务器端脚本语言,最初由Rasmus Lerdorf于1994年开发,用于创建动态网页内容。现在由PHP开发团队进行维护和更新,已成为Web开发中最常用的语言之一。

  2. 特点

    • 开源性:PHP是开源的,任何人都可以免费获取、使用和修改。
    • 跨平台性:支持多种操作系统,包括Linux、Unix、Windows等。
    • 易学易用:PHP的语法简单直观,与HTML嵌入式使用,易于学习和使用。
    • 灵活性:PHP具有丰富的内置函数和扩展库,可以实现各种功能和应用。
    • 广泛支持:得到了众多Web服务器的支持,如Apache、Nginx等,以及各种数据库的支持,如MySQL、PostgreSQL等。
    • 动态性:PHP能够生成动态网页内容,可以与HTML、CSS、JavaScript等前端技术无缝集成。
  3. 功能

    • 动态网页生成:PHP可以在服务器端生成动态的HTML、CSS、JavaScript等内容,根据用户请求动态生成页面。
    • 表单处理:PHP能够处理用户提交的表单数据,进行验证、过滤和处理。
    • 数据库连接:PHP支持多种数据库连接方式,可以与MySQL、PostgreSQL、SQLite等数据库进行交互。
    • 会话管理:PHP提供会话管理机制,支持Cookie和Session等方式进行用户状态管理。
    • 文件操作:PHP能够对文件进行读写操作,包括文件上传、下载等功能。
    • 图像处理:PHP提供图像处理库,可以进行图像的生成、编辑和处理。
  4. 使用范围
    PHP被广泛应用于各种类型的网站和Web应用开发中,包括个人博客、电子商务网站、社交网络、内容管理系统(CMS)等。许多流行的网站和应用程序,如Facebook、WordPress、Drupal等,都是使用PHP开发的。

PHP是一种功能强大、易学易用、灵活性强的服务器端脚本语言,适用于各种规模和类型的Web开发项目,并且在Web开发领域有着广泛的应用和支持。

PHP安装

添加EPEL源和Webtatic源

yum install -y https://repo.ius.io/ius-release-el7.rpm https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm --allowerasing
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

运行以下命令安装PHP以及相关库

yum -y install php php-fpm php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc php-devel

阿里云教程安装包如下:

yum install -y php70w-devel php70w.x86_64 php70w-cli.x86_64 php70w-common.x86_64 php70w-gd.x86_64 php70w-ldap.x86_64 php70w-mbstring.x86_64 php70w-mcrypt.x86_64  php70w-pdo.x86_64   php70w-mysqlnd  php70w-fpm php70w-opcache php70w-pecl-redis php70w-pecl-mongodb

再transaction test阶段报错,报错记录显示php70w包和php7.4.33的包安装冲突,此处选择php7.4.33下载安装即如上;

此外也可能出现已有包与安装包冲突情况,此时需要卸载相关冲突包

yum remove <package-name>

可以通过以下命令确认是否安装成功

php -v

创建php测试界面

echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php

重新启动Apache服务

systemctl restart httpd

浏览器访问http://ip/phpinfo.php测试是否成功

202402101506846

页面如上所示即成功

至此php环境配置完成

  • 添加的源可能存在问题,再安装其他应用时,获取的依赖包存在冲突,如按照上述步骤安装php后安装wordpress依赖php包与安装php包冲突的问题

  • 可以采取以下方式同样可以配置php

添加并更新epel源

dnf -y install epel-release --allowerasing
dnf update epel-release

以下命令删除缓存的无用软件包并更新软件源

dnf clean all
dnf makecache

下载并安装php及其依赖包

dnf install php php-curl php-dom php-exif php-fileinfo php-fpm php-gd php-hash php-json php-mbstring php-mysqli php-openssl php-pcre php-xml libsodium

同样可通过以下命令查看php版本并确认是否安装成功

php -v

若使用nginx作服务器代理,还需修改php配置文件

通过以下命令打开配置文件

sudo vim /etc/php-fpm.d/www.conf

找到user = apache 和 group = apache,将apache修改为nginx即可

通过以下命令启动php-fpm并设置自启动

systemctl start php-fpm
systemctl enable php-fpm

可以通过以下命令创建文件,重启nginx后访问相应链接查看php运作是否正常 http://47.116.206.139/phpinfo.php

echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/phpinfo.php

该文档为手动配置环境,一般可以利用控制面板工具配置LAMP/LNMP环境以及其它应用部署,如宝塔等

参考文章

  1. 基于WordPress在阿里云服务器上搭建个人博客网站 https://blog.csdn.net/Davie_Liu/article/details/121150717

  2. 部署LAMP环境(Alibaba Cloud Linux 3) https://developer.aliyun.com/article/1343397

  3. 阿里云ESC报错‘No match for argument: mod_auth-mysql,Error: Unable to find a match: mod_auth-mysql’ https://blog.csdn.net/weixin_45176132/article/details/122129215