服务器升级至centos8的网站配置以及运行php与mysql的操作方法

发布时间:2021-09-26 16:04:47 作者:柒染
来源:亿速云 阅读:153

服务器升级至centos8的网站配置以及运行php与mysql的操作方法,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

linux centos8 安装php7 nginx1.4 mysql8 ,运行php网站,各个模块从零开始配置

CentOS7与centOS8的抉择

目前国内各大云服务器的默认centos 系统版本还是7,目前没有centos配套支持,国外云服务器厂商默认就是8,如vultr

centos8的性能提升,官网介绍的更清楚

安装centos8 min版本,在我的系统上查看,发现nginx默认是1.14

开发语言版本

数据库版本

而我的服务器msyql是msyql5.6 php是php5.6 ,我是选择重新来过一遍。

centos8 从零开始安装nginx mysql php 系统默认版本搭建php网站

centos8 安装nginx

centos8 安装php

centos8安装mysql

网站nginx selinux 文件权限配置

网站nginx配置

nginx基本配置,这里就不在多说了,查看《Nginx葵花宝典—草根站长配置Nginx运维百科全书》

像我这种小水管网站,需要注意的就是,nginx 限流

大致配置如下

    # 1M能存储16384个状态,rete的值必须为整数,
    # 如果限制两秒钟一个请求,可以设置成30r/m ,其中$binary_remote_addr有时需要根据自己已有的log_format变量配置进行替换
    limit_conn_zone $binary_remote_addr zone=perip:1m;
    limit_conn_zone $server_name zone=perserver:1m;
    #limit_req   zone=perip burst=10;
     # 限制客户端并发连接数量为20, allow only one connection per an IP address at a time(每次). ;
    #是限制每个IP只能发起20连接 (addr 要跟 limit_conn_zone 的变量对应)
    # 表明以ip为key,来限制每个ip访问lmit.html文件时候,最多只能有一个在线,否则其余的都要返回不可用。
    limit_conn perip 14;
    limit_conn perserver 10;
    limit_req_zone $binary_remote_addr zone=per_ip:1m rate=400r/s;
    limit_req_zone $server_name zone=per_server:10m rate=600r/s;
    limit_req zone=per_ip burst=300 nodelay;
    limit_req zone=per_server burst=500;

具体,推荐阅读《Nginx下limit_req模块burst参数超详细解析》

nginx配置目录结构如下

服务器升级至centos8的网站配置以及运行php与mysql的操作方法

这里把本站配置贴一下

nginx基本配置

nginx配置文件为HOCON,intellij编辑的,配置查看:《HOCON:nginx配置文件后缀conf是什么格式类型文件夹?intellij如何编辑》,其他编辑器应该也有相应插件。有个插件认识代码,编辑器起来应该舒服些。

# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /etc/nginx/modules/*.conf;

events {
    # essential for linux, optmized to serve many clients with each thread
      # Linux 关键配置,允许单个线程处理多个客户端请求。
      use epoll;
      # Determines how many clients will be served by each worker process.
      # (Max clients = worker_connections * worker_processes)
      # "Max clients" is also limited by the number of socket connections available on the system (~64k)
      # 配置单个 Nginx 单个进程可服务的客户端数量,(最大值客户端数 = 单进程连接数 * 进程数 )
      # 最大客户端数同时也受操作系统 socket 连接数的影响(最大 64K )
      worker_connections 51200;

      #用来配置nginx服务器是否可能多地接收客户端的连接请求,默认值为off
      multi_accept on;
}
# http config
include /etc/nginx/http/default.conf;
#include /etc/nginx/http/http_web.conf;
nginx http配置
http {
################################ logs  #######################
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    # Buffer log writes to speed up IO, or disable them altogether
    # 将日志写入高速 IO 存储设备,或者直接关闭日志。
    # access_log /var/log/nginx/access.log main buffer=16k;
    access_log off;
    # only log critical errors 只记录 critical 级别的错误日志
    error_log /var/log/nginx/error.log crit;

################################  file  #######################
    # types
    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    charset UTF-8;
    # 只允许get post 请求
    add_header 'Access-Control-Allow-Methods' 'GET, POST';
    #隐藏掉nginx的版本号
    server_tokens off;
################################ 开启gzip压缩 相关配置 #######################
    gzip on;
    gzip_disable   "MSIE [1-6]\.";
    gzip_min_length  1k;
    gzip_buffers     4 16k;
    gzip_http_version 1.1;
    gzip_comp_level 4;
    gzip_types     text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss;
    gzip_vary on;
    gzip_proxied   expired no-cache no-store private auth;

    #  请求设置优化配置 #######################
    tcp_nodelay         on;
    # sendfile() 不但能减少切换次数而且还能减少拷贝次数。
    sendfile            on;
    # 使缓冲区中的数据立即发送出去
    tcp_nopush          on;
    # 指定每个 TCP 连接最多可以保持多长时间。Nginx 的默认值是 75 秒,有些浏览器最多只保持 60 秒,所以可以设定为 60 秒
    # 配置连接 keep-alive 超时时间,服务器将在超时之后关闭相应的连接
    keepalive_timeout   65;
    types_hash_max_size 2048;
    client_max_body_size 2m;
    # Number of requests a client can make over the keep-alive connection. This is set high for testing.
    # 单个客户端在 keep-alive 连接上可以发送的请求数量,在测试环境中,需要配置个比较大的值。
    keepalive_requests  10000;
    # Timeout for keep-alive connections. Server will close connections after this time.
    # 配置连接 keep-alive 超时时间,服务器将在超时之后关闭相应的连接。
    # 客户端向服务端发送一个完整的 request header 的超时时间。如果客户端在指定时间内没有发送一个完整的 request header,Nginx 返回 HTTP 408(Request Timed Out
    client_header_timeout 40s;
    # send the client a "request timed out" if the body is not loaded by this time. Default 60.
    # 指定客户端与服务端建立连接后发送 request body 的超时时间。如果客户端在指定时间内没有发送任何内容,Nginx 返回 HTTP 408(Request Timed Out)
    client_body_timeout 40s;
    reset_timedout_connection on;
    # If the client stops reading data, free up the stale client connection after this much time. Default 60.
    # 客户端数据读超时配置,客户端停止读取数据,超时时间后断开相应连接,默认是 60 秒。 服务端向客户端传输数据的超时时间
    send_timeout 30;
    server_names_hash_bucket_size 128;
    #客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置,一般一个请求头的大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小
    client_header_buffer_size 32k;
    large_client_header_buffers 4 32k;

################################ 限速配置 ################################
    limit_conn_log_level error;
    limit_conn_status 503;
    #limit_conn_zone $binary_remote_addr zone=one:1m;
    #limit_conn_zone $server_name zone=perserver:1m;
    # 定义一个名为allips的limit_req_zone用来存储session,大小是10M内存,
    # 以$binary_remote_addr 为key,限制平均每秒的请求为20个,
    # 1M能存储16384个状态,rete的值必须为整数,
    # 如果限制两秒钟一个请求,可以设置成30r/m ,其中$binary_remote_addr有时需要根据自己已有的log_format变量配置进行替换
    limit_conn_zone $binary_remote_addr zone=perip:1m;
    limit_conn_zone $server_name zone=perserver:1m;

    #limit_req   zone=perip burst=10;
     # 限制客户端并发连接数量为20, allow only one connection per an IP address at a time(每次). ;
    #是限制每个IP只能发起20连接 (addr 要跟 limit_conn_zone 的变量对应)
    # 表明以ip为key,来限制每个ip访问lmit.html文件时候,最多只能有一个在线,否则其余的都要返回不可用。
    limit_conn perip 14;
    limit_conn perserver 10;
    limit_req_zone $binary_remote_addr zone=per_ip:1m rate=400r/s;
    limit_req_zone $server_name zone=per_server:10m rate=600r/s;
    limit_req zone=per_ip burst=300 nodelay;
    limit_req zone=per_server burst=500;
################################ web server #######################
    include  /etc/nginx/http/http_web.conf;

}
nginx空域名设置,禁止ip访问

防止别把域名解析到我们的ip服务器,造成我们的ip被墙

# 关闭nginx空主机头 防止nginx空主机头及恶意域名指向
server {
    listen *:80 default;
    server_name _;
    #index index.html index.php index.htm;
    #root  /data/wwwroot/zhoulujun;
    #include /etc/nginx/conf.d/php.conf;
    # rewrite ^(.*) //zhoulujun.cn permanent;
    return 301 https://www.zhoulujun.cn$request_uri;
}
nginx php支持配置
################################  php 相关配置 #######################
    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # include /etc/nginx/conf.d/php-fpm.conf
    upstream php-fpm {
        server unix:/run/php-fpm/www.sock;
    }
################################  php fastcgi 相关配置 #######################
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 64k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 256k;

################################ host ################################
    include  /etc/nginx/site/default.conf;

linux服务器 web目录权限设置

给需要读取的文件,设置644,给需要指向的文件,如php文章,设置755,给需要读写的文件夹,如html uploadfile 文件夹设置777

具体权限设置,可以参看我之前写的文章《理清用户组概念及文件权限—搞懂网站权限设置》

设置了权限,由于centos8 默认开启selinux ,网站还是不能访问。一般报403错误。

centos8 网站服务器 selinux设置

网上搜索,一般都是说关闭selinux,但是,个人不建议关闭

设置selinux给web目录读权限

 chcon -v -R --type=httpd_sys_content_t /data/www/

设置selinux给web目录写权限

chcon -R -t httpd_sys_rw_content_t /data/www/

具体参看《centos8 nginx server root指向自定义目录如(/data/www),访问报403 404,所有文件用户组为root 权限为755》

设置完了,网站就可以运行了

linux网站基本安全设置

linux添加用户,修改用户密码,修改用户权限,设置root操作

网站平时用这个新增的用户登录,需要root权限,就su 切换

具体查看《linux添加用户,修改用户密码,修改用户权限,设置root用户操作》

禁止root ssh登录 修改默认端口

修改ssh配置文件

修改ssh登录端口

vim /etc/ssh/sshd_config

找到“#Port 22”,这一行直接键入“yyp”复制该行到下一行,然后把两行的“#”号即注释去掉,修改成:

#Port 22
Port 10086

大家修改端口时候最好挑10000~65535之间的端口号,10000以下容易被系统或一些特殊软件占用,或是以后新应用准备占用该端口的时候,却被你先占用了,导致软件无法运行

禁止root ssh登录

PermitRootLogin no

增加ssh 普通登录用户

AllowUsers andyzhou

重启ssh服务

systemctl restart sshd

linux防火墙端口设置

linux虚拟内存设置

我的个人博客是1g小内存,mysql跑起来,经常崩溃。

free -m  查看内存,根据情况设置内存,一般虚拟机内存为物理内存的2倍。那么设置2g虚拟内存,命令如下

dd if=/dev/zero of=/opt/swap bs=1024 count=2048000
chmod 600 /opt/swap
mkswap /opt/swap
swapon /opt/swap

mysql创建新用户并授权,禁止root登录

下面几行sql,应该满足您的需求

-- 创建用户,以后用这个用户登录

CREATE USER 'userName' @ '访问限制' IDENTIFIED BY 'password';

-- 授权用户 ,给与数据的权限

GRANT ALL PRIVILEGES ON 数据库名称.表名称 TO 'userName'@'访问限制';

---修改用户密码(修改root密码)

ALTER USER 'root'@'localhost' IDENTIFIED BY 'newPassword';

-- 刷新用户权限

FLUSH PRIVILEGES;

网站cloudflare加速

阿里云,导出zone文件,然后clouefare 导出模板,然后复制粘贴即可

网上教程很多,比如《如何用CDN加速你的网站 – Cloudflare免费版详细使用教程》

这里提下需要注意的几个点

服务器升级至centos8的网站配置以及运行php与mysql的操作方法

如果打开 Under Attack Mode ,总会出现一个5m 的启动页,而且现在免费用户,不能在customer page 里面配置

第二是,cloudflare Rocket Loader,国内被墙了,我的异步执行,插入的js 会被这个js阻塞。国内用户不管怎么样,还是关闭好。

关于服务器升级至centos8的网站配置以及运行php与mysql的操作方法问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

推荐阅读:
  1. MySQL5.5升级至5.7
  2. MySQL 5.6升级至MySQL 5.7--------版本升级最佳实战

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

centos8 mysql php

上一篇:如何安装并使用apt-spy来为Ubuntu配置最快的软件源

下一篇:Git基础概念与操作是怎样的

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》