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 实现本地代码与远程代码同步功能,此功能极大提高开发效率,省下了,不断手动上传代码麻烦。

本作品采用《CC 协议》,转载必须注明作者和本文链接
时空扭曲, 到底长啥样.
本帖由系统于 7年前 自动加精
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 16
ThinkQ

谢谢

7年前 评论
falling-ts

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

7年前 评论

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

7年前 评论

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

7年前 评论

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

7年前 评论

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

7年前 评论
falling-ts

@lovecn 是的。。

7年前 评论
mengdodo

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

7年前 评论

@FiveEgg 宝塔好用不?

6年前 评论

之前安装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.
6年前 评论
falling-ts

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

6年前 评论

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

6年前 评论
falling-ts

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

6年前 评论
ChoChik

给力

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!