LNMP-CentOS-Yum

1.应用场景

搭建服务器LNMP环境

2.学习/操作

环境

CentOS 7.5

root权限 //虽然不推荐一直使用,暂且先用.

阿里云ECS git bash[也可使用cmd] ssh连接服务器  见:SSH - 学习/实践_穿素白衫的少年的博客-CSDN博客

备注:

阿里云/腾讯云, 激活实例后,ssh的22端口是默认开放的.

步骤

1. 镜像源切换

把YUM源切换成国内的镜像源
先备份一下原来的源镜像文件

# cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

下载新的CentOS-Base.repo

#wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

如果没有安装wget的话,可以使用#yum install wget安装完成之后,再执行CentOS-Base.repo的安装
对/etc/yum.repos.d/CentOS-Media.repo源文件配置文件,改为不生效

enabled=0

YUM缓存生成

#yum clean all
#yum makecache
#yum update

备注:使用阿里云的服务器,yum镜像源不用更换,阿里已经更换完毕。

对/etc/yum.repos.d/CentOS-Media.repo源文件配置文件,改为不生效   

enabled=0

备注:如下所示,阿里云服务器ECS也是做设置。

#yum clean all
#yum makecache
#yum update

上面命令执行的响应截图:

更新完毕.


2 安装Nginx

备注:

Nginx的正确读法应该是Engine X
使用CentOS自带的YUM来安装

2.1 YUM源中没有Nginx,我们需要增加一个nginx的源nginx.repo

# vi /etc/yum.repos.d/nginx.repo

源文件的内容

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

截图如下:

2.2 查看Nginx是否配置成功

#yum list nginx

由上可知,nginx目前最新稳定版本是: nginx-1.16.0 也是yum源中显示的版本。

2.3 安装成功后,就可以直接安装nginx.

#yum -y install nginx

安装的就是Nginx官网的最新版本

2.4 启动Nginx

#nginx

2.5 测试安装是否成功

方式一:

使用curl命令

#curl 127.0.0.1

备注:如果提示没有curl命令,使用yum install -y curl 回车即可,

或者 yum search curl 

再执行 curl 127.0.0.1 可以执行成功

如果安装成功的话,就会看到输出一个HTML的一个反馈

方式二:  //前提是关闭防火墙与selinux

浏览器中访问:http://ningxiaofa.top/

该页面处于: /usr/share/nginx/html/index.html

由上可知,nginx 安装成功.

2.6 开机启动设置  [最后一步]

#systemctl enable nginx
#systemctl daemon-reload

解释:

#systemctl daemon-reload   //新加载某个服务的配置文件,如果新安装了一个服务,归属于 systemctl 管理,要是新服务的服务程序配置文件生效,需重新加载。

systemctl reload-daemon  加载新的unit 配置文件  

systemd  的 unit 的配置文件位置  :  redhat 系列: 目录  /usr/lib/systemd/system/ 下 

enable 是在  /etc/systemd/system/multi-user.target.wants/  这个目录下 做 unit 配置文件的软链:如下所示

补充:

启动/停止/重启/关闭开机自启命令

#nginx 或者 systemctl start nginx

#systemctl stop nginx

#systemctl restart nginx
#systemctl disable nginx

# chkconfig --list     显示开机可以自动启动的服务
# chkconfig --add *** 添加开机自动启动***服务
# chkconfig --del ***   删除开机自动启动***服务

详见: linux设置开机服务自动启动/关闭自动启动命令 - 追忆丶年华 - 博客园  //linux设置开机服务自动启动/关闭自动启动命令

3.  安装MySql(8.0)

3.1 rpm 安装 MySql

从 CentOS 7.0 发布以来,yum 源中开始使用mariadb 来代替MySQL的安装。即使你输入的是yum install mysql , 显示的也是 mariadb 的安装内容,因此,如果使用 yum 安装 MySQL 的话,就需要去下载官方指定的 yum 源。网址:https://dev.mysql.com/downloads/repo/yum/。

官网:http://dev.mysql.com/downloads/repo/yum/

文档:  MySQL :: MySQL 8.0 Reference Manual :: 2.5.1 Installing MySQL on Linux Using the MySQL Yum Repository  //详情都在里面, 认真读

#rpm -Uvh http://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm  //红色部分对应上面红色部分

备注:

可以通过浏览器下载: 

由上可知

执行 #rpm -Uvh https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm 也应该是可以的

[两个网址应该是重定向的关系],另外rpm是可执行文件,可以看到很小

3.2 查看8.0 版本是否已经启用

#yum repolist all | grep mysql

可以看到 'mysql80-community/x86_64           MySQL 8.0 Community Server    enabled:    145' 启动

如果没有启用的话,我们可以修改源文件

# vim /etc/yum.repos.d/mysql-community.repo 

把enabled改为1就可以了,其他的版本改为0

退出保存. [操作:ESC->wq->回车]

备注:

这里可以git bash的搜索功能,方便快速找到文本所在位置.

3.3 查看可用的版本 

//修改完成之后查看可用的版本 

#yum repolist enabled | grep mysql

3.4 安装MySql

//如果看到8.0版本启用, 便可进行安装MySql.

yum -y install mysql-community-server

3.4 启动mysql

//安装完成之后,启动mysql

相关命令: 参见 MySQL :: A Quick Guide to Using the MySQL Yum Repository

#service mysqld start

3.5 查看MySql的启动状态

#service mysqld status

3.6 开机启动设置

#systemctl enable mysqld
#systemctl daemon-reload

3.7 修改MySQL配置

3.7.1 查看MySQL临时密码

MySql安装完成之后会在LOG文件(/var/log/mysqld.log)中生成一个root[账号]的默认密码

grep 'temporary password' /var/log/mysqld.log

3.7.2  登录MySql并修改root密码

#mysql -uroot -p
mysql>ALTER USER 'root'@'localhost' IDENTIFIED BY 'new psd';

由上可知, 修改成功

备注:

非明文密码也是可以复制粘贴的.

3.7.3 扩展阅读:mysql的密码策略

mysql>show variables like '%password%';

默认的密码策略

validate_password_policy:密码策略,默认为MEDIUM策略
validate_password_dictionary_file:密码策略文件,策略为STRONG才需要
validate_password_length:密码最少长度
validate_password_mixed_case_count:大小写字符长度,至少1个
validate_password_number_count :数字至少1个
validate_password_special_char_count:特殊字符至少1个

3.7.4 修改密码策略 //这里先不修改.
在/etc/my.cnf文件添加validate_password_policy配置:

# 选择0(LOW),1(MEDIUM),2(STRONG)其中一种,选择2需要提供密码字典文件
validate_password_policy=0

3.7.5 修改默认编码

在/etc/my.cnf配置文件的[mysqld]下添加编码配置:

[mysqld]
character_set_server=utf8
init_connect='SET NAMES utf8'

如下:保存退出!

重启mysql,使修改生效

#systemctl restart mysqld

3.7.6 远程登录用户添加

mysql> GRANT ALL PRIVILEGES ON *.* TO 'lmc'@'%' IDENTIFIED BY '1qazXsw@' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

备注:

上面添加登录用户出现报错,原因TBD [猜测可能是 版本的问题]  上面命令用于MySQL5.7

原因与解决办法: TBD

Mysql8.0 创建远程登陆账户

mysql8和原来的版本有点不一样,8的安全级别更高,所以在创建远程连接用户的时候,

不能用原来的命令(同时创建用户和赋权):

mysql>grant all PRIVILEGES on *.* to 'guaiyouyisi'@'%' identified  by '123456';

必须先创建用户(密码规则:mysql8.0以上密码策略限制必须要大小写加数字特殊符号):

mysql>create user 'guaiyouyisi'@'%' identified  by 'Guaiyouyisi.';

再进行赋值:

mysql>grant all privileges on *.* to 'guaiyouyisi'@'%' with grant option;

最后刷新权限:

mysql>flush privileges;

当你进行远程连接是,会出现这样的错误:

Unable to load authentication plugin 'caching_sha2_password'.

是因为mysql8使用的是caching_sha2_password加密规则,最简单的方法是修改远程连接用户的加密规则:

mysql>ALTER USER '用户名'@'%' IDENTIFIED WITH mysql_native_password BY '密码.';

模板: ALTER USER 'nxf2019'@'%' IDENTIFIED WITH mysql_native_password BY 'sdfssadf.';

Mysql8.0 创建远程登陆账户

//模板 mysql> CREATE USER '你的账号'@'%' IDENTIFIED BY '你的密码';
//如:
mysql> CREATE USER 'nxf2019'@'%' IDENTIFIED BY 'Nxf123456.';

//模板:mysql> GRANT ALL PRIVILEGES ON 数据库名.数据表名 TO 'nxf2019'@'%' WITH GRANT OPTION;

//如:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'nxf2019'@'%' WITH GRANT OPTION;

mysql> FLUSH PRIVILEGES; //刷新权限

截图如下:

切换新创建用户,登录MySQL:

Over

...

查看用户

mysql> select host, user from mysql.user;

<pre>由于开始没有关闭SELinux,引起mysql连接失败的解决:
http://www.jianshu.com/p/ddd3ce15cb84
</pre>

Over

...


4. 安装PHP7  // 这里选择7.3版本

4.1 升级php安装包 [升至php7]

#rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
#rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

截图如下:

备注:

1. 浏览器下载 epel-release-latest-7.noarch.rpm

https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm  回车

2. 默认的yum源无法升级PHP,需要添加第三方yum源,我们选择webtatic库

CentOs 5.x
rpm -Uvh http://mirror.webtatic.com/yum/el5/latest.rpm


CentOs 6.x
rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm

CentOs 7.X  //一般选择一个即可, 区别TBD
rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

扩展:

1. 浏览器: https://dl.fedoraproject.org/pub/epel/ 回车

2. 可选择试用安装php 8

https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm  //可以浏览器下载php8, 仅仅是个操作.

升级php安装包 [升至php8]

#rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
#rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

4.2 查看yum源是否有php7.2安装包    //提示没有该包, 但是似乎没影响, 先进行下一步  TBD
yum list php72

7.3 安装PHP7.2及其插件

#yum install php72w.x86_64 php72w-cli.x86_64 php72w-common.x86_64 php72w-gd.x86_64 php72w-ldap.x86_64 php72w-mbstring.x86_64 php72w-mcrypt.x86_64 php72w-mysql.x86_64 php72w-pdo.x86_64

截图如下:

备注:

No package php72w.x86_64 available.
No package php72w-mcrypt.x86_64 available.
因为没有这两个包,提示没有找到可用的包 //实际上也没有

补充:

安装php及相关插件 [包括php-fpm]

安装php7.0
yum install -y 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-mysql.x86_64 php70w-pdo.x86_64 php70w-fpm

其他版本php安装  [php7.0及低于其的版本相同用法, 高于php7.0的安装见面 php 7.1]
如果想安装php5.5或者5.6版本,将上面的php70w替换为php55w或者php56w就可以了.

安装php7.1  //红色部分是安装php-fpm组件

yum install -y php71w-fpm php71w-opcache php71w-cli php71w-gd php71w-imap php71w-mysqlnd php71w-mbstring php71w-mcrypt php71w-pdo php71w-pecl-apcu php71w-pecl-mongodb php71w-pecl-redis php71w-pgsql php71w-xml php71w-xmlrpc php71w-devel mod_php71w

安装php7.2

yum install -y php72w-fpm php72w-opcache php72w-cli php72w-gd php72w-imap php72w-mysqlnd php72w-mbstring php72w-mcrypt php72w-pdo php72w-pecl-apcu php72w-pecl-mongodb php72w-pecl-redis php72w-pgsql php72w-xml php72w-xmlrpc php72w-devel mod_php72w

安装php7.3 同理

查看这些名字:

yum list|grep php

可以看到最新是php7.2,所以这里先选择7.2

Over

...

4.3 安装php-fpm // 如果上面已经安装过,就跳过

Note:

如果只是使用php-cli命令行执行方式, 可以考虑不安装php-fpm, 原因是php-fpm是与NGINX搭配使用, 这里【另外一台电脑】NGINX亦先不安装 // 20200618

#yum install php72w-fpm php72w-opcache

//推荐使用

#yum install -y php72w-fpm php72w-opcache    //-y 即确认yes

截图:

安装完成.

查看php-fpm版本

查看安装的扩展

4.4 启动php-fpm

#systemctl start php-fpm

4.5 开机启动设置

#systemctl enable php-fpm
#systemctl daemon-reload

4.6 修改nginx web根目录
修改 vim /etc/nginx/conf.d/default.conf

参见: How nginx processes a request

location ~ \.php$ {
        root           /usr/share/nginx/html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include      fastcgi_params;
 }
 

原来的样子:

修改后:

4.7 重启Nginx使修改生效

经过NMP这三部的安装后,至此LNMP的搭建就完成了!

最后一步, 检验LNMP是否运行良好

TBD

备注:

关于PATH_INFO设置可以参照我在Mac上搭建时写的文章:http://www.jianshu.com/p/8719be5d19af

Over

...

5. 优化 -- 自动化部署shell脚本编写

TBD

后续整理

...

3.问题

1. Linux如何使得命令行下显示色彩[如vim编辑器中]?如下:

TBD 

git bash中便自带有颜色渲染。

2. RPM ?

RMP 是 LINUX 下的一种软件的可执行程序,你只要安装它就可以了。

这种软件安装包通常是一个RPM包(Redhat Linux Packet Manager,就是Redhat的包管理器),后缀是.rpm。
RPM是Red Hat公司随Redhat Linux推出了一个软件包管理器,通过它能够更加轻松容易地实现软件的安装。

命令:

1.安装一个包
# rpm -ivh  //i表示安装,v表示显示安装过程,h表示显示进度
2.升级一个包
# rpm -Uvh

3.移走一个包
# rpm -e
4.安装参数
--force 即使覆盖属于其它包的文件也强迫安装

--nodeps 如果该RPM包的安装依赖其它包,即使其它包没装,也强迫安装。
5.查询一个包是否被安装
# rpm -q < rpm package name>
6.得到被安装的包的信息
# rpm -qi < rpm package name>
7.列出该包中有哪些文件
# rpm -ql < rpm package name>
8.列出服务器上的一个文件属于哪一个RPM包
#rpm -qf
9.可综合好几个参数一起用
# rpm -qil < rpm package name>
10.列出所有被安装的rpm package
# rpm -qa
11.列出一个未被安装进系统的RPM包文件中包含有哪些文件?
# rpm -qilp < rpm package name>

3.重启nginx[包括修改nginx配置文件后],出现报错

3.1 nginx: [emerg] invalid number of arguments in "root" directive in /etc/nginx/nginx.conf:45

错误原因: 配置书写有语法错误.

解决办法: 检查修正即可.

3.2 nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

错误原因:  端口占用, 导致失败.

解决办法:  杀死进程, 释放端口即可.

详细过程:

报错如下截图如下:

解决办法:

查看端口->杀死进程[80端口]->重新启动nginx

netstat -ntlp
kill PID号
service nginx restart

4. yum 卸载软件

1.自带工具删除

yum remove 软件  -y 

也支持通配符, 如: //卸载mariadb-libs.x86_64

yum -y remove mariadb*

2.手动删除残留

进入 /usr/local/lib 删除所有相关文件夹与文件[包括可执行文件]
进入 /usr/local/include 删除所有相关文件夹

检查 ~ 文件夹里面的"local"   "lib"  "include"  文件夹,然后删除里面的所有相关文件与目录, Over。

如: 卸载node与npm

1.自带工具删除

yum remove nodejs npm -y 

2.手动删除残留

进入 /usr/local/lib 删除所有 node 和 node_modules文件夹
进入 /usr/local/include 删除所有 node 和  node_modules 文件夹

进入 /usr/local/bin 删除 node 的可执行文件node和npm

检查 ~ 文件夹里面的"local"   "lib"  "include"  文件夹,然后删除里面的所有  "node" 和  "node_modules" 文件夹

完成。

5. 通过yum install nginx以下是默认安装目录如下: 

请记住

nginx的配置文件: /etc/nginx/nginx.conf

自定义的配置文件: /etc/nginx/conf.d

项目文件[即web根目录]: usr/share/nginx/html/

日志文件: /var/log/nginx/

php安装路径: /usr/lib64/php

后续补充

...

4.参考

https://xueyuanjun.com/post/9749  //基于 Laravel 5.7 开发博客应用系列(十) —— 将博客应用自动部署到线上服务器完整流程详解

https://xueyuanjun.com/post/9696  //在阿里云 CentOS 系统中通过 yum 搭建环境并部署 Laravel 应用

https://xueyuanjun.com/post/9751  //从零部署一个 Laravel 项目到阿里云服务器

https://xueyuanjun.com/post/9459 //将 Laravel 应用部署到阿里云 / 腾讯云

https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html  //putty下载

https://www.jianshu.com/p/02baa54283ba  //CentOS7快速搭建LNMP环境

Index of /packages/centos/  //nginx包

https://dl.fedoraproject.org/pub/epel/  //php包文件

fedoraproject.org 会跳转到 Fedora //fedora[操作系统]官网 //Fedora 是一个 Linux 发行版

https://mirror.webtatic.com/yum/  // webtatic库

Centos7 手把手教你 编译安装LNMP环境 (古月)_天黑我就困的博客-CSDN博客_编译安装lnmp环境  //Centos7 手把手教你 编译安装LNMP环境 (古月)

linux设置开机服务自动启动/关闭自动启动命令 - 追忆丶年华 - 博客园  //linux设置开机服务自动启动/关闭自动启动命令

https://www.jianshu.com/p/8719be5d19af //Mac安装Nginx、配置PHP(二)

Mysql8.0 创建远程登陆账户 - 怪有意思 - 博客园  //Mysql8.0 创建远程登陆账户

抱歉,该内容已被作者删除 - 知乎 //MySQL8.0创建用户赋予权限支持远程连接

CentOs7.x下升级PHP版本,使用yum命令及webtatic库_极客-灵徒的博客-CSDN博客_webtatic-release  //CentOs7.x下升级PHP版本,使用yum命令及webtatic库 

https://juejin.im/post/5d07cf13f265da1bd522cfb6  //掘金-CentOS安装MySQL详解  20200625

https://www.mysqltutorial.org/install-mysql-centos/  //Install MySQL CentOS

后续补充

...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值