百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

LNMP环境搭建完整版(wnmp环境搭建)

nanshan 2024-10-15 11:25 10 浏览 0 评论


1、LNMP一键安装包
网址:lnmp.org,里面介绍一些要求,功能等
进入到安装页面说明,找到相关的安装说明,运行,然后一步一步按照操作就行了,比较简单

2、使用宝塔,这是更加傻瓜,方便的一款工具,操作服务,只需在网站后台,点点鼠标,就能完成
网址:bt.cn
找到,linux安装,里面有各个系统的安装命令,运行与你系统相关的命令
如centos
yum install -y wget && wget -O install.sh
http://download.bt.cn/install/install_6.0.sh && sh install.sh

安装成功后,会显示给你登陆地址和用户名密码
登陆后
可以选择你要安装的环境的软件和版本等。等安装结束,你的linux+Nginx + Mysql + PHP环境也就配成功了

二、手工搭建环境

查看是否已安装wget:
rpm -qa wget

否则安装:
yum install wget

  1. 查看是否已安装编译器:
    rpm -qa gcc

否则安装:
yum install gcc gcc-c++


安装Nginx

  1. 安装nginx依赖包

nginx的Rewrite模块和HTTP核心模块会使用到PCRE正则表达式语法:

yum -y install pcre pcre-devel

nginx的各种模块中需要使用gzip压缩:

yum -y install zlib zlib-devel

安全套接字层密码库:

yum -y install openssl openssl-devel

  1. 下载nginx包并解压(到/usr/local/src目录中)

cd /usr/local/src

wget http://nginx.org/download/nginx-1.1.10.tar.gz

tar -zxvf nginx-1.1.10.tar.gz

  1. 编译安装(到/usr/local/nginx目录中)

cd nginx-1.1.10

./configure --prefix=/usr/local/nginx

make

make install

  1. 创建并设置nginx运行账号:

groupadd nginx

useradd -M -g nginx -s /sbin/nologin nginx

cd /usr/local/nginx/conf

vim nginx.conf,设置user参数如下:

user nginx nginx

/usr/local/nginx/sbin/nginx -t


  1. 启动nginx

/usr/local/nginx/sbin/nginx


5.访问站点IP,出现下图说明安装成功

如果不能访问,可能是防火墙的原因,增加80端口,或关闭防火墙


安装Mysql

  1. 卸载已有mysql

查看是否已安装mysql:

rpm -qa mysql

有则卸载:

rpm -e mysql  // 普通删除模式
rpm -e --nodeps mysql  // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除

使用 yum 命令安装 MySQL,安装前我们需要先去官网下载 Yum 资源包

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum update
yum install mysql-server

权限设置:

chown mysql:mysql -R /var/lib/mysql

初始化 MySQL:

mysqld –initialize


启动 MySQL:

service mysqld start

查看 MySQL 运行状态:

service mysqld status

mysqladmin –version 查看mysql版本号

遇到的坑

0.ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

在[mysqld]后面任意一行添加“skip-grant-tables”用来跳过密码验证

  1. mysql> use mysql;

2. mysql> update user set password=password("你的新密码") where user="root";

3. mysql> flush privileges;

4. mysql> quit

5.

如果提示没有password字段 update user set authentication_string=password("123456") where user="root";


1.

mysql安装提示:TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_ti

解决办法:

vim /etc/my.cnf

配置文件增加

[mysqld]

explicit_defaults_for_timestamp=true

启动失败原因

dataDir= /mysql 清空 给权限 在mysqld –initialize

给权限还不能报权限错误 如下


通过日志可以看到以下错误:

cat /var/log/mysqld.log

2018-11-05T14:56:36.150707Z 0 [ERROR] InnoDB: Operating system error number 13 in a file operation.
2018-11-05T14:56:36.150728Z 0 [ERROR] InnoDB: The error means mysqld does not have the access rights to the directory.
2018-11-05T14:56:36.150734Z 0 [ERROR] InnoDB: os_file_get_status() failed on './ibdata1'. Can't determine file permissions
2018-11-05T14:56:36.150744Z 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2018-11-05T14:56:36.751167Z 0 [ERROR] Plugin 'InnoDB' init function returned error.
2018-11-05T14:56:36.751185Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2018-11-05T14:56:36.751190Z 0 [ERROR] Failed to initialize builtin plugins.
2018-11-05T14:56:36.751194Z 0 [ERROR] Aborting

解决方案:setenforce 0

问题扩展:

SELinux的主要作用是什么

SELinux,Security Enhanced Linux 的缩写,也就是安全强化的 Linux,旨在增强传统 Linux 操作系统的安全性,解决传统 Linux 系统中自主访问控制(DAC)系统中的各种权限问题(如 root 权限过高等)。

传统的 Linux 系统安全,采用的是 DAC(自主访问控制方式),而 SELinux 是部署在 Linux 系统中的安全增强功能模块,它通过对进程和文件资源采用 MAC(强制访问控制方式)为 Linux 系统提供了改进的安全性。

SELinux 的 MAC 并不会完全取代 DAC,恰恰相反,对于 Linux 系统安全来说,它是一个额外的安全层,换句话说,当使用 SELinux 时,DAC 仍然被使用,且会首先被使用,如果允许访问,再使用 SELinux 策略;反之,如果 DAC 规则拒绝访问,则根本无需使用 SELinux 策略。

使用SELinux的好处

它使用的是 MAC 控制方式,这被认为是最强的访问控制方式;

它赋予了主体(用户或进程)最小的访问特权,这也就意味着,每个主体仅被赋予了完成相关任务所必须的一组有限的权限。通过赋予最小访问特权,可以防止主体对其他用户或进程产生不利的影响;

SELinux 管理过程中,每个进程都有自己的运行区域(称为域),各进程仅运行在自己的域内,无法访问其他进程和文件,除非被授予了特殊权限。

SELinux 可以调整到 Permissive 模式,此模式允许查看在系统上执行 SELinux 后所产生的印象。在 Permissive 模式中,SELinux 仍然会记录它所认为的安全漏洞,但并不会阻止它们。



安装PHP

  1. 安装php依赖包

yum install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel

2,下载
wget
https://www.php.net/distributions/php-7.2.17.tar.gz

tar -zxvf php-7.2.17.tar.gz

  1. 编译安装(到/usr/local/php目录)

cd php-7.2.17

./configure --prefix=/usr/local/php --disable-fileinfo --enable-fpm --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-openssl --with-zlib --with-curl --enable-ftp --with-gd --with-xmlrpc --with-jpeg-dir --with-png-dir --with-freetype-dir --enable-gd-native-ttf --enable-mbstring --with-mcrypt=/usr/local/libmcrypt --enable-zip --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mysql-sock=/var/lib/mysql/mysql.sock --without-pear --enable-bcmath

(注意:--with-mcrypt参数指定的是libmcrypt的安装目录。Php7不再使用mysql的库来支持mysql的连接,而是启用了mysqlnd来支持,所以php7的编译已经不再使用--with-mysql参数指定mysql的安装位置了,若想支持mysql,需要设置--enable-mysqlnd、--with-mysqli和--with-pdo-mysql=mysqlnd参数,--with-mysql-sock指定的是编译mysql时-DMYSQL_UNIX_ADDR参数指定的文件)

make

make install

  1. 将php包解压目录中的配置文件放置到正确位置(configure命令中的--with-config-file-path设置的位置)

cp php.ini-development /etc/php.ini

  1. 创建并设置php-fpm运行账号

groupadd www-data

useradd -M -g www-data -s /sbin/nologin www-data

cd /usr/local/php/etc

cp php-fpm.conf.default php-fpm.conf

vim php-fpm.conf

发现搜索不到“user”(设置运行账号的位置),但发现文件的最后一行:

所以:

cd php-fpm.d

cp www.conf.default www.conf(否则include匹配不到文件)

vim www.conf

搜索“user”设置运行账号:

user=www-data

group=www-data

  1. 配置nginx支持php

vim /usr/local/nginx/conf/nginx.conf


修改完成之后记得重启nginx服务:

service nginx start

  1. 设置php-fpm为系统服务:

vim /etc/systemd/system/php-fpm.service

文件内容:

[Unit]

Description=php-fpm

After=network.target

[Service]

Type=forking

ExecStart=/usr/local/php/sbin/php-fpm

PrivateTmp=True

[Install]

WantedBy=multi-user.target

  1. 设置php-fpm服务开机自启动:

systemctl enable php-fpm.service

  1. 启动php-fpm:

systemctl start php-fpm.service

查看是否启动成功:

ps aux | grep php-fpm

10.写一个php脚本测试nginx是否已支持php,php是否已支持mysql。

<?php
phpinfo();
?>

保存为index.php,然后打开网址


wget提示:
ERROR: cannot verify mydomain.com's certificate, issued by `/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance CA-3':
Unable to locally verify the issuer's authority.
To connect to mydomain.com insecurely, use `--no-check-certificate'.
Unable to establish SSL connection.

确实用 --no-check-certificate 可以正常下载,

相关推荐

F5负载均衡器如何通过irules实现应用的灵活转发?

F5是非常强大的商业负载均衡器。除了处理性能强劲,以及高稳定性之外,F5还可以通过irules编写强大灵活的转发规则,实现web业务的灵活应用。irules是基于TCL语法的,每个iRules必须包含...

映射域名到NAS

前面介绍已经将域名映射到家庭路由器上,现在只需要在路由器上设置一下端口转发即可。假设NAS在内网的IP是192.168.1.100,NAS管理端口2000.你的域名是www.xxx.com,配置外部端...

转发(Forward)和重定向(Redirect)的区别

转发是服务器行为,重定向是客户端行为。转发(Forward)通过RequestDispatcher对象的forward(HttpServletRequestrequest,HttpServletRe...

SpringBoot应用中使用拦截器实现路由转发

1、背景项目中有一个SpringBoot开发的微服务,经过业务多年的演进,代码已经累积到令人恐怖的规模,亟需重构,将之拆解成多个微服务。该微服务的接口庞大,调用关系非常复杂,且实施重构的人员大部分不是...

公司想搭建个网站,网站如何进行域名解析?

域名解析是将域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站的一种服务。IP地址是网络上标识站点的数字地址,为方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转...

域名和IP地址什么关系?如何通过域名解析IP?

一般情况下,访客通过域名和IP地址都能访问到网站,那么两者之间有什么关系吗?本文中科三方针对域名和IP地址的关系和区别,以及如何实现域名与IP的绑定做下介绍。域名与IP地址之间的关系IP地址是计算机的...

分享网站域名301重定向的知识

网站域名做301重定向操作时,一般需要由专业的技术来协助完成,如果用户自己在维护,可以按照相应的说明进行操作。好了,下面说说重点,域名301重定向的操作步骤。首先,根据HTTP协议,在客户端向服务器发...

NAS外网到底安全吗?一文看懂HTTP/HTTPS和SSL证书

本内容来源于@什么值得买APP,观点仅代表作者本人|作者:可爱的小cherry搭好了NAS,但是不懂做好网络加密,那么隐私泄露也会随时发生!大家好,这里是Cherry,喜爱折腾、玩数码,热衷于分享数...

ForwardEmail免费、开源、加密的邮件转发服务

ForwardEmail是一款免费、加密和开源的邮件转发服务,设置简单只需4步即可正常使用,通过测试来看也要比ImprovMX好得多,转发近乎秒到且未进入垃圾箱(仅以Mailbox.org发送、Out...

使用CloudFlare进行域名重定向

当网站变更域名的时候,经常会使用域名重定向的方式,将老域名指向到新域名,这通常叫做:URL转发(URLFORWARDING),善于使用URL转发,对SEO来说非常有用,因为用这种方式能明确告知搜索引...

要将端口5002和5003通过Nginx代理到一个域名上的操作笔记

要将端口5002和5003通过Nginx代理到域名www.4rvi.cn的不同路径下,请按照以下步骤配置Nginx:步骤说明创建或编辑Nginx配置文件通常配置文件位于/etc/nginx/sites...

SEO浅谈:网站域名重定向的三种方式

在大多数情况下,我们输入网站访问网站的时候,很难发现www.***.com和***.com的区别,因为一般的网站主,都会把这两个域名指向到同一网站。但是对于网站运营和优化来说,www.***.com和...

花生壳出现诊断域名与转发服务器ip不一致的解决办法

出现诊断域名与转发服务器ip不一致您可以:1、更改客户端所处主机的drs为223.5.5.5备用dns为119.29.29.29;2、在windows上进入命令提示符输入ipconfig/flush...

涨知识了!带你认识什么是域名

1、什么是域名从技术角度来看,域名是在Internet上解决IP地址对应的一种方法。一个完整的域名由两个或两个以上部分组成,各部分之间用英文的句号“.”来分隔。如“abc.com”。其中“com”称...

域名被跳转到其他网站是怎么回事

当你输入域名时被跳转到另一个网站,这可能是由几种原因造成的:一、域名可能配置了域名转发服务。无论何时有人访问域名,比如.com、.top等,都会自动重定向到另一个指定的URL,这通常是在域名注册商设...

取消回复欢迎 发表评论: