LNMP通常指的是一组自由运行网站的一套系统的网站服务器架构组成,它集合了Linux,Nginx,Mysql,Php,全部都是开源免费的产品组成的。其中也可以有很多替代品,比如LNMP以前是没有的,以前是LAMP,A就是Apache,LAMP现在和LNMP都同样盛行。
L:Linux是计算机操作系统的一种,是目前最流行的免费操作系统。代表版本有debian、centos、ubuntu等。
N:Nginx是一个高性能的HTTP和反向代理服务器。
M:Mysql是一个小型数据型数据库管理系统,自从被收购以后部分功能开始收费,也可以用Maridb,Mongon替代。
P:php是一种在服务器端执行的嵌入HTML文档的脚本语言。
这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统。
后续都是在Linux的系统下来部署,这个就不用介绍了。
【去官网(nginx.org)看了眼目前最高版本1.23.3】
wget https://nginx.org/download/nginx-1.23.3.tar.gz
tar -xvzf nginx-1.23.3.tar.gz
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
rpm -ivh --nodeps *.rpm
cd nginx-1.23.3
./configure --prefix=/soft/nginx/
make && make install
vim /soft/nginx/conf/nginx.conf
//在/soft/nginx下
sbin/nginx -c conf/nginx.conf
ps aux | grep nginx
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
firewall-cmd --zone=public --list-ports
访问配置好nginx的主机ip
①安装依赖包
yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake
②下载并解压mysql
③安装mysql包
yum -y localinstall *.rpm
④开启服务并查看状态
[root@node mysql]# systemctl start mysqld.service
[root@node mysql]# systemctl status mysqld.service
⑤设置mysql的登录密码
//系统会为mysql创建一个随机密码,本机是prEipQ5y=Ug/
[root@node mysql]# grep 'temporary password' /var/log/mysqld.log
2023-02-09T17:32:53.818082Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: prEipQ5y=Ug/
【如需修改,以下是修改的命令 //注意安全等级设置高点】
mysql> set global validate_password_policy=0
//上面这个把密码安全策略降为0就可以随便设置什么密码了
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'nidemima';
Query OK, 0 rows affected (0.00 sec)
报错误ERROR 1193 (HY000): Unknown system variable ‘validate_password_policy‘的话
说明没有这个插件
解决:vim /etc/my.cnf【在mysqld下添加这仨之后重启】
skip-grant-tables
//root免密登录
plugin-load-add=validate_password.so
//插件的加载方法,每次服务器启动时都必须给出该选项;
validate-password=FORCE_PLUS_PERMANENT//validate-password在服务器启动时使用该选项来控制插件的激活。
yum -y install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel curl curl-devel openssl openssl-devel
cd /soft/php
wget http://mirrors.sohu.com/php/php-7.1.24.tar.gz
tar -xvzf php-7.1.24.tar.gz
[root@node php]# cd php-7.1.24
[root@node php-7.1.24]# ./configure \
> --prefix=/usr/local/php \ #指定将 PHP 程序安装到哪个目录下
> --with-mysql-sock=/usr/local/mysql/mysql.sock \ #设置Apache服务提供的apxs模块支持程序的文件位置
> --with-mysqli \ #mysqli扩展技术不仅可以调用MySQL的存储过程、处理MySQL事务,而且还可以使访问数据库工作变得更加稳定
> --with-zlib \ #支持zlib功能--压缩流
> --with-curl \ #开启curl扩展功能
> --with-gd \ #激活gd库的支持
> --with-jpeg-dir \ #激活jpeg的支持
> --with-png-dir \ #激活png的支持
> --with-freetype-dir \
> --with-openssl \
> --enable-mbstring \ #启用多字节字符串功能,以便支持中文等代码
> --enable-xml \
> --enable-session \
> --enable-ftp \
> --enable-pdo \
> --enable-tokenizer \
> --enable-zip \
> --enable-fpm # ##开启php-fpm模块,使nginx能支持动态页面
[root@node php-7.1.24]# make && make install
//在nginx.conf中配置
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
include fastcgi_params;
}
③测试
[root@node conf]# cd /var/www/html/
[root@node html]# vim index.php
然后生成证书文件,填写信息
openssl req -new -key ssl.key -out ssl.crs
openssl x509 -req -days 365 -in ssl.crs -signkey ssl.key -out ssl.crt
server {
# 监听HTTPS默认的443端口
listen 443 ssl;
# 配置自己项目的域名
server_name localhost;
# 打开SSL加密传输
ssl on;
# 输入域名后,首页文件所在的目录
root html;
# 配置首页的文件名
index index.html index.htm index.jsp index.ftl;
# 配置自己下载的数字证书
ssl_certificate /etc/key/ssl.crt;
# 配置自己下载的服务器私钥
ssl_certificate_key /etc/key/ssl.key;
# 停止通信时,加密会话的有效期,在该时间段内不需要重新交换密钥
ssl_session_timeout 5m;
# TLS握手时,服务器采用的密码套件
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
# 服务器支持的TLS版本
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
# 开启由服务器决定采用的密码套件
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}