Laravel 之道特别篇一: yum 安装 LNMP 环境

导语

虽然,当今在 CentOS(版本为7) 中搭建 LNMP 环境,我们可以使用 宝塔 或者 LNMP一键安装包;但是,我们作为一名程序员,尤其是后台程序员,如果,仅仅借助这第三方安装搭建 LNMP,会阻碍我们的成长和进步。尤其对我们这种不摸透原理,誓不罢休的强迫症患者来说,更为严重。

上面这段话,说着玩哈,有方便的工具为什么不用呢,你说是不。当然多学点其它方式,对我们还是有好处的。今天我就把 yum 安装 nginx1.14、php7.2、mysql5.7 教给大家,同时给自己记录一下笔记,方便以后查找。

一、安装前准备

  • 安装 VMware 虚拟机(我们在 WIN10 上通过虚拟机安装 CentOS7)

    官方下载地址

file

这款软件并不是开源的,我建议有能力的小伙伴,能支持一下正版,就支持一下哈。实在不行滴,,,百度找 vmware14 激活码。这里我就不贴啦,有问题找度娘,什么问题都能解决。

  • 下载 CentOS7

官方下载地址

自己选择一个离自己最近的下载地址,建议选用 163 的下载地址

二、关于安装 CentOS系统

太长了,不在这哔哔啦。直接上我学习 Linux 基础的笔记分享地址,主要看系统安装这块,其它的,有兴趣的同学,可以看看。

Linux 达人养成

安装好以后,在虚拟机上启动,使用 Xshell 工具连接已经安装好的 CentOS:

file

Xshell_6 社区免费版下载地址

选择 Xshell 的 download 按钮,然后填写社区或者学校信息,最后 submit 后,就可以下载了

  • 注意安装完 CentOS 后

一定要设置 DNS 解析,否则无法使用 yum 工具

腾讯DNS:119.29.29.29
114DNS:114.114.114.114

三、安装 Nginx1.14

  • 第一步,获取 yum 源

nginx 官方 yum 源

file

看到没,复制图片大红框的内容

  • 第二步,在 CentOS 中新建 yum 源

1、进入 yum 源管理目录

cd /etc/yum.repos.d/

2、新建并编辑 nginx yum 源文件 nginx.repo

vim nginx.repo

3、将复制好的 nginx yum 源内容,粘贴到 nginx.repo

file

4、修改 baseurl

baseurl=http://nginx.org/packages/OS/OSRELEASE/$basearch/

# 改为

baseurl=http://nginx.org/packages/centos/7/$basearch/

如图

file

5、保存退出: esc -> :wq -> enter

6、测试 yum 源安装是否成功

yum list | grep nginx

第一次运行 yum list 可能需要寻找可用的 yum 源地址,并做缓存。此过程如果失败,重新运行一下上面的命令,因为网络环境并不是一成不变的。

file

如上图,多运行几次 yum list | grep nginx ,最后能够稳定显示上面的内容,即为 nginx yum 源安装成功

  • 第三步,安装 nginx
yum -y install nginx
  • 第四步,测试 nginx 是否安装成功
nginx -v

file

  • 第五步,需要关闭防火墙和 selinux(因为这是测试环境,不需要域名,生产环境,不要关闭这两项)
iptables -F
setenforce 0

注意:每次系统重启,都要关闭一下,要不访问不了 80 端口哦

  • 第六步,CentOS 根目录新建 www/wwwroot 目录用来存放网站项目目录
mkdir /www
mkdir /www/wwwroot
  • 第七步,在 /www/wwwroot 新建测试目录 default,并在测试目录下新建一个 index.html 测试文件
mkdir /www/wwwroot/default
cd /www/wwwroot/default
vim index.html

然后在 index.html 输入 Hellow World!!! 内容,用来做测试

  • 第八步,进入 /etc/nginx/conf.d ,并修改里面的 default.conf
cd /etc/nginx/conf.d
vim default.conf

file

将上图中红框内容修改为 /www/wwwroot/default;

  • 第九步,启动 nginx,并查看启动状态
systemctl start nginx
systemctl status nginx

file

如图 绿点并提示有 active (running) 即为启动成功。

  • 第十步,浏览器访问 虚拟机的IP地址

file

四、安装 PHP7.2

php7.2 版本的 yum 源在 webtatic 上,但还有一部分需要依赖 epel-release

  • 第一步,安装 epel-release

EPEL(Extra Packages for Enterprise Linux ),是基于Fedora的一个项目,为“红帽系”的操作系统提供额外的软件包,适用于RHEL、CentOS和Scientific Linux。

yum -y install epel-release

安装完成后,在 /etc/yum.repos.d 目录下,就会多一个 epel.repo 的文件,还有一个 testing 的测试文件。当系统通过 yum 进行安装软件时,如果需要 epel 里的扩展包,就会自动下载安装。

file

  • 第二步,安装 webtatic yum 源
rpm -ivh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

安装完成后,在 /etc/yum.repos.d 目录下会多出 webtatic.repowebtatic-archive.repo 两个文件,还有一个 testing 的测试文件。

  • 第三步,查看 php 可以安装的包
yum list | grep php72

file

上面这些 rpm 包就是 webtatic 的 yum 源里面的包啦

我们要安装的就是 php72 的核心包 mod_php72w 和核心扩展包 php72w-cliphp72w-fpmphp72w-commonphp72w-devel

其它扩展选项包请根据需要安装,例如需要 php72w-gd 后期可单独安装

  • 第四步,安装 php72
yum -y install mod_php72w php72w-cli php72w-fpm php72w-common php72w-devel

通过这种方式安装的 php72 的 php.ini 文件与我们认识的不太一样,它类似于 nginx.conf 存在一个主配置,通过类型 include 方法,包含指定文件夹下的模块配置文件。

如图,是 /etc 文件夹:

file

  • 第五步,在 /www/wwwroot 下新建 learn 文件夹,并在此文件夹下,新建 index.php 文件,输入下列内容
<?php
phpinfo();
  • 第六步,在 /etc/nginx/conf.d 下面新建 learn.conf nginx配置文件,输入下列内容
server {
    listen 8080;
    server_name localhost;
    root /www/wwwroot/learn;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    index index.php index.html index.htm;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_page 404 /index.php;

    location ~ \.php$ {
        root /www/wwwroot/learn;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}
  • 第七步,重启 nginx 与启动 php-fpm
systemctl restart nginx
systemctl start php-fpm
  • 第八步,浏览器访问 IP:8080

file

五、安装 MySQL5.7

  • 第一步,安装 mysql 官方 yum 源
rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
  • 第二步,查看 MySQL yum 源
yum list | grep mysql

file

发现只有 mysql80 的包,这是因为没有开启 mysql57 的包

  • 第三步,关闭80包,开启57包
yum-config-manager --disable mysql80-community
yum-config-manager --enable mysql57-community

这个时候再查看 mysql 包列表

yum list | grep mysql

file

57版本的包,就这样开启了

  • 第四步,安装 mysql57
yum -y install mysql-community-server mysql-community-client
  • 第五步,启动 mysql
systemctl start mysqld
  • 第六步,查看密码
grep 'temporary password' /var/log/mysqld.log
  • 第七步,登录 mysql,修改密码
mysql -uroot -p
# 输入密码
set password for root@localhost = password('你的密码'); 

如果提示错误,那是因为 mysql57 对密码的复杂度进行了限制,依次执行下列命令,取消复杂度限制,再修改

set global validate_password_policy=0;
set global validate_password_mixed_case_count=0;
set global validate_password_number_count=3;
set global validate_password_special_char_count=0;
set global validate_password_length=3;

最后

LNMP 已经安装完毕。

特别篇第二章,讲一下 PhpStrom 实现本地代码与远程代码同步功能,此功能极大提高开发效率,省下了,不断手动上传代码麻烦。

我们是一群被时空压迫的孩子。 ---- 爱因斯坦

本帖由系统于 1年前 自动加精
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 15
ThinkCsly

谢谢

1年前 评论
yuanshang

@eiomi 客气,一起学习嘛。。

1年前 评论

一直用宝塔 看到这个两眼昏花

1年前 评论

manjaro 搭建 LNMP 快和一键安装差不多了

1年前 评论

深入可以试着用源码编译装

1年前 评论

grep 'temporary password' /var/log/mysqld.log 密码放日志文件了?

1年前 评论
yuanshang

@lovecn 是的。。

1年前 评论

密密麻麻,我还是喜欢docker-compose

1年前 评论

@FiveEgg 宝塔好用不?

1年前 评论

之前安装docker 把9000端口占用,难怪一直启动不了。

[root@VM_0_14_centos docker-lnmp]# lsof -i:9000
COMMAND     PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
docker-pr 30650 root    4u  IPv6 1319116      0t0  TCP *:cslistener (LISTEN)
[root@VM_0_14_centos docker-lnmp]# systemctl start php-fpm
Job for php-fpm.service failed because the control process exited with error code. See "systemctl status php-fpm.service" and "journalctl -xe" for details.
[root@VM_0_14_centos docker-lnmp]# systemctl status php-fpm.service
● php-fpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; disabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Thu 2018-11-15 10:23:05 CST; 20s ago
  Process: 17252 ExecStart=/usr/sbin/php-fpm --nodaemonize --fpm-config /etc/php-fpm.conf (code=exited, status=78)
 Main PID: 17252 (code=exited, status=78)

vi /etc/php-fpm.d/www.conf 修改端口才成功
mysql我安装的8.0,修改不了密码

mysql> set password for root@localhost = password('root');
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'password('root')' at line 1
mysql> set global validate_password_policy=0;
ERROR 1193 (HY000): Unknown system variable 'validate_password_policy'
mysql> use mysql
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
1年前 评论
yuanshang

@lovecn 8.0 的 mysql 肯定对密码复杂度这块做了更严格的限制。建议百度寻找解决方案。

1年前 评论

我做到第十步,重启NGINX才生效:systemctl restart nginx

11个月前 评论
yuanshang

@tsin 应该是你安装完 Nginx 就启动了,这样修改了配置文件,是需要重启 Nginx 的

11个月前 评论
ChoChik

给力

6个月前 评论

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!