阿里云手动部署LNMP环境(CentOS 8)
前提条件,已经申请了阿里云ECS实例,假设公网IP被分配为123.45.16.666,操作系统选择公共镜像CentOS 8.4 64 scc版,如果已经选择了其他操作系统,按下面步骤更换。
操作系统:这里选择公共镜像CentOS 8.4 64 scc版(也可以选阿里云centos 8.2 64)
注:更换操作系统步骤,先停止ECS实例/阿里云控制台/ECS实例/竖着的三个点点/更改操作系统
查看防火墙确认是inactive状态
systemctl status firewalld
关闭防火墙的方法:
关闭防火墙。
sudo systemctl stop firewalld
更多的步骤,直接在实例开机时禁止启动防火墙服务。
sudo systemctl disable firewalld
getenforce
希望是disabled状态临时关闭的方法
sestatus//查看状态
setenforce 0//临时关闭
永久关闭参见
https://help.aliyun.com/zh/ecs/use-cases/enable-or-disable-selinux#7201251214a40
必须步骤:centos换源
操作步骤
先备份之前的repo文件。
rename '.repo' '.repo.bak' /etc/yum.repos.d/*.repo
运行以下命令下载最新的repo文件。
wget http://mirrors.cloud.aliyuncs.com/repo/Centos-vault-8.5.2111.repo -O /etc/yum.repos.d/Centos-vault-8.5.2111.repo
wget http://mirrors.cloud.aliyuncs.com/repo/epel-archive-8.repo -O /etc/yum.repos.d/epel-archive-8.repo
重要:如果服务器不是ECS实例,将命令中的源地址http://mirrors.cloud.aliyuncs.com替换为http://mirrors.aliyun.com。
您也可以直接参考
CentOS 镜像社区的说明进行下载。
sed -i 's/http:\/\/mirrors.cloud.aliyuncs.com/url_tmp/g' /etc/yum.repos.d/Centos-vault-8.5.2111.repo && sed -i 's/http:\/\/mirrors.aliyun.com/http:\/\/mirrors.cloud.aliyuncs.com/g' /etc/yum.repos.d/Centos-vault-8.5.2111.repo && sed -i 's/url_tmp/http:\/\/mirrors.aliyun.com/g' /etc/yum.repos.d/Centos-vault-8.5.2111.repo
sed -i 's/http:\/\/mirrors.aliyun.com/http:\/\/mirrors.cloud.aliyuncs.com/g' /etc/yum.repos.d/epel-archive-8.repo
yum clean all && yum makecache
稍等一下,yum源和epel源切换完成后,即可使用yum install命令在实例上安装所需要的软件包。
参考资料
https://help.aliyun.com/zh/ecs/user-guide/change-centos-8-repository-addresses#task-2182261
https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3b311b11wDHrGv
4.安装Nginx
去这里找一个想安装的版本
http://nginx.org/packages/centos/8/x86_64/RPMS/
nginx-1.16.0-1.el8.ngx.x86_64.rpm 09-May-2019 10:06 815600
nginx-1.16.1-1.el8.ngx.x86_64.rpm 13-Aug-2019 16:17 816120
nginx-1.18.0-1.el8.ngx.x86_64.rpm 21-Apr-2020 15:19 825436
nginx-1.18.0-2.el8.ngx.x86_64.rpm 29-Oct-2020 15:35 817796
nginx-1.20.0-1.el8.ngx.x86_64.rpm 20-Apr-2021 16:22 839224
nginx-1.20.1-1.el8.ngx.x86_64.rpm 25-May-2021 13:56 839020
nginx-1.20.2-1.el8.ngx.x86_64.rpm 16-Nov-2021 15:20 839708
nginx-1.22.0-1.el8.ngx.x86_64.rpm 24-May-2022 15:52 846400
nginx-1.22.1-1.el8.ngx.x86_64.rpm 19-Oct-2022 10:58 848104
nginx-1.24.0-1.el8.ngx.x86_64.rpm 11-Apr-2023 17:47 855792
看中了nginx-1.24.0-1.el8.ngx.x86_64.rpm 于是下载:
sudo dnf -y install http://nginx.org/packages/centos/8/x86_64/RPMS/nginx-1.24.0-1.el8.ngx.x86_64.rpm
将选用Nginx 1.24.0版本。
查看Nginx版本
nginx -v
[root@iZ2zeh5zfjijmspark1vxdZ ~]# nginx -v
nginx version: nginx/1.24.0
sudo dnf -y install @mysql
查看安装好了的MySQL版本
mysql -V
[root@iZ2zeh5zfjijmspark1vxdZ ~]# mysql -V
mysql Ver 8.0.26 for Linux on x86_64 (Source distribution)
[root@iZ2zeh5zfjijmspark1vxdZ ~]#
添加并更新epel源。
sudo dnf -y install epel-release
sudo dnf -y update epel-release
sudo dnf module list php
比如我的系统:
[root@iZ2zeh5zfjijmspark1vxdZ ~]# sudo dnf module list php
Last metadata expiration check: 2:53:00 ago on Mon 01 Jan 2024 14:27:59 CST.
CentOS-8.5.2111 - AppStream - mirrors.cloud.aliyuncs.com
Name Stream Profiles Summary
php 7.2 [d] common [d], devel, minimal PHP scripting language
php 7.3 common [d], devel, minimal PHP scripting language
php 7.4 common [d], devel, minimal PHP scripting language
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
那么可选的有php 7.2/7.3/7.4 这里选择安装php:7.4模块
sudo dnf module enable php:7.4
继续运行以下命令,安装PHP相应的模块。
sudo dnf -y 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
运行以下命令,删除缓存的无用软件包并更新软件源。
sudo dnf clean all
sudo dnf makecache
运行以下命令查看安装好的PHP版本。
php -v
cat /etc/nginx/nginx.conf
注意下面的备份
在http后面的大括号内,找include 后面带着的配置项。
那是配置文件的默认路径,将这个文件夹下面的conf.d 备份分一下。
比如写的是 include /etc/nginx/conf.d/*.conf;
那么就用下面的指令备份default.conf,将其重命名为XXX.bak
cd /etc/nginx/conf.d
sudo cp default.conf default.conf.bak
继续修改默认配置文件:
sudo nano default.conf
nano编辑器基本用法
键盘挪动光标
Ctrl+W查找关键字
Ctrl+X 保存
Y确认保存文件
N不保存文件
在location大括号内,修改以下内容
(index后添加index.php字样)。
修改后应该为
location / {
#将该路径替换为您的网站根目录。
root /usr/share/nginx/html;
#添加默认首页信息index.php。
index index.html index.htm index.php;
}
另外,去掉被注释的location ~ \.php$大括号内容,并修改大括号里的内容
修改前如下
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
修改后如下
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;
}
也就是添加index.php字样之后,将原有的location ~ .php$ {}部分直接注释掉,把下面部分直接加入文件
location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
保存退出
9.设置开机自启动nginx
sudo systemctl start nginx
sudo systemctl enable nginx
10.配置mysql
sudo systemctl enable --now mysqld
查看一下是否启动了(应该是active)
sudo systemctl status mysqld
设置密码
sudo mysql_secure_installation
命令运行后,根据命令行提示执行如下操作。
输入Y并回车开始相关配置。
选择密码验证策略强度,输入2并回车。
策略0表示低,1表示中,2表示高。建议选择高强度的密码验证策略。
设置MySQL的新密码并确认。
本示例设置密码password666。
输入Y并回车继续使用提供的密码。
输入Y并回车移除匿名用户。
设置是否允许远程连接MySQL。选择N
不需要远程连接时,输入Y并回车。
需要远程连接时,输入N或其他任意非Y的按键,并回车。
本例选择Y,不需要远程连接。
输入Y并回车删除test库以及对test库的访问权限。
输入Y并回车重新加载授权表。
sudo nano /etc/php-fpm.d/www.conf
找到user = apache和group = apache,将apache修改为nginx。
sudo nano /usr/share/nginx/html/phpinfo.php
文件写入下面的内容,保存
运行命令启动php-fpm
sudo systemctl start php-fpm
设置php-fpm开机自启动
sudo systemctl enable php-fpm
浏览器访问
http://123.45.16.666/phpinfo.php
测试出现刚刚安装的php等相关信息图样,测试合格。
安装成功,立刻删除以下文档,防止网站信息泄露
sudo rm -rf /usr/share/nginx/html/phpinfo.php