一、环境准备
lnmp环境说明:
L:Linux(CentOS7)https://mirrors.aliyun.com/centos/7/isos/x86_64/
N:Nginx(1.18.0) https://nginx.org/en/download.html
M:MySQL(8.0.19) https://dev.mysql.com/downloads/mysql/
P:PHP(7.4.10) http://php.net/downloads.php
Wordpress(5.4.2):https://cn.wordpress.org/download/
部署规划(我使用的腾讯云的服务器,也可以自己使用VM):
1.117.140.232:Nginx php-fpm 运行web服务
1.117.140.232:运行MySQL数据库,Redis服务
wordpress下载地址:https://cn.wordpress.org/download/
二、安装Nginx
2.0 安装准备
查看防火墙状态
systemctl status firewalld
这个状态就是关闭,running的状态就是开启,未关闭的话就输入:systemctl stop firewalld,来关闭,如果想禁止启动防火墙服务,输入:systemctl disable firewalld
关闭SElinux 状态
运行getenforce命令查看SELinux的当前状态。
如果SELinux状态参数是Disabled,则SELinux为关闭状态。
如果SELinux状态参数是Enforcing,则SELinux为开启状态。(如果未关闭可以使用vi /etc/selinux/config,将这里改为disable就可以)
2.1 编译安装 nginx
yum -y install nginx
nginx -v 可以查看版本
第二种方法:
nginx安装目录是:/usr/local/,进入/usr/local/目录
cd /usr/local
安装nginx依赖包:
yum -y install zlib zlib-developenssl openssl-devel pcre pcre-devel
下载nginx源码包:
wget -c https://nginx.org/download/nginx-1.10.1.tar.gz
解压:
tar -zxvf nginx-1.10.1.tar.gz
进入解压后的源码目录:
cd nginx-1.10.1
检查编译环境:
./configure
编译:
make install
现在nginx就已经安装完成了,安装目录为/usr/local(和源码目录是同一个)
进入目录:cd /usr/local/nginx/sbin 启动nginx
cd /usr/local/nginx/sbin
ls 查看nginx是否存在
./nginx 运行nginx
netstat -ntpl #查看nginx是否启动
现在浏览器访问你服务器的公网ip就可以看到页面了(访问ip就可以)
访问ip对应的文件是放在/usr/local/nginx/html文件夹下的,现在直接访问ip其实就是访问html文件夹下的index.html文件
三、安装Mysql
rpm -qa | grep -i mysql #看看是否安装过了
yum -y remove mysql-libs.x86_64 #有则删除
find / -name mysql #把所有出现的目录统统删除
rm -rf /etc/my.cnf #删除配置文件
rm -rf /root/.mysql_sercret #删除mysql的默认密码
sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
#配置Mysql 8.0安装源
sudo yum --enablerepo=mysql80-community install mysql-community-server #安装Mysql 8.0
sudo yum --enablerepo=mysql80-community install mysql-community-server --nogpgcheck
#如果报错GDK,在yum install 版本后面加上 --nogpgcheck,即可绕过GPG验证成功安装
sudo service mysqld start #启动mysql服务
service mysqld status #查看mysql服务运行状态
grep "A temporary password" /var/log/mysqld.log #查看root临时密码(我自己的d%miquP7yPZu)
mysql -uroot -p #输入jZ4l7yizop#-初始密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '自己输入新密码'; #更改临时密码
会提示:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements(密码不符合当前策略)
方案1: 设置符合策略的密码(大小写字母+数据+符号)
方案2:密码策略改简单一点
方案2设置方式:
先更改密码,否则无法下一步操作
输入:ALTER USER 'root'@'localhost' IDENTIFIED BY 'jZ4l7yizop#-';
validate_password.length 是密码的最小长度,默认是8,我们把它改成4
输入:set global validate_password.length=4;(mysql 8.0)
set global validate_password_length=4;(版本不一样命令有变化)
validate_password.policy 验证密码的复杂程度,我们把它改成0
输入:set global validate_password.policy=0;
set global validate_password_policy=0;
validate_password.check_user_name 用户名检查,用户名和密码不能相同,我们也把它关掉
输入:set global validate_password.check_user_name=off;
set global validate_password_check_user_name=off;
再执行修改密码的命令
输入:ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
密码设置成功,设为了root。
如果客户端连接mysql报错:查看防火墙状态,关闭状态,腾讯云需要开放3306端口
[root@VM-4-5-centos ~]# mysql -V
mysql Ver 8.0.32 for Linux on x86_64 (MySQL Community Server - GPL)
另一个安装方式:
1.更新yum源
rpm -Uvh http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
如果您使用的操作系统内核版本为el8,可能会提示报错信息No match for argument。您需要先运行命令yum module disable mysql禁用默认的MySQL模块,再安装MySQL。
查看内核:uname -a
2.安装mysql
yum -y install mysql-community-server --nogpgcheck
3.启动mysql
systemctl start mysqld
Netstat -ntpl 查看是否启动成功
4.设置为开机自启动
systemctl enable mysqld
systemctl daemon-reload
修改密码方式也在上面
四、安装Php
1.更新yum源
运行以下命令添加EPEL源
yum install \
https://repo.ius.io/ius-release-el7.rpm \
https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
2.运行以下命令添加Webtatic源。
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
3.安装php
yum -y install 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
查看安装成功否:php -v
4.1 配置php 文件
1.备份nginx配置文件
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
2.修改Nginx配置文件,添加Nginx对PHP的支持
运行以下命令打开Nginx配置文件
vim /etc/nginx/nginx.conf
输入i进入编辑模式:
然后在server大括号内,修改或添加下列配置信息,添加或修改location /配置信息
location / {
index index.php index.html index.htm;
}
添加或修改location ~ .php$配置信息
#添加下列信息,配置Nginx通过fastcgi方式处理您的PHP请求。
location ~ .php$ {
root /usr/share/nginx/html; #将/usr/share/nginx/html替换为您的网站根目录,本文使用/usr/share/nginx/html作为网站根目录。
fastcgi_pass 127.0.0.1:9000; #Nginx通过本机的9000端口将PHP请求转发给PHP-FPM进行处理。
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params; #Nginx调用fastcgi接口处理PHP请求。
}
如下:
server {
listen 80;
listen [::]:80;
server_name _;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
index index.php index.html index.htm;
}
location ~ .php$ {
root /usr/share/nginx/html;
#将/usr/share/nginx/html替换为您的网站根目录,本文使用/usr/share/nginx/html作为网站根目录。
fastcgi_pass 127.0.0.1:9000;
#Nginx通过本机的9000端口将PHP请求转发给PHP-FPM进行处理。
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
#Nginx调用fastcgi接口处理PHP请求。
}
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
结束:
------------------
4.2 启动并验证 php-fpm 服务
运行以下命令启动Nginx服务。
systemctl start nginx
设置开机自启动:systemctl enable nginx
[root@nginx ~]#ss -ntlp
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 127.0.0.1:9000 *:*users:(("php-fpm",pid=112880,fd=9),("php-fpm",pid=112879,fd=9),("php-fpm",pid=112878,fd=7))
LISTEN 0 128 *:80 *:*users:(("nginx",pid=2134,fd=6),("nginx",pid=1305,fd=6))
LISTEN 0 128 *:22 *:*users:(("sshd",pid=1293,fd=3))
LISTEN 0 100 127.0.0.1:25 *:*users:(("master",pid=1391,fd=13))
LISTEN 0 128 [::]:22 [::]:*users:(("sshd",pid=1293,fd=4))
LISTEN 0 100 [::1]:25 [::]:*users:(("master",pid=1391,fd=14))
[root@nginx ~]#pstree -p |grep php
|-php-fpm(112878)-+-php-fpm(112879)
| `-php-fpm(112880)
[root@nginx ~]#ps -ef |grep php
root 112878 1 0 22:32 ? 00:00:00 php-fpm: master process (/apps/php74/etc/php-fpm.conf)
www 112879 112878 0 22:32 ? 00:00:00 php-fpm: pool www
www 112880 112878 0 22:32 ? 00:00:00 php-fpm: pool www
root 112896 3200 0 22:37 pts/0 00:00:00 grep --color=auto php
接下来测试一下在本地浏览器上能不能访问成功php文件,配置PHP运行以下命令新建phpinfo.php文件。vim <网站根目录>/phpinfo.php,<网站根目录>是您在nginx.conf配置文件中location ~ .php$大括号内,配置的root参数值,如下图所示。
本文配置的网站根目录为/usr/share/nginx/html,因此需要运行以下命令新建phpinfo.php文件:
vim /usr/share/nginx/html/phpinfo.php
输入下列内容,函数phpinfo()会展示PHP的所有配置信息
<?php echo phpinfo(); ?>
运行以下命令启动PHP-FPM
systemctl start php-fpm
设置开机自启动:systemctl enable php-fpm
测试访问LNMP配置信息页面
在本地Windows主机或其他具有公网访问能力的Windows主机中,打开浏览器。
在浏览器的地址栏输入http://<ECS实例公网IP地址>/phpinfo.php进行访问。
访问结果如下图所示,表示LNMP环境部署成功。
http://1.117.140.232/phpinfo.php
后续步骤
测试访问LNMP配置信息页面后,建议您运行以下命令将phpinfo.php文件删除,消除数据泄露风险。
rm -rf <网站根目录>/phpinfo.php
rm -rf /usr/share/nginx/html/phpinfo.php
mysql -uroot -p 登录数据库
create database wordpress; 创建数据库
show variables like "%password%"; 查看密码规则
create user 'user'@'localhost' identified by 'PASSword123.'; 创建用户
grant all privileges on wordpress.* to 'user'@'localhost'; 给与权限
flush privileges; 配置生效
exit;
[root@VM-4-5-centos ~]# mkdir -p /usr/share/wordpress
[root@VM-4-5-centos ~]# cd /usr/share/wordpress/
通过yum命令下载的WordPress保存在/usr/share/wordpress目录下。
我是直接上传解压的,都可以
yum -y install wordpress
将下载的WordPress移动至网站根目录
mv /usr/share/wordpress /usr/share/nginx/html/wordpress
进入移动后的WordPress路径下,软连接配置文件wp-config.php
cd /usr/share/nginx/html/wordpress
ln -snf /etc/wordpress/wp-config.php wp-config.php
vim wp-config-sample.php
// ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //
/** WordPress数据库的名称 */
define('DB_NAME', 'wordpress');
/** MySQL数据库用户名 */
define('DB_USER', 'user');
/** MySQL数据库密码 */
define('DB_PASSWORD', 'PASSword123.');
/** MySQL主机 */
define('DB_HOST', 'localhost');
保存退出
vim /etc/nginx/nginx.conf
在server大括号内,将root后的内容替换为WordPress根目录。本示例中根目录为/usr/share/nginx/html/wordpress。
systemctl restart nginx
http://1.117.140.232/wp-admin/ 访问即可
五、访问WordPress
5.1 访问ip+wordpress
有可能出现的错误:
1.为MySQL设置新密码
输入:mysql -uroot -p 如果报错
则:编辑vi /etc/my.cnf ,在[mysqld] 部分最后添加一行
skip-grant-tables,然后保存重启mysql,命令:service mysqld restart,
在进行登录:输入以下命令,回车后输入密码再回车登录Mysql
mysql -uroot -p mysql 密码还是输入最开始查到的密码;
重新设置密码,其中 your_pwd 部分改为你自己想要设置的密码
update user set password=password("your_pwd") where user='root';
但是会报错The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
于是登录数据库:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.01 sec)
这里可能又会出现问题,Your password does not satisfy the current policy requirements
validate_password.length 是密码的最小长度,默认是8,我们把它改成4
输入:set global validate_password.length=4;
validate_password.policy 验证密码的复杂程度,我们把它改成0
输入:set global validate_password.policy=0;
validate_password.check_user_name 用户名检查,用户名和密码不能相同,我们也把它关掉
输入:set global validate_password.check_user_name=off;
再执行修改密码的命令
输入:ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
密码设置成功,设为了root。
然后有的会报错
MySQL修改密码报错ERROR 1396 (HY000): Operation ALTER USER failed for ‘root‘@‘localhost‘
于是:
use mysql;
select user,host from user where user='root';
发现 host 列的值是 ‘%’,因此将修改密码语句改为:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'xxxxxx';
flush privileges;
这样就可以了。
grant all privileges on *.* to 'root'@'%' identified by'123456';
然后编辑vi /etc/my.cnf 把最后添加的删除。
参考:
https://cloud.tencent.com/developer/article/1801077