精品软件与实用教程
谷歌云服务器配置 在 Centos8 下安装 LNMP 环境 PHP+Mysql+Nginx 安装详解
谷歌云服务器配置 工欲善其事,必先利其器,磨刀不误砍柴功,先把服务器LNMP环境搭建好,再建立web网站,没有一个好的PHP环境,后面麻烦会更多。之前讲过手动安装部署php环境,今天说一下在不使用第三方面板的情况下,在谷歌云服务器上使用 dnf 命令,手动安装PHP+Mysql+Nginx环境的配置方法。
本教程适用于:Centos7/CentOS Stream 8/CentOS Stream 9/ Red Hat Enterprise Linux (RHEL)
谷歌云服务器配置
Centos8系统安装在Google的免费云服务器上,本文测试的机器类型是e2-medium(2 个 vCPU,4 GB 内存)。
由于CentOS 8 宣布21年底停止支持,升级至CentOS Stream,Google Cloud 将之前的 Centos8 系统更新为CentOS Stream 8和CentOS Stream 9系统,在操作方面没有太大改动。添加一下软件仓库源即可。
下面以CentOS Stream 8系统为例,进行谷歌云服务器配置:
Google Cloud 谷歌云申请以及虚拟机配置方法请浏览:免费申请谷歌云
建立好VM服务器后,连接上SSH,下面开始操作。安装好Centos8系统后的第一件事情就是修改系统的root密码。

使用谷歌云平台上自带的网页SSH连接服务器,登陆后修改SSH连接方式。
谷歌云服务器配置 修改服务器root密码
使用 sudo -i 或者 sudo su 命令切换到超级管理root用户,切换到root超级管理员模式后输入 passwd 命令修改密码。
sudo -i passwd
输入你要修改的密码,然后二次确认密码,密码确认完毕后回车设置完成。使用 cd\ 命令切换到root目录下。
使用 VI 命令修改SSH的配置文件。
vi /etc/ssh/sshd_config

如果你想修改SSH远程连接的端口,将 Port 前面的#号去掉,然后再后面修改你想修改的端口号。
在sshd_config中修改下面的内容:
- PermitRootLogin 默认值为no,需要改为yes后才可以使用SSH远程访问。
- PasswordAuthentication 默认值为no,改为yes开启密码登陆。
- ClientAliveInterval 默认值420,修改为3600,这个是客户端连接超时的时间。
Port 10086 PermitRootLogin yes PasswordAuthentication yes ClientAliveInterval 3600
修改完毕后,使用:wq命令退出VI编辑。
以上是使用谷歌云服务器开启SSH登录的方法。更改ssh的端口后,需要关闭SElinux,否则无法登录。
永久关闭SElinux
配置谷歌云服务器,首先需要永久关闭SElinux,虽然说SElinux是用来增强Linux安全的,但是设置起来非常麻烦。建议永久关闭。
vi /etc/selinux/config
找到SELINUX=enforcing,按i进入编辑模式,将参数修改为SELINUX=disabled
修改完成后,按下键盘Esc键,执行命令:wq,保存并退出文件。之后reboot重新启动服务器。SElinux已经成功关闭了,下一步就是修改SSH的端口号,网上自动扫描肉鸡的很多,一旦中招,后果不堪设想,谷歌云是按流量收费的,虽然送了300美元,如果被入侵,一天带宽跑个几千块没有问题。所以说还是先把SSH的远程端口更改一下!
注意:有些系统是默认开启防火墙的,需要查看一下防火墙状态
systemctl status firewalld
如果防火墙是开启状态,需要在root用户权限下,关闭firewalld
#首先需要停止防火墙 systemctl stop firewalld #防火墙停止后,进行永久关闭 systemctl disable firewalld
后期进入到生产环境时,防火墙可以在谷歌云的平台上设置防火墙。
重新启动服务器!
reboot
谷歌云服务器配置 CentOS 7 / CentOS Stream 8/9 安装软件源epel和remi
接下来需要进一步安装centos8系统所需要的软件,下面开始更新系统,以及安装系统软件包所需要的源。epel 和 remi 是centos8不可缺少的软件仓库。
使用RPM方式安装软件源:
CentOS 7 安装软件仓库:
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
CentOS Stream 8 安装软件仓库:
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
CentOS Stream 9 安装软件仓库:
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-9.rpm
使用DNF方式安装软件源:
DNF是下一代的yum软件包管理器(Yum的派生)。dnf和yum的语法类似,有很多相似之处,默认情况下,DNF已安装在RHEL 8和CentOS Stream 8系统上。
CentOS 7 安装软件仓库:
CentOS7需要先安装dnf命令。
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm dnf install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
CentOS Stream 8 安装软件仓库:
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
CentOS Stream 9 安装软件仓库:
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
软件源安装完毕后,安装 dnf-utils
dnf-utils
在 DNF 之上作为 CLI 垫片实现的经典 YUM 实用程序。这些 shim 的主要目的是确保与 yum-3 的向后兼容性。
安装之后使用 dnf update
命令 更新系统内软件至最新版本。
dnf install dnf-utils dnf update
查看一下系统上启用的数据源,使用 dnf repolist all 命令可以查看全部的数据源,包括未启用的数据源。
dnf repolist all

使用 dnf repolist 命令,可以查看当前正在使用的软件源。
dnf repolist
使用 dnf repolist disabled 命令查看系统禁用的数据源。
dnf repolist disabled
软件源安装过后,需要设置优化一下安装的软件包源。使用 makecache 命令生成源缓存。
dnf makecache
安装启用DNF的自动更新:
dnf install dnf-automatic systemctl start dnf-automatic.timer
安装“开发工具”软件包组:
dnf group install 'Development Tools' -y
使用DNF更新系统软件包:
dnf -y update
谷歌云服务器配置SWAP虚拟内存
Google云默认安装操作系统是没有分配swap空间的,需要手动添加。如果操作系统没有配置swapfile(分配swap空间)会导致内存负载后出错。下面教你如何添加centos8操作系统的swap空间!
使用 free -m 命令查看内存配置,如果Swap后面都是0的话则需要添加swap空间。
free -m
使用六步创建Swap虚拟内存:
- 创建一个预分配指定大小空间的文件;
- 以用ls命令检查文件大小;
- 更改swap文件的权限;
- 格式化swap文件;
- 启用swap交换文件;
- 修改fstab文件来实现重启后自动生效swap。
创建一个8G的SWAP分区,如果想加大或缩小SWAP虚拟内存,请修改count=后面的数值。
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
使用 VI 命令在 fstab 文件末尾加入下面内容:
/swapfile swap swap sw 0 0
如果你不想使用 VI 命令,也可以直接使用 echo 命令设置swap开机启动。
echo '/swapfile swap swap sw 0 0' | sudo tee -a /etc/fstab
服务器时间同步
安装服务器时间同步工具,服务端与客户端的时间同步非常重要。
查看当前时区,如果时区是UTC,需要修改服务器时区。
timedatectl status|grep 'Time zone' #查看服务器硬件时间 hwclock #通过hwclock -w 将操作系统时间同步到硬件时间 hwclock -w
修改服务器时区
timedatectl set-timezone Asia/Shanghai timedatectl set-local-rtc 1 #使用date命令查看一下当前服务器时间。 date
将服务器时区修改为Asia/Shanghai,之后可以使用 timedatectl 命令查询时区。
在 CentOS 8 中默认不再支持 ntp 软件包,时间同步将由 chrony 来实现。
默认centos8安装系统后已经存在chrony的软件包了,可以通过 rpm -q chrony 确认是否存在,如果不存在使用dnf安装即可:dnf install chrony
vi /etc/chrony.conf
server ntp.aliyun.com iburst
将国内阿里云的时间同步服务器添加在第一行保存即可。
设置chrony开机运行
systemctl enable chronyd systemctl start chronyd
新增用户和用户组
在配置Centos8之前,需要新增用户组和用户,用于web服务访问相关的权限使用。
groupadd www useradd -g www www
用户和用户组配置完毕后,Centos8的基本环境已经配置的差不多了,下面开始安装web相关服务。
Centos8配置完毕后,安装Nginx+PHP8+Mysql,安装的顺序一定不要搞错,先安装Nginx,之后再安装PHP8和Mysql。Nginx安装完毕后,无需配置,安装好PHP8后再配置Nginx。
开启CentOS自带的TCP BBR加速
系统自带内核高于4.9 则默认已包含 BBR
1、使用 root 权限运行下面代码,内核版本高于 4.9 就行。
uname -r
2、开启BBR
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
3、生效更改
sysctl -p
4、执行下面命令,如果结果中带有bbr,则证明你的内核已开启bbr。
sysctl net.ipv4.tcp_available_congestion_control
注:也可以执行下面命令,如果结果中有bbr,也可以证明你的内核已开启bbr。
lsmod | grep bbr
谷歌云服务器配置 安装Nginx
安装nginx相对简单的多,安装后查看一下版本,是1.14.1,使用DNF的软件包相对来说都是比较稳定的包。有时候版本会略低一点,对于centos官方源来说,这个很正常。
在安装Nginx之前,先安装Nginx所需的依赖包。
dnf -y install zlib zlib-devel pcre pcre-devel openssl openssl-devel gd-devel make gcc gcc-c++
- gcc linux编译器
- pcre是一个perl库,包括perl兼容的正则表达式库,nginx的http模块使用pcre来解析正则表达式
- zlib库提供了很多种压缩和解压缩方式nginx使用zlib对http包的内容进行gzip
- openssl是web安全通信的基石,也就是https相关的依赖
安装nginx:
Nginx所需的依赖包安装好之后,输入下面命令,安装nginx。
dnf install nginx nginx -v
安装后设置开机启动:
systemctl enable nginx
启动Nginx,启动之后查看以下Nginx的当前状态:
systemctl start nginx systemctl status nginx
查看当前80端口状态:
netstat -na | grep 80
检查及设置nginx默认端口是否开启:
firewall-cmd --query-port=80/tcp
如果返回值是no,则80端口未开放,需要设置防火墙,放行80端口
开启80端口:
firewall-cmd --add-port=80/tcp --permanent firewall-cmd --reload
在浏览器输入服务器的IP地址,查看一下是否能访问nginx的欢迎页面。

Nginx的安装已经成功了,接下来查看一下安装目录。手动安装Nginx目录一般都是/usr/local/nginx,但使用yum/dnf安装的目录跟手动安装的不太一样,下面是使用yum/dnf安装nginx的一些对应目录:
- Nginx主配置文件:/etc/nginx/nginx.conf
- Nginx执行文件目录:/usr/sbin/nginx
- Nginx首页html网页路劲:/usr/share/nginx/html
- 代理目录:/var/cache/nginx/proxy_temp
- Nginx的缓存目录:/var/cache/nginx/fastcgi_temp
- scgi目录:/var/cache/nginx/scgi_temp
- uwsgi目录:/var/cache/nginx/uwsgi_temp
- Nginx的日志目录:/var/log/nginx

安装完毕后使用 nginx -t 命令测试安装是否正确。正确会返回下面的内容。
CentOS8的默认软件仓库中内置的nginx版本是1.14.1,最近漏扫提示需要升级至1.17.7以上版本。如果你想安装更高的nginx版本,请查看:Centos8如何安装最新版本的Nginx
谷歌云服务器配置 安装PHP8
如果使用 dnf -y install php 命令默认安装php的话,默认安装的版本很低,目前PHP版本是PHP8.1,下面看一下如何安装PHP8.1
首先查询一下系统中,安装PHP8.1的软件源:
dnf list php

Centos8默认仓库里的php版本是7.2.24,这个版本太低了,下一步切换到remi源,查找php8.1版本。
获取可用的PHP列表:
dnf module list php

下一步需要启用,remi仓库的PHP模块,先重置一下PHP模块。
重置PHP数据源模块:
dnf module reset php

接下来,设置启用新的PHP数据源模块,我们需要安装php8.1,就启用remi-8.1。
dnf module enable php:remi-8.1

remi-8.1模块已经启用完毕了,下面进行安装php8.1

输入安装命令进行安装:
dnf install php

php安装成功后,额外安装一些常用的php扩展软件包:
dnf install -y php-{mysqlnd,xml,xmlrpc,curl,gd,imagick,mbstring,opcache,soap,zip}
php8.0的扩展安装
dnf install -y php-{mysqlnd,pecl-imagick,pecl-imagick-devel,gd,intl,cli,mbstring,curl,php-pecl-zip}
使用 dnf search 命令查询一下PHP8.1都有哪些扩展软件包:
dnf search php81*
查询之后,我们发现php81相关的软件包太多了,这些都是干什么用的?哪些应该装哪些不应该装呢?下面是php8.1扩展安装包的详细介绍。
PHP8.1已经好了,接下来查看一下都安装了哪些扩展软件包。
rpm -qa|grep php

也可以使用 php --modules 命令来查询已经安装的PHP扩展。
php --modules
如果还需要安装PHP扩展,只需要使用 dnf -y install 命令加上你需要安装的扩展名称。
例如安装PHP的mysqlnd扩展:
dnf install -y php-mysqlnd

以上都安装完毕后,接下来,设置php的开机启动。
systemctl enable php-fpm
使用 systemctl 命令来管理方便快捷。如果有新的PHP软件包更新,可以使用下面命令,升级最新的可用版本
dnf upgrade
好了,到这里PHP8.1的安装就正式完成了,启动PHP服务,让PHP开始工作。
systemctl enable php-fpm --now
systemctl status php-fpm
状态灯是绿色的,就表示PHP已经正常工作了,下面有一些PHP的配置文件需要修改。
PHP8配置
修改php.ini文件
php.ini文件,是php的核心配置文件,谨慎修改!
查找php.ini文件位置

php -info | grep php.ini
编辑 php.ini 文件
使用 VI 命令编辑 php.ini 文件,或者使用SFTP登陆服务器,使用记事本编辑修改 php.ini 文件。SFTP客户端推荐使用Xftp。
vi /etc/php.ini
将文件内的变量修改成下面的数值。
#打印PHP错误: display_errors = on #将内存使用增加到256M: memory_limit = 256M #文件上传大小,默认值太小,建议修改1G大小,也就是1024M: upload_max_filesize = 1024M #表单最大值,建议48M: post_max_size = 48M #每个脚本的最大执行时间,以秒为单位: max_execution_time=600 #可以接受多少个 GET/POST/COOKIE 输入变量: max_input_vars = 3000 #每个脚本花在解析请求数据上的最长时间: max_input_time = 1000
修改完毕后,保存退出,接下来修改php的www.conf文件。
修改 http://www.conf 文件
http://www.conf是php-fpm的进程服务的配置文件。
修改用户组和用户名称,设置 http://www.conf 文件的用户组权限。将 http://www.conf 的访问权限设置 -R,用户与用户组设置成 nginx
chown nginx:nginx -R /etc/php-fpm.d/www.conf
编辑 http://www.conf 文件,修改用户与用户组变量。
vi /etc/php-fpm.d/www.conf
将 http://www.conf 文件内的变量 user 和 group 都修改成 nginx。
修改完毕后,查看 listen 变量:
注意:变量 listen,默认的是 listen = /run/php-fpm/www.sock 如果你想在Nginx中使用 127.0.0.1:9000 访问PHP的话,那么需要将 listen 变量改成 listen = 127.0.0.1:9000 否则在Nginx中使用 127.0.0.1:9000 无法访问PHP。
接下来,修改请求超时时间数值,修改单个请求的超时时间,去掉前面的分号,将数值改成600。
request_terminate_timeout = 600
修改完毕后,:wq 保存文件退出,www.conf 文件修改完毕。
修改 session 权限
例如修改 /var/lib/php/session 的用户组以及权限。
cd /var/lib/php chown nginx:nginx ./session chmod -R 777 ./session
systemctl reload php-fpm
到这里php已经安装配置完毕了,重新启动php服务,或者 reboot 重新启动服务器。
注意:如果Nginx不支持PHP访问,检查一下listen的变量是否与Nginx设置一致,如果使用127.0.0.1:9000 方式访问,查看防火墙中9000端口是否打开。
netstat -lntp
PHP操作台命令
#启动PHP: systemctl start php-fpm #停止: systemctl stop php-fpm #重启: systemctl restart php-fpm #重启使修改的配置生效: systemctl reload php-fpm #设置开机启动: systemctl enable php-fpm #PHP当前状态: systemctl status php-fpm
卸载PHP
如果想卸载使用dnf安装的php服务,可以执行卸载命令:
注意:如果你是手工编译安装的php,remove 卸载命令无效,先卸载php主程序,然后再移除系统自带的php-common。
dnf remove php dnf remove -y php-common
禁用SELinux
在 CentOS 8 上永久禁用 SELinux
vi /etc/selinux/config
将 SELinux 属性设置为 Disabled 后重新启动服务器。
谷歌云服务器配置 配置Nginx
下面以nginx1.20.1版本为例:
编辑nginx.conf
如果想让web网站正常访问,需要编辑修改 Nginx 的配置文件 nginx.conf,nginx.conf 是 Nginx 的核心配置文件。使用 VI 命令编辑 /etc/nginx/nginx.conf。
vi /etc/nginx/nginx.conf
下面是一个简单的nginx.conf文件的实例,仅供参考:
user nginx; #配置用户或者组,默认为nobody nobody。 worker_processes auto; #允许生成的进程数,默认为1 pid /run/nginx.pid; #指定nginx进程运行文件存放地址 error_log /var/log/nginx/error.log error; #制定错误日志路径,级别。这个设置可以放入全局块,http块,server块,级别依次为:debug|info|notice|warn|error|crit|alert|emerg,级别越高,记录越少,一般设置error #加载动态模块。 include /usr/share/nginx/modules/*.conf; #工作模式及连接数上限-events全局设置 events { accept_mutex on; #设置网路连接序列化,防止惊群现象发生,默认为on multi_accept on; #设置一个进程是否同时接受多个网络连接,默认为off #use epoll; #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport worker_connections 4096; #单个work进程允许的最大连接数,默认为512 } #http服务器配置文件块 http { log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定义日志格式 access_log /var/log/nginx/access.log myFormat; #设置访问日志路径和格式。combined为日志格式的默认值。 rewrite_log on; #access_log off; #取消服务访问日志 sendfile on; #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。 sendfile_max_chunk 0; #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。 keepalive_timeout 1000; #连接超时时间,默认为75s,可以在http,server,location块。 client_max_body_size 1024m; types_hash_max_size 4096; tcp_nodelay on; tcp_nopush on; default_type application/octet-stream; #默认文件类型,默认为text/plain fastcgi_connect_timeout 3000; #fastcgi连接超时时间,默认60秒 fastcgi_send_timeout 3000; #nginx 进程向 fastcgi 进程发送请求过程的超时时间,默认值60秒 fastcgi_read_timeout 3000; #fastcgi 进程向 nginx 进程发送输出过程的超时时间,默认值60秒 gzip on; #gzip压缩开关,on开启Gzip压缩,默认 off 关闭 gzip_min_length 1k; # 启用gzip压缩的最小文件,小于设置值的文件将不会压缩 gzip_comp_level 9; # gzip 压缩级别,1-9,数字越大压缩的越好,也越占用CPU时间 gzip_buffers 4 16k; # 设置压缩所需要的缓冲区大小 gzip_http_version 1.1; # 设置gzip压缩针对的HTTP协议版本,没做负载的可以不用 gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png application/vnd.ms-fontobject font/ttf font/opentype font/x-woff image/svg+xml; # 进行压缩的文件类型。javascript有多种形式。其中的值可以在 mime.types 文件中找到。 gzip_vary on; # 是否在http header中添加Vary: Accept-Encoding,建议开启 gzip_disable "MSIE [1-6]\."; # 禁用IE 6 gzip gzip_proxied off; ssl_session_cache shared:le_nginx_SSL:10m; ssl_session_timeout 1440m; ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers off; ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384"; include /etc/nginx/mime.types; #文件扩展名与文件类型映射表。设定mime类型(邮件支持类型),类型由mime.types文件定义。 include /etc/nginx/conf.d/*.conf; # 从 /etc/nginx/conf.d 目录加载模块化配置文件。 }
连接FastCGI
如果你想使用PHP脚本来搭建web网站,还需要设置Nginx支持PHP。
下面介绍PHP服务连接模块,进入 /etc/nginx/default.d 目录,查看 php.conf 文件。此文件是安装PHP时候自动生成的文件无需改动,用于将 PHP 脚本传递给 FastCGI 服务器。
# pass the PHP scripts to FastCGI server # # See conf.d/php-fpm.conf for socket configuration # index index.php index.html index.htm; location ~ \.(php|phar)(/.*)?$ { fastcgi_split_path_info ^(.+\.(?:php|phar))(/.*)$; fastcgi_intercept_errors on; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_pass php-fpm; }
进入 /etc/nginx/conf.d 目录,目录中的 php-fpm.conf 文件无需更改, php-fpm.conf 是安装PHP8.1时自动生成,是php.conf的一部分,用于将 PHP 脚本传递给 FastCGI 服务器。
# PHP-FPM FastCGI server # network or unix domain socket configuration upstream php-fpm { server unix:/run/php-fpm/www.sock; }
在 /etc/nginx/conf.d 目录中新建 default.conf 文件,或者新建一个自定义的.conf文件。server{...}内是网站配置内容。
这只是一个测试用的例子,生产环境下的server配置要复杂的多。
server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name XXX.com; root /home/www; index index.php index.html index.htm; ssl_certificate "/etc/letsencrypt/live/***/fullchain.pem"; # ssl证书地址 ssl_certificate_key "/etc/letsencrypt/live***/privkey.pem"; # ssl证书地址 ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; #缓存有效期 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #加密算法 ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; #安全链接可选的加密协议 ssl_prefer_server_ciphers on; #使用服务器端的首选算法 # Config for 0-RTT in TLSv1.3 ssl_early_data on; ssl_stapling on; ssl_stapling_verify on; add_header Strict-Transport-Security "max-age=31536000"; include /etc/nginx/default.d/*.conf; # 从 /etc/nginx/default.d 加载默认服务器块的配置文件。 #伪静态页 location / { try_files $uri $uri/ /index.php?$args ; } #反向代理 location /update32/ { proxy_redirect off; proxy_read_timeout 1200s; proxy_pass http://127.0.0.1:20892; proxy_http_version 1.1; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $http_host; # Config for 0-RTT in TLSv1.3 proxy_set_header Early-Data $ssl_early_data; } }
添加web存放目录的访问权限:
chown nginx:nginx -R /home/www
配置完成之后,在/home/www 目录下,新建index.php文件,粘贴下面代码:
<?php phpinfo(); ?>
这是一个PHP的探针代码,将代码粘贴到index.php后,保存文件,然后root重新启动服务器。
访问Nginx官方PHP FastCGI 示例
Nginx中遇到的问题:
出现“nginx: [emerg] unknown directive " " in /etc/nginx/conf.d/”错误,是Windows中使用SFTP上传时的空格转换问题,在Linux下使用VI编辑,不会产生此问题。
卸载Nginx
如果想卸载所有使用dnf安装的nginx,可以执行卸载命令:
dnf remove nginx
Nginx操作台命令
启动:systemctl start nginx 停止:systemctl stop nginx 重启(不停止nginx,使修改配置生效):systemctl reload nginx 重启:systemctl restart nginx 设置开机启动:systemctl enable nginx 禁用开机启动:systemctl disable nginx 查看服务状态:systemctl status nginx
到这里Nginx的安装就告一段落了,下面开始安装MYSQL数据库服务。
谷歌云服务器配置 安装MySQL
Centos8使用dnf安装mysql,首先检查一下系统里有没有安装过mysql。
rpm -qa |grep -i mysql
如果服务器上之前没有安装MySQL,那么现在就开始安装。如果之前安装过MySQL,请使用remove命令卸载!
先查找一下数据源里面都有什么版本。
dnf list mysql*

安装MySQL8.0
Centos官方的软件源中只找了8.0.26版本的,如果想安装更高的版本,需要使用其它的数据源。
dnf -y install mysql-server

安装成功之后,启动 MySQL,然后设置开机启动 MySQL。
#启动MySQL systemctl start mysqld #设置开机启动 systemctl enable mysqld #查看MySQL安装版本 mysqladmin --version
最后查看一下已经安装的 MySQL8.0 状态。
systemctl status mysqld

OK,绿灯亮,一切正常!接下来配置 MySQL 服务器。
谷歌云服务器配置MySQL
运行 mysql_secure_installation 脚本,该脚本会执行一些与安全性相关的操作并设置MySQL根密码:
sudo mysql_secure_installation

VALIDATE PASSWORD COMPONENT 可用于测试密码并提高安全性。 它检查密码的强度并允许用户只设置那些密码
足够安全。 您想设置 VALIDATE PASSWORD 组件吗?
输入:Y ,回车进入该配置。

选择密码验证策略等级, 输入: 0 (low)
输入一个新的密码,密码要求大于8位,包含大写字母,小写字母数字以及特殊符号,之后再确认输入设置的密码。

确认是否继续使用提供的密码,输入:Y

默认情况下,MySQL 安装有一个匿名用户,允许任何人无需登录就可以登录 MySQL为他们创建的用户帐户。 这仅用于测试,并使安装更顺畅。你应该在进入生产之前删除它们环境。
是否移除匿名用户? 输入: Y

禁止使用root远程登陆MySQL 输入: N

默认情况下,MySQL 带有一个名为“test”的数据库,任何人都可以访问。 这也仅用于测试,并且应该在进入生产之前被移除环境。
移除MySQL自带的test测试数据库 输入:Y

重新加载权限表,将确保所有更改到目前为止所做的将立即生效。
重新载入权限表, 输入:Y
MySQL8.0默认已经是utf8mb4字符集,所以字符集不再修改。MySQL到这一步已经配置成功了!
配置mysql远程登陆
注意:如果需要设置root账户远程登陆,重复上一步骤中,再允许root远程登陆这一步,设置为Y。
接下来使用 mysql -u root -p 命令登录MySQL,将root用户的host字段设为'%',意为接受root所有IP地址的登录请求。
UPDATE USER SET host='%' WHERE user='root';
设置之后重启mysql服务:
systemctl restart mysqld
MySQL操作台命令
启动:systemctl start mysqld 停止:systemctl stop mysqld 重启:systemctl restart mysqld 设置开机启动:systemctl enable mysqld 禁用开机启动:systemctl disable mysqld 查看服务状态:systemctl status mysqld
到这里,就全部安装完毕!php+mysql+nginx 的Linux环境已经搭建成功了。
强烈推荐: 谷歌云服务器 是目前已知的真正的功能强大的 免费云服务器 可以满足大多网站的实际需求!