服务器升级至centos8的网站配置以及运行php与mysql的操作方法,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
linux centos8 安装php7 nginx1.4 mysql8 ,运行php网站,各个模块从零开始配置
目前国内各大云服务器的默认centos 系统版本还是7,目前没有centos配套支持,国外云服务器厂商默认就是8,如vultr
centos8的性能提升,官网介绍的更清楚
安装centos8 min版本,在我的系统上查看,发现nginx默认是1.14
开发语言版本
Python 3.6
PHP 7.2
Ruby 2.5
Node.js 10
java::OpenJDK 11
数据库版本
MySQL 8.0
MariaDB 10.3
PostgreSQL 10 and PostgreSQL 9.6
Redis 5.0
而我的服务器msyql是msyql5.6 php是php5.6 ,我是选择重新来过一遍。
安装nginx
yum install nginx php
启动nginx
systemctl start nginx.service
查看nginx状态
systemctl status nginx
设置nginx开机启动
systemctl enable nginx.service
安装php
yum install php
安装php拓展库
yum install php-json php-xml php-mysqlnd php-mbstring php-common php-gd
启动php
systemctl start php-fpm
查看php版本
php -V
设置php开机启动
systemctl enable php-fpm
查看是否安装MySQL
rpm -qa | grep mysql
下载安装包文件
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
安装mysql-community-release-el7-5.noarch.rpm包
rpm -ivh mysql-community-release-el7-5.noarch.rpm
查看可用安装包
yum repolist all | grep mysql
安装mysql
yum install mysql-server
检查mysql是否安装成功。
rpm -qa | grep mysql
启动 mysql 服务
systemctl start mysqld.service
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配置目录结构如下
这里把本站配置贴一下
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;
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; }
防止别把域名解析到我们的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; }
################################ 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;
给需要读取的文件,设置644,给需要指向的文件,如php文章,设置755,给需要读写的文件夹,如html uploadfile 文件夹设置777
具体权限设置,可以参看我之前写的文章《理清用户组概念及文件权限—搞懂网站权限设置》
设置了权限,由于centos8 默认开启selinux ,网站还是不能访问。一般报403错误。
网上搜索,一般都是说关闭selinux,但是,个人不建议关闭
chcon -v -R --type=httpd_sys_content_t /data/www/
chcon -R -t httpd_sys_rw_content_t /data/www/
具体参看《centos8 nginx server root指向自定义目录如(/data/www),访问报403 404,所有文件用户组为root 权限为755》
设置完了,网站就可以运行了
添加一个名为 andyZhou的用户
useradd andyZhou
修改密码
passwd chenjiafa
给用户root权限
usermod -g root chenjiafa
网站平时用这个新增的用户登录,需要root权限,就su 切换
具体查看《linux添加用户,修改用户密码,修改用户权限,设置root用户操作》
修改ssh配置文件
vim /etc/ssh/sshd_config
找到“#Port 22”,这一行直接键入“yyp”复制该行到下一行,然后把两行的“#”号即注释去掉,修改成:
#Port 22 Port 10086
大家修改端口时候最好挑10000~65535之间的端口号,10000以下容易被系统或一些特殊软件占用,或是以后新应用准备占用该端口的时候,却被你先占用了,导致软件无法运行。
PermitRootLogin no
AllowUsers andyzhou
重启ssh服务
systemctl restart sshd
linux 防火墙关闭某个端口
firewall-cmd --permanent --zone=public --remove-port=8080/tcp
linux 防火墙打开某个端口
firewall-cmd --permanent --add-port=10086/tcp
重新加载防火墙策略:
firewall-cmd --reload
查看防火墙端口开放情况
firewall-cmd --list-ports
我的个人博客是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
下面几行sql,应该满足您的需求
-- 创建用户,以后用这个用户登录
CREATE USER 'userName' @ '访问限制' IDENTIFIED BY 'password';
-- 授权用户 ,给与数据的权限
GRANT ALL PRIVILEGES ON 数据库名称.表名称 TO 'userName'@'访问限制';
---修改用户密码(修改root密码)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newPassword';
-- 刷新用户权限
FLUSH PRIVILEGES;
阿里云,导出zone文件,然后clouefare 导出模板,然后复制粘贴即可
网上教程很多,比如《如何用CDN加速你的网站 – Cloudflare免费版详细使用教程》
这里提下需要注意的几个点
如果打开 Under Attack Mode ,总会出现一个5m 的启动页,而且现在免费用户,不能在customer page 里面配置
第二是,cloudflare Rocket Loader,国内被墙了,我的异步执行,插入的js 会被这个js阻塞。国内用户不管怎么样,还是关闭好。
关于服务器升级至centos8的网站配置以及运行php与mysql的操作方法问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。