磨刀不误砍柴功,先把环境搭建好,再建立web网站,没有一个好的PHP环境,后面麻烦会更多。之前讲过手动安装部署php环境,今天说一下在centos8下面快捷的使用dnf安装配置环境的方法。
用的是google的免费云服务器,配置1核CPU,3.75G内存,硬盘500G。
建立好服务器后,连接上SSH,下面开始操作。
新安装的Centos7 第一件事是修改root密码。
sudo -i或者sudo su切换root用户
使用sudo -i切换到root超级管理员模式,输入passwd修改密码。

1
2
sudo -i
passwd

输入你要修改的密码,然后二次确认密码,回车进去系统。cd\切换到root目录下。
开启客户端连接SSH,上面用的是Google云里面自带的网页模式的ssh。

1
vi /etc/ssh/sshd_config

修改以下内容,然后重新启动sshd服务。
PermitRootLogin默认为no,需要开启root用户访问改为yes。
PasswordAuthentication默认为no,改为yes开启密码登陆。
ClientAliveInterval默认420,修改3600,客户端连接超时时间。

1
2
3
PermitRootLogin yes
PasswordAuthentication yes
ClientAliveInterval 3600
1
service sshd restart

以上是使用谷歌云服务器的基本操作。下面安装系统软件包所需要的源。epel和remi是centos8不可缺少的。

1
2
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-8.rpm

或者使用dnf命令安装源和PHP7.4X。

1
2
3
4
5
6
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
dnf install yum-utils
dnf module reset php
dnf module install php:remi-7.4
dnf update

查看一下系统上启用的数据源,dnf repolist all可以查看全部的数据源,包括未启用的数据源。

1
dnf repolist

用dnf命令查看系统禁用的数据源。

1
dnf repolist disabled

安装源过后,需要设置优化一下安装的软件包源。安装dnf-utils和makecache生成源缓存。

1
2
dnf -y install dnf-utils
dnf makecache

DNF意思是“ Dandified Yum”。 这是下一代的yum软件包管理器(Yum的派生)。dnf和yum的语法类似,有很多相似之处。默认情况下,DNF已安装在RHEL 8和CentOS 8系统上。
安装启用dnf的自动更新

1
2
dnf install dnf-automatic
systemctl start dnf-automatic.timer

使用dnf安装“开发工具”软件包组:

1
dnf group install 'Development Tools' -y

添加centos8操作系统的swap空间:
Google云默认安装操作系统是没有分配swap空间的,需要手动添加。如果操作系统没有配置swapfile(分配swap空间)会导致内存负载后出错。
free -m 查看内存配置,如果Swap后面都是0的话需要添加swap。
1.创建一个预分配指定大小空间的文件;
2.以用ls命令检查文件大小;
3.更改swap文件的权限;
4.格式化swap文件;
5.启用swap交换文件;
6.修改fstab文件来实现重启后自动生效swap。

1
2
3
4
5
6
sudo dd if=/dev/zero of=/swapfile bs=1024 count=8388608
ls -lh /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo vi /etc/fstab

在fstab文件末尾加入下面内容

1
/swapfile swap swap sw 0 0

或者直接使用命令设置swap文件开机启动

1
echo '/swapfile swap swap sw 0 0' | sudo tee -a /etc/fstab

新增用户组和用户,用于web访问相关的权限访问使用。

1
2
groupadd www
useradd -g www www

环境基本配置已经完事了,下面安装一下php7。
如果使用yum -y install php命令默认安装php的话,版本很低,要选择安装php74,现在默认安装的是php7.4.4

1
dnf search php74*

php74相关的软件包太多了,这些都是干什么用的,哪些应该装哪些不应该装呢?
php74:安装PHP 7.4的包
php74-php:用于创建动态web的PHP脚本语言网站
php74-build:基本的构建配置
php74-php-gd:用于PHP应用程序使用gd的模块图形库
php74-xhprof:一个用于PHP - Web接口的层次分析器
php74-zephir:用于创建扩展的Zephir语言PHP:
php74-php-ast:抽象语法树
php74-php-cli:用于PHP的命令行接口
php74-php-dba:一个用于PHP的数据库抽象层模块应用程序
php74-php-dbg:交互式PHP调试器
php74-php-ffi:外部函数接口
php74-php-fpm:PHP FastCGI进程管理器
php74-php-gmp:一个用于使用GNU的PHP应用程序模块议员库
php74-php-lz4:x86_64: PHP的LZ4扩展
php74-php-pdo:一个用于PHP的数据库访问抽象模块应用程序
php74-php-xml:x86_64:用于使用XML的PHP应用程序的模块
php74-runtime:处理php74软件集合的包:
php74-php-imap:x86_64:用于使用IMAP的PHP应用程序的模块
php74-php-intl:x86_64: PHP国际化扩展应用程序
php74-php-json:x86_64: PHP的JavaScript对象符号扩展
php74-php-ldap:x86_64:用于使用LDAP的PHP应用程序的模块
php74-php-oci8:x86_64:用于使用OCI8的PHP应用程序的模块数据库
php74-php-odbc:x86_64:用于使用ODBC的PHP应用程序的模块数据库
php74-php-pear:noarch: PHP扩展和应用程序库框架
php74-php-pggi:GTK绑定
php74-php-snmp:一个用于PHP应用程序查询的模块SNMP-managed设备
php74-php-soap:用于使用SOAP的PHP应用程序的模块协议
php74-php-tidy:标准PHP模块提供了tidy库支持
php74-php-zstd:x86_64: Zstandard扩展名
php74-scldevel:x86_64:打包php74的开发文件
php74-unit-php:用于NGINX单元的PHP模块
php74-php-devel:构建PHP扩展所需的文件
php74-php-pgsql:一个用于PHP的PostgreSQL数据库模块
php74-php-pinba:x86_64: Pinba统计服务器的客户端扩展
php74-php-bcmath:用于PHP应用程序的模块bcmath库
php74-php-brotli:用于PHP的Brotli扩展
php74-php-common:PHP的公共文件
php74-php-pspell:x86_64:用于PHP应用程序的模块中接口
php74-php-recode:用于PHP应用程序的模块重新编码库
php74-php-snappy:PHP的Snappy扩展
php74-php-sodium:x86_64:钠密码库的包装
php74-php-sqlsrv:x86_64:用于SQL Server的PHP Microsoft驱动程序
php74-php-xmlrpc:的PHP应用程序模块xml - rpc协议
php74-php-enchant:增强PHP的拼写扩展应用程序
php74-php-libvirt:用于Libvirt的PHP语言绑定
php74-php-mysqlnd:x86_64:用于使用MySQL的PHP应用程序的模块数据库
php74-php-opcache:x86_64: Zend OPcache
php74-php-pecl-ds:x86_64: PHP的数据结构
php74-php-pecl-ev:提供libev库的接口
php74-php-pecl-pq:PostgreSQL客户端库(libpq)绑定
php74-php-pecl-uv:Libuv包装器
php74-php-process:用于PHP脚本的模块使用系统进程接口
php74-php-embedded:用于嵌入应用程序的PHP库
php74-php-mbstring:一个用于PHP应用程序的模块多字节字符串处理
php74-php-pecl-dio:直接I/O函数
php74-php-pecl-eio:提供libeio库的接口
php74-php-pecl-env:加载环境变量
php74-php-pecl-lua:嵌入式lua解释器
php74-php-pecl-lzf:x86_64:处理LZF de/压缩的扩展
php74-php-pecl-nsq:NSQ客户端的PHP扩展
php74-php-pecl-psr:PSR接口
php74-php-pecl-:用于读取RAR存档的PHP扩展
php74-php-pecl-rrd:x86_64: rrdtool的PHP绑定
php74-php-pecl-sdl:简单的PHP DirectMedia层
php74-php-pecl-svn:x86_64: Subversion版本的PHP绑定控制系统
php74-php-pecl-vld:x86_64:转储PHP的内部表示脚本
php74-php-pecl-yac:无锁用户数据缓存
php74-php-pecl-yaf:x86_64:又一个框架
php74-php-pecl-yar:轻量级并发RPC框架
php74-php-pecl-yaz:x86_64: Z39.50/SRU客户端
php74-php-pecl-zip:一个ZIP文件的扩展名
php74-php-pecl-zmq:ZeroMQ消息传递
php74-php-phalcon4:Phalcon框架
php74-php-componere:在运行时编写PHP类
php74-php-litespeed:LiteSpeed Web服务器PHP支持
php74-php-maxminddb:MaxMind DB Reader扩展
php74-php-pdo-dblib:x86_64: PDO驱动程序,用于Microsoft SQL Server和Sybase数据库
php74-php-pecl-amqp:与任何AMQP兼容的服务器通信
php74-php-pecl-apcu:APC用户缓存
php74-php-pecl-apfd:总是填充表单数据
php74-php-pecl-fann:用于FANN库的包装器
php74-php-pecl-grpc:x86_64:通用RPC框架
php74-php-pecl-http:扩展的HTTP支持
php74-php-pecl-krb5:Kerberos验证扩展
php74-php-pecl-pcov:x86_64:代码覆盖驱动程序
php74-php-pecl-2:x86_64: libssh2库的绑定
php74-php-pecl-sync:已命名和未命名同步对象
php74-php-pecl-uopz:x86_64: Zend的用户操作
php74-php-pecl-uuid:通用唯一标识符扩展对于PHP
php74-php-pecl-vips:x86_64:与libvip接口的PHP扩展
php74-php-pecl-wddx:Web分布式数据交换
php74-php-pecl-yaml:x86_64: yaml的PHP绑定
php74-php-phpiredis:x86_64: Redis的客户端扩展名
php74-php-smbclient:libsmbclient的PHP包装
php74-php-wkhtmltox:HTML转换器
php74-php-pecl-cmark:CommonMark扩展名
php74-php-pecl-dbase:dBase数据库文件访问函数
php74-php-pecl-druid:一个PHP的德鲁伊驱动
php74-php-pecl-event:提供libevent库的接口
php74-php-pecl-geoip:将IP地址映射到的扩展名地理位置
php74-php-pecl-gnupg:x86_64: gpgme库的包装
php74-php-pecl-mysql:MySQL数据库访问函数
php74-php-pecl-oauth:PHP OAuth消费者扩展
php74-php-pecl-parle:x86_64:解析和词法分析
php74-php-pecl-raphf:资源和持久句柄工厂
php74-php-pecl-solr2:Apache Solr的API定向对象
php74-php-pecl-stats:用于统计计算的例程
php74-php-pecl-stomp:Stomp客户端扩展
php74-php-pecl-taint:x86_64: XSS代码嗅探器
php74-php-pecl-xattr:扩展属性
php74-php-pecl-xdiff:文件差异/补丁
php74-php-pecl-xxtea:XXTEA加密算法扩展PHP
php74-php-libvirt-doc:noarch: php-libvirt文件
php74-php-pecl-base58:用base58编码和解码数据
php74-php-pecl-bitset:位集库
php74-php-pecl-crypto:OpenSSL密码库的包装器
php74-php-pecl-gender:x86_64:性别扩展
php74-php-pecl-hprose:用于PHP的h散文
php74-php-pecl-hrtime:x86_64:高分辨率定时
php74-php-pecl-mcrypt:x86_64: libmcrypt库的绑定
php74-php-pecl-pdflib:生成PDF文件的包
php74-php-pecl-propro:属性代理
php74-php-pecl-radius:Radius客户端库
php74-php-pecl-redis4:的扩展名 Redis键值存储
php74-php-pecl-redis5:的扩展名 Redis键值存储
php74-php-pecl-scrypt:Scrypt散列函数
php74-php-pecl-sphinx:Sphinx SQL全文的PECL扩展搜索引擎
php74-php-pecl-ssdeep:libfuzzy库的包装器
php74-php-pecl-trader:为贸易商提供技术分析
php74-php-pecl-xdebug:用于调试PHP脚本的PECL包
php74-php-pecl-xhprof:x86_64: XHProf的PHP扩展,层次结构分析器
php74-php-pecl-yaconf:x86_64:另一个配置容器
php74-php-pecl-apcu-bc:APCu向后兼容模块
php74-php-pecl-decimal:任意精度浮点小数
php74-php-pecl-gearman:PHP包装器到libgearman
php74-php-pecl-gmagick:的包装器GraphicsMagick库
php74-php-pecl-imagick:x86_64:用于创建和修改映像的扩展使用ImageMagick
php74-php-pecl-inotify:x86_64: Inotify
php74-php-pecl-leveldb:LevelDB PHP绑定
php74-php-pecl-memprof:x86_64:内存使用分析器
php74-php-pecl-mongodb:x86_64:用于PHP的MongoDB驱动程序
php74-php-pecl-msgpack:用于与MessagePack通信的API序列化
php74-php-pecl-rdkafka:基于librdkafka的Kafka客户端
php74-php-pecl-rpminfo:x86_64: RPM信息
php74-php-pecl-runkit7:为了这些你…不应该…无论如何我一直在做……但是肯定做的!
php74-php-pecl-seaslog:一个有效、快速、稳定的日志
php74-php-pecl-selinux:用于PHP脚本的SELinux绑定语言
php74-php-pecl-swoole4:PHP的异步并发分布式网络框架
php74-php-pecl-timecop:x86_64:时间旅行和冻结扩展
php74-php-pecl-varnish:Varnish缓存绑定
php74-php-pecl-xmldiff:x86_64: XML差异和合并
php74-php-pecl-igbinary:x86_64:替代标准PHP序列化器
php74-php-pecl-memcache:x86_64:使用Memcached的扩展缓存守护进程
php74-php-pecl-mogilefs:要与之通信的PHP客户端库 MogileFS存储
php74-php-pecl-mustache:Mustache模板语言
php74-php-pecl-protobuf:序列化结构化的机制数据
php74-php-pecl-rdkafka4:基于librdkafka的Kafka客户端
php74-php-pecl-scoutapm:本地扩展组件 ScoutAPM的PHP代理
php74-php-pecl-translit:将非拉丁字符音译设置为拉丁文
php74-php-snuffleupagus:x86_64: PHP的安全模块
php74-php-zephir-parser:x86_64: Zephir解析器扩展
php74-php-pecl-cassandra:用于Apache的DataStax PHP驱动程序卡桑德拉
php74-php-pecl-json-post:JSON POST处理程序
php74-php-pecl-mailparse:用于解析和的PHP PECL包处理电子邮件消息
php74-php-pecl-memcached:x86_64:使用Memcached的扩展缓存守护进程
php74-php-pecl-mosquitto:libmosquito - to的扩展
php74-php-pecl-seasclick:一个Yandex ClickHouse客户端驱动
php74-php-pecl-xlswriter:一个高效、快速的xlsx文件出口扩展
php74-php-horde-horde-lz4:Horde LZ4压缩扩展
php74-php-pecl-apcu-devel:APCu开发人员文件(头文件)
php74-php-pecl-couchbase2:Couchbase服务器PHP扩展
php74-php-pecl-geospatial:PHP扩展来处理公共地理空间功能
php74-php-pecl-handlebars:Handlebars模板语言
php74-php-pecl-http-devel:x86_64:扩展HTTP支持开发人员文件(头)
php74-php-pecl-krb5-devel:Kerberos扩展开发人员文件(头)
php74-php-pecl-luasandbox:带有限制和安全的Lua解释器环境
php74-php-pecl-opencensus:一个stats集合和分布式跟踪框架
php74-php-pecl-skywalking:x86_64: Apache的PHP工具代理人行天桥
php74-php-pecl-ahocorasick:有效的Aho-Corasick字符串模式匹配算法
php74-php-pecl-ip2location:获取an的地理位置信息IP地址
php74-php-pecl-http-message:x86_64: PSR-7 HTTP消息实现
php74-php-pecl-datadog-trace:APM和分布式跟踪PHP
php74-php-pecl-hdr-histogram:x86_64: C语言的PHP扩展包装hdrhistogram API
php74-php-pecl-imagick-devel:imagick扩展开发人员文件(头)
php74-php-pecl-msgpack-devel:MessagePack开发人员文件(头)
php74-php-pecl-mysql-xdevapi:MySQL数据库访问函数
php74-php-pecl-mysqlnd-azure:x86_64: mysqlnd的重定向插件
php74-php-pecl-igbinary-devel:Igbinary开发人员文件(头)
php74-php-pecl-uploadprogress:x86_64:跟踪进度的扩展文件上传
下面安装php74,选择好需要的扩展,一次性安装,后期需要安装扩展的时候只需要dnf -y install你需要的扩展名称就可以了。

1
dnf -y install php74-php php74-php-fpm php74-php-cli php74-php-bcmath php74-php-gd php74-php-json php74-php-mbstring php74-php-mcrypt php74-php-mysqlnd php74-php-opcache php74-php-pdo php74-php-pecl-crypto php74-php-pecl-mcrypt php74-php-pecl-geoip php74-php-pecl-swoole php74-php-recode php74-php-snmp php74-php-soap php74-php-xml php74-unit-php php74-php-devel php74-php-pear php74-php-ldap php74-php-common php74-php-intl php74-php-pecl-apcu php74-php-json php74-php-zip

PHP74已经好了,dnf安装的优点就是方便快捷高速,dnf安装的和我们手动安装的php的安装路径是完全不一样的。
刚开始使用dnf还有点懵,对于一个初学者来说,有点丈二和尚摸不着头脑。不怕,一点一点来。
看一下PHP74的运行状态

1
systemctl status php74-php-fpm

查找yum安装文件的路径:
安装好PHP得知道安装在哪里了,去哪里更改配置文件。先查找安装包,再查看安装包的位置,例如我们安装了php-7.4.4-1.el7.remi.x86_64安装包。

1
2
rpm -qa|grep php
rpm -ql php74-php-7.4.4-1.el8.remi.x86_64

centos8使用yum/dnf安装LNMP php+mysql+nginx环境配置详解
现在已经知道php的安装位置了。修改配置文件的操作就简单多了。
下面查看一下php已经安装的扩展,如果缺少什么扩展可以使用dnf命令安装,比起手动安装扩展要方便快捷的多!

1
php74 --modules

设置一下php74的开机启动

1
systemctl enable php74-php-fpm

DNF安装软件,都是使用systemctl命令来管理的。现在可以将已安装的软件包更新为最新的可用版本

1
dnf upgrade

创建一个PHP74的链接

1
ln -s /opt/remi/php74/root/usr/bin/php /usr/bin/php

最后有一些配置文件需要修改一下。修改一下php.ini文件

1
vi /etc/opt/remi/php74/php.ini

将内存使用增加到512M
memory_limit = 128M
文件上传大小,默认值太小,建议修改1024M
upload_max_filesize = 2M
打印错误
display_errors = on
表单最大值,建议128M
post_max_size = 8M
你运行的不管是nginx还是apache,都需要修改一下PHP的用户组

1
vi /etc/opt/remi/php74/php-fpm.d/www.conf

将user和group都修改成www
www是安装php时创建的用户组和用户名称。
注意:检查listen,将listen改成listen = 127.0.0.1:9000否则nginx里用127.0.0.1:9000无法访问php,或者在nginx里将127.0.0.1:9000的位置改成listen = 后面的内容。
修改单个请求的超时时间,去掉前面的分号。
request_terminate_timeout=600
将下面的注解去掉。
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
添加环境变量

1
vim /etc/profile

添加到最后

1
2
PATH=$PATH:/opt/remi/php74/root/usr/bin/
export PATH

更新环境变量

1
source /etc/profile

退出保存,重新启动php74,到这里php74已经安装配置完毕了!

1
systemctl reload php74-php-fpm

NGINX如果不支持PHP访问,检查一下9000端口是否打开。

1
netstat -lntp

php74-php-fpm systemctl 操作台相关命令:
启动PHP

1
systemctl start php74-php-fpm

停止

1
systemctl stop php74-php-fpm

重启

1
systemctl restart php74-php-fpm

重启使修改的配置生效

1
systemctl reload php74-php-fpm

设置开机启动

1
systemctl enable php74-php-fpm

PHP74当前状态

1
systemctl status php74-php-fpm

如果想卸载所有使用dnf安装的php,可以执行卸载命令

1
dnf remove php74-php*

在CentOS 8上永久禁用SELinux

1
vi /etc/selinux/config

将SELinux属性设置为Disable后重新启动服务器。

Centos8使用yum/dnf安装nginx:
安装nginx相对简单的多,安装后查看一下版本,是1.16.1,在yum源上的软件包相对来说都是比较稳定的包。有时候版本会略低一点,这个很正常。安装后设置开启启动。

1
2
3
dnf install nginx
systemctl enable nginx
nginx -v

手动安装nginx的目录一般都是/usr/local/nginx,但使用yum/dnf安装的目录跟手动安装的不太一样,下面是使用yum/dnf安装nginx的一些对应目录。
1.Nginx主配置文件:

1
/etc/nginx/nginx.conf

2.nginx执行文件目录:

1
/usr/sbin/nginx

3.nginx首页html网页路劲:

1
/usr/share/nginx/html

4.代理目录:

1
/var/cache/nginx/proxy_temp

5.Nginx的缓存目录:

1
/var/cache/nginx/fastcgi_temp

6.scgi目录:

1
/var/cache/nginx/scgi_temp

7.uwsgi目录:

1
/var/cache/nginx/uwsgi_temp

8.Nginx的日志目录:

1
/var/log/nginx

安装完毕后使用nginx -t命令测试安装是否正确。正确会返回下面的内容。
centos8使用yum/dnf安装LNMP php+mysql+nginx环境配置详解
修改配置文件nginx.

1
vi /etc/nginx/nginx.conf

将user nginx;修改成user www www;
worker_connections 1024;数值改成2048
删除server模块下面包含的内容,在/etc/nginx/.d/*.conf里面新建server模块。
一个简单的nginx.conf文件的实例,使用的http没有启用https的ssl功能。仅供参考:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
* Official English Documentation: http://nginx.org/en/docs/
* Official Russian Documentation: http://nginx.org/ru/docs/
user www www;
worker_processes 1;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {
use epoll;
worker_connections 51200;
multi_accept off;
accept_mutex off;
}
http {
access_log /var/log/nginx/access.log main;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 2048m;
sendfile on;
sendfile_max_chunk 512k;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 300;
types_hash_max_size 2048;
client_body_timeout 120;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
include /etc/nginx/mime.types;
default_type application/octet-stream;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 6;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;

include /etc/nginx/conf.d/*.conf;
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
server_name _;
root /usr/share/nginx/html;
#
ssl_certificate "/etc/pki/nginx/server.crt";
ssl_certificate_key "/etc/pki/nginx/private/server.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
#
include /etc/nginx/default.d/*.conf;
#
location / {
}
#
error_page 404 /404.html;
location = /40x.html {
}
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
}

CD进入到cd /etc/nginx/.d/目录下,VI新建cloud.conf文件。

1
2
cd /etc/nginx/conf.d/
vi cloud.conf

在conf.d/*.conf下面新建的conf文件,只需要建立server模块就可以了,这个是通过include插入到nginx.conf中的server模块。
cloud.conf文件实例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
server {
listen 80;
server_name uzbox.com;
client_max_body_size 2048M;
fastcgi_buffers 64 4K;
charset utf-8;
root /var/www;
add_header Referrer-Policy "no-referrer" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Download-Options "noopen" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Permitted-Cross-Domain-Policies "none" always;
add_header X-Robots-Tag "none" always;
add_header X-XSS-Protection "1; mode=block" always;
fastcgi_hide_header X-Powered-By;
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location = /.well-known/carddav {
return 301 $scheme://$host:$server_port/remote.php/dav;
}
location = /.well-known/caldav {
return 301 $scheme://$host:$server_port/remote.php/dav;
}
gzip on;
gzip_vary on;
gzip_comp_level 4;
gzip_min_length 256;
gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;
location ~ ^\/(?:build|tests|config|lib|3rdparty|templates|data)\/ {
deny all;
}
location ~ ^\/(?:.|autotest|occ|issue|indie|db_|console) {
deny all;
}
location ~ ^\/(?:index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+).php(?:$|\/) {
fastcgi_split_path_info ^(.+?.php)(\/.*|)$;
set $path_info $fastcgi_path_info;
try_files $fastcgi_script_name =404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $path_info;
#fastcgi_param HTTPS on;
Avoid sending the security headers twice
fastcgi_param modHeadersAvailable true;
Enable pretty urls
fastcgi_param front_controller_active true;
fastcgi_pass 127.0.0.1:9000;
fastcgi_intercept_errors on;
fastcgi_request_buffering off;
}
location ~ ^\/(?:updater|oc[ms]-provider)(?:$|\/) {
try_files $uri/ =404;
index index.php;
}
location ~ .(?:css|js|woff2?|svg|gif|map)$ {
try_files $uri /index.php$request_uri;
add_header Cache-Control "public, max-age=15778463";
add_header Referrer-Policy "no-referrer" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Download-Options "noopen" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Permitted-Cross-Domain-Policies "none" always;
add_header X-Robots-Tag "none" always;
add_header X-XSS-Protection "1; mode=block" always;
access_log off;
}
location ~ .(?:png|html|ttf|ico|jpg|jpeg|bcmap)$ {
try_files $uri /index.php$request_uri;
Optional: Don't log access to other assets
access_log off;
}
}

在上面代码中有一句include /etc/nginx/default.d/*.conf;,这个是设置默认的访问文件,之前都是直接设置,dnf安装的就变成了统一插入了。
需要在default.d文件夹内新建一个.conf文件,例如default.,实例代码如下:

1
index index.php index.html;

给上面实例代码中的访问目录,/var/www文件夹添加运行权限。

1
chown www:www -R /var/www

Nginx的操作命令:
启动:systemctl start nginx
停止:systemctl stop nginx
重启(不停止nginx,使修改配置生效):systemctl reload nginx
重启:systemctl restart nginx
设置开机启动:systemctl enable nginx
禁用开机启动:systemctl disable nginx
查看服务状态:systemctl status nginx
Centos8使用dnf安装mysql
首先检查一下系统里有没有安装过mysql。

1
rpm -qa |grep -i mysql

OK系统是赶紧的,现在开始铠装mysql。先查找一下数据源里面都有什么版本,只找了8.0.17版本的,如果安装更低的版本需要添加其它的数据源。这里默认安装mysql8.0
安装之后启动一下mysql,然后设置一下开机启动。最后查看一下安装的mysql8.0的状态。

1
2
3
4
5
6
dnf list mysql*
dnf -y install mysql-server
systemctl start mysqld
systemctl enable mysqld
systemctl status mysqld
mysqladmin --version

ok一切正常!接下来配置mysql服务器:
mysql8.0默认root密码为空,输入登录命令,输入密码的地方password:直接回车进入mysql。

1
mysql -u root -p

登录到mysql后在mysql>后面输入:

1
ALTER USER 'root'@'localhost' IDENTIFIED BY 'ABcd789_00%^&';

修改root用户的管理密码,mysql8.0密码要求,大写字母+小写字母+数字+特殊字符并且大于8位。
如果屏幕提示“Query OK, 0 rows affected (0.00 sec)”就表示修改成功了。
开启mysql的远程连接,确认防火墙关闭或者打开3306端口,关闭selinux!

1
GRANT ALL PRIVILEGES ON . TO root@"%" IDENTIFIED BY 'ABcd789_00%^&' WITH GRANT OPTION;

添加用户,使用户可以远程登陆:
mysql8.0中取消了创建并授权用户的语法,具体语法如下:
创造一个可以远程登陆的用户:

1
CREATE USER 'user'@'%' IDENTIFIED BY 'password'

更新root用户使之能远程登陆:

1
UPDATE USER SET host='%' WHERE user='root';

创造了用户后得授权:

1
GRANT ALL PRIVILEGES ON . TO 'user'@'%';

配置完毕后输入quit退出mysql。
mysql的文件位置

1
2
3
4
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysql/mysqld.log
pid-file=/run/mysqld/mysqld.pid

启动:systemctl start mysqld
停止:systemctl stop mysqld
重启:systemctl restart mysqld
设置开机启动:systemctl enable mysqld
查看MySQL Server状态:systemctl status mysqld
以上安装就全部完毕了!php+mysql+nginx的环境已经搭建完毕。

订阅
提醒
guest
0 评论
内联反馈
查看所有评论