Centos7中安装Nginx和PHP服务
# Nginx 和 PHP 能干吗?
我们要想要搭建自己的网站时,我们可以在 linux 服务器中配置 LNPM (Linux,Nginx,PHP,Mysql) 或 LAPM (Apache) 实现网站的搭建与访问,Nginx 作为 web 服务器,可以将我们自己编写的 html 静态网页文件部署到服务器中,然后通过 ip 地址加端口号进行访问。但我们的页面不可能都是一些静态页面,网站应该能和后台数据进行交互,所以我们可以用到 PHP 这个技术,它是一种用于创建动态和交互式 HTML 网页的脚本语言。接下来我们简单配置一下这两个服务。
# 源码安装和 yum 安装的区别与选择
# yum 安装:
yum 相当于是自动化帮你安装,你不用管软件的依赖关系,在 yum 安装过程是帮你把软件的全部依赖关系帮你傻瓜式的解决了。而且现在 Centos7 的服务启动已经换成 systemctl 命令来控制了。通过 yum 安装会帮你自动注册服务,你可以通过 systemctl start xxx.service 启动服务,方便快捷。但是缺点是 yum 安装你没办法干预,安装的目录也是分散的。你可能要执行 whereis 或者 find 命令去找 yum 安装的路径。有时候 yum 安装的软件版本比较低,你不得不去找其他的 yum 源,或者 rpm 包。
# 源码安装:
源码编译在安装过程中可能要解决很多的依赖问题,才能装好一个软件。装好的软件你还不能通过 systemctl 来启动服务,因为在 /usr/lib/systemd/system/ 路径下并没有你的服务的配置文件,你要自己手写一个。但是好处在于你能选择软件的版本,自定义安装目录,安装的模块。更加灵活方便。
# 源码方式安装 Nginx 服务
-
首先可以去官网选择自己需要的版本进行下载,然后上传到我们的 Centeos7 中任意位置进行解压。
-
安装所必须的依赖
1
2
3
4
5
6安装gcc
yum install -y gcc
安装perl库
yum install -y pcre pcre-devel
安装zlib库
yum install -y zlib zlib-devel -
编译安装,进入 nginx-1.23.1 目录中
-
.configure --prefix=/usr/local/nginx --with-http_ssl_module
-
参数:
--prefix=/usr/local/nginx
用来指定安装位置--with-http_ssl_module
是 nginx 支持 ssl,用来配置 https 进行访问
-
-
make && make install
-
启动 nginx,进入安装好的目录:
cd /usr/local/nginx/sbin
1
2
3
4./nginx 启动
./nginx -s stop 快速停止
./nginx -s quit 优雅关闭,在退出前完成已经接受的连接请求
./nginx -s reload 重新加载配置
-
-
安装完成后,将 nginx 配置为系统服务
-
创建服务脚本:
vim /usr/lib/systemd/system/nginx.service
-
服务脚本内容
1
2
3
4
5
6
7
8
9
10
11
12
13
14[Unit]
Description=nginx - web server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
ExecQuit=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target -
重新加载系统服务:
systemctl daemon-reload
-
启动服务:
systemctl start nginx.service
-
开机启动:
systemctl enable nginx.service
-
-
关闭防火墙或放行端口,使我们在物理机中也能访问
-
关闭防火墙:
systemctl stop firewalld.service
-
放行端口,nginx 默认对应 80 端口:
firewall-cmd --zone=public --add-port=80/tcp --permanent
放行端口号需要重新加载防火墙:
firewall-cmd --reload
-
-
测试 nginx 是否安装成功
-
首先查看 Centos7 中对应的 ip 地址
-
到我们的物理机中输入刚刚的地址,就可以看到 nginx 的首页(这个首页更改过)
-
# yum 方式安装 php 服务
注意:直接使用 yum install php
安装,安装的版本过低,所以我们选择其他源,使用 Remi 模块并进行安装,这里选择版本 PHP7.4。还有 yum insatll php
不会默认安装 php-fpm,这需要我们自己添加。
-
首先需要添加两个源,不然安装会报错
1
2
3php高版本的yum源地址,有两部分,其中一部分是epel-release,另外一部分来自webtatic。
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm -
添加相关的库后,启用 PHP 7.4 的 Remi 模块并进行安装。
1
dnf -y install dnf-utils
-
安装需要的模块,你可以通过
yum search php74*
查看有那些模块。1
2
3php74-php:用于创建动态web的PHP脚本语言网站
php74-php-fpm:PHP FastCGI进程管理器
yum install php74-php php74-php-fpm -
运行并查看版本, 重启命令, 添加自动启动,链接 php 文件
1
2
3
4
5
6
7
8
9
10运行并查看版本
php74 -v
重启命令php-fpm
systemctl restart php74-php-fpm
添加自动启动
systemctl enable php74-php-fpm
查看php7.4的安装路径
whereis php74
链接php文件,这样可以在任意地方使用它
ln -s /opt/remi/php74/root/usr/bin/php /usr/bin/php -
然后我们编写 php 文件进行测试。
-
编写 php 文件:
vim hello.php
-
授予它可运行权限,
chmod +x hello.php
-
运行 hello.php:
./hello.php
-
-
至此,我们两个服务已经搭建完成,接下来我们就可以配置 nginx 可以解析 php 文件,这样我们放在 html / 目录下的 php 文件可以通过 nginx 进行访问了,如何配置两个服务一同工作,请移步到下一篇文章。