本文档为搭建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概要
-
定义:
Apache HTTP服务器是一个开源的、跨平台的Web服务器软件,最初由Robert McCool开发,后来成为Apache软件基金会的项目之一。它是目前全球使用最广泛的Web服务器软件之一。 -
特点:
- 开源性:Apache HTTP服务器是自由开源软件,任何人都可以免费获取、使用和修改。
- 跨平台性:支持多种操作系统,包括Linux、Unix、Windows等。
- 模块化:具有丰富的模块化架构,可以通过加载不同的模块来扩展功能。
- 稳定性与可靠性:经过长期的发展和测试,已经被证明在高负载环境下表现稳定可靠。
- 安全性:提供多种安全功能和配置选项,可以保护服务器免受各种网络攻击。
- 灵活性:支持多种配置选项和定制能力,可以满足不同场景下的需求。
-
功能:
- 静态和动态内容服务:能够提供静态文件(如HTML、CSS、图像等)和动态内容(如PHP、Python、Perl等脚本语言生成的页面)的服务。
- 虚拟主机支持:能够在一台物理服务器上托管多个虚拟主机,每个主机拥有独立的域名和配置。
- HTTPS支持:提供SSL/TLS加密支持,可以用于安全地传输数据。
- URL重定向和重写:支持通过配置文件实现URL重定向和重写,以便优化网站结构和SEO。
- 访问控制和身份验证:支持多种访问控制机制和身份验证方式,保护服务器资源不被未经授权的访问。
- 日志记录:能够记录访问日志、错误日志等信息,方便管理员进行监控和故障排查。
-
使用范围:
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
搜索解决方案如下:
-
尝试以下命令
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 访问得到页面如下:

自此,Apache配置完成
Nginx
Nginx概要
-
定义:
Nginx是一个高性能的开源Web服务器软件,也可以用作反向代理服务器、负载均衡器和HTTP缓存等。它最初由Igor Sysoev开发,现已成为许多网站和Web应用的首选服务器软件之一。 -
特点:
- 高性能:以其高度优化的事件驱动架构而闻名,能够处理大量并发连接而不损失性能。
- 低资源消耗:相对于一些传统的Web服务器软件,Nginx消耗的系统资源更少,具有更高的效率。
- 灵活性:支持动态模块加载和配置,可以根据需要轻松扩展功能。
- 可靠性:在高负载环境下表现稳定可靠,能够有效地处理大规模的请求。
- 反向代理和负载均衡:具有强大的反向代理和负载均衡功能,可以将请求转发给后端服务器,并平衡负载以提高性能和可用性。
- 灵活的配置:采用简洁而灵活的配置语法,使得配置和管理变得简单易行。
-
功能:
- 静态和动态内容服务:能够高效地提供静态文件和动态内容的服务,支持多种后端语言和框架。
- 反向代理和负载均衡:可以作为反向代理服务器,将请求转发给多个后端服务器,并根据负载情况进行负载均衡。
- HTTP缓存:支持HTTP缓存机制,可以缓存静态和动态内容,提高响应速度和降低服务器负载。
- SSL/TLS支持:提供SSL/TLS加密支持,可以保护数据传输的安全性。
- URL重写:支持灵活的URL重写规则,可以优化网站结构和SEO。
- 模块化架构:具有丰富的模块化架构,支持各种扩展模块,如HTTP反向代理、负载均衡、安全性、日志记录等。
-
使用范围:
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 可以查看是否配置成功,成功则如下:

MySQL
MySQL概要
-
定义:
MySQL是一个关系型数据库管理系统,最初由瑞典的MySQL AB公司开发,后来被Sun Microsystems收购,再后来Sun Microsystems被Oracle Corporation收购。MySQL的开源版本由社区维护,而企业版则由Oracle提供支持和服务。 -
特点:
- 开源性:MySQL的开源版本遵循GNU通用公共许可证(GPL),任何人都可以免费获取、使用和修改。
- 跨平台性:支持多种操作系统,包括Linux、Unix、Windows等。
- 高性能:具有优化的存储引擎和查询优化器,能够处理大量数据并提供高性能的查询。
- 可靠性:经过长期的发展和测试,MySQL在各种环境下表现稳定可靠。
- 易用性:提供简单易用的管理工具和语法,使得数据库的管理和查询变得简单和高效。
- 灵活性:支持多种存储引擎和数据类型,能够满足不同应用场景的需求。
-
功能:
- 数据存储:能够存储和管理结构化数据,支持多种数据类型和索引类型。
- 数据查询:提供强大的查询功能和优化器,支持复杂的查询语句和子查询。
- 事务管理:支持事务的提交、回滚和并发控制,保证数据的一致性和完整性。
- 安全性:提供多种安全功能和配置选项,包括用户权限管理、SSL加密传输等。
- 复制和高可用性:支持主从复制和集群部署,以实现数据的备份和高可用性。
- 扩展性:支持分布式数据库和分区表等高级特性,以应对大规模数据的存储和处理需求。
-
使用范围:
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概要
-
定义:
PHP是一种通用的服务器端脚本语言,最初由Rasmus Lerdorf于1994年开发,用于创建动态网页内容。现在由PHP开发团队进行维护和更新,已成为Web开发中最常用的语言之一。 -
特点:
- 开源性:PHP是开源的,任何人都可以免费获取、使用和修改。
- 跨平台性:支持多种操作系统,包括Linux、Unix、Windows等。
- 易学易用:PHP的语法简单直观,与HTML嵌入式使用,易于学习和使用。
- 灵活性:PHP具有丰富的内置函数和扩展库,可以实现各种功能和应用。
- 广泛支持:得到了众多Web服务器的支持,如Apache、Nginx等,以及各种数据库的支持,如MySQL、PostgreSQL等。
- 动态性:PHP能够生成动态网页内容,可以与HTML、CSS、JavaScript等前端技术无缝集成。
-
功能:
- 动态网页生成:PHP可以在服务器端生成动态的HTML、CSS、JavaScript等内容,根据用户请求动态生成页面。
- 表单处理:PHP能够处理用户提交的表单数据,进行验证、过滤和处理。
- 数据库连接:PHP支持多种数据库连接方式,可以与MySQL、PostgreSQL、SQLite等数据库进行交互。
- 会话管理:PHP提供会话管理机制,支持Cookie和Session等方式进行用户状态管理。
- 文件操作:PHP能够对文件进行读写操作,包括文件上传、下载等功能。
- 图像处理:PHP提供图像处理库,可以进行图像的生成、编辑和处理。
-
使用范围:
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测试是否成功

页面如上所示即成功
至此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环境以及其它应用部署,如宝塔等
参考文章
-
基于WordPress在阿里云服务器上搭建个人博客网站 https://blog.csdn.net/Davie_Liu/article/details/121150717
-
部署LAMP环境(Alibaba Cloud Linux 3) https://developer.aliyun.com/article/1343397
-
阿里云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