安装Nginx+配置SSL证书
安装扩展源
yum install epel-release
安装Nginx相关依赖。
yum install -y gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
安装nginx
yum install nginx -y
nginx启动、开机启动、状态、重启
systemctl start nginx
systemctl enable nginx
systemctl status nginx
systemctl restart nginx
配置Nginx主配置
配置Nginx主配置文件:/etc/nginx/nginx.conf
Nginx的默认网站存放路径:/usr/share/nginx/html/
vim /etc/nginx/nginx.conf
这行表示,配置文件也可也放在/etc/nginx/conf.d/下以conf结尾(默认自带,不带在添加)
user nginx nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
worker_rlimit_nofile 65535;
include /usr/share/nginx/modules/*.conf;
events {
use epoll;
worker_connections 65535;
multi_accept on;
}
http {
log_format main '$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 main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 4096;
include /etc/nginx/mime.types;
default_type application/octet-stream;
#####nes###
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
# 客户端最大上传文件大小,根据需要配置
client_max_body_size 1024m;
client_body_buffer_size 10m;
server_tokens off;
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 128k;
fastcgi_intercept_errors on;
#gzip相关配置
gzip on;
gzip_http_version 1.0;
gzip_disable "MSIE [1-6].";
gzip_types text/plain application/x-javascript text/css text/javascript;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_comp_level 6;
gzip_vary on;
include /etc/nginx/conf.d/*.conf;
include vhost/*.conf;
}
配置虚拟Web主机配置文件
vim /etc/nginx/conf.d/www.conf
# 负载均衡,可以添加多个服务器
# upstream tomcat_cms {
# ip_hash;
# server 127.0.0.1:8090 weight=3 max_fails=3 fail_timeout=100s;
# }
# 禁止IP直接访问,可以跳转或403
server {
listen 80 default_server;
server_name _;
return 301 http://119.91.32.80:8090$request_uri;
}
# 配置以下域名,由http跳转到https
server {
listen 80;
server_name www.20271314.xyz;
#将所有http请求重定向到https
return 301 https://$host$request_uri;
}
#虚拟Web主机的配置
server {
listen 443 ssl http2 default_server;
server_name www.20271314.xyz;
# 证书路径
#ssl_certificate /data/cert/20271314.xyz/20271314.xyz.pem;
# 私钥路径
#ssl_certificate_key /data/cert/20271314.xyz/20271314.xyz.key;
# OCSP Stapling 的证书位置(完整的证书链,可选)
ssl_trusted_certificate /data/cert/20271314.xyz/Digicert-EV-root.cer;
#ssl_client_certificate /xxxx/; #配置客户端公钥证书存放的路径位置。
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 30m;
# 浏览器已支持TLSv1.3,建议加上,TLSv1和TLSv1.1即将废弃,如果不需要支持IE和XP建议去掉,IE8-10/Win7需要TLSv1.0;IE8以下需要SSL3和单证书
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
# on由服务器决定加密算法,off由浏览器决定,推荐使用on,更安全,对服务器性能有少量影响
ssl_prefer_server_ciphers on;
# 使用此套接字加密
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE;
# HSTS(ngx_http_headers_module is required) (180d)
# 严格传输安全:即在时间过期之前,每次访问HTTP站点时,由客户端直接跳转到HTTPS站点
# 设置后,该网站的HTTP站点无法打开,只能等待过期或禁用配置后清空浏览器缓存
# 启用后注意保持证书不过期,证书过期后网站可能无法访问
add_header Strict-Transport-Security "max-age=15552000" always;
# 开启 OCSP Stapling,作用:由服务器在线查询证书吊销情况,默认是由浏览器在线查询,由服务器查询效率更高
ssl_stapling on;
# OCSP Stapling 验证开启
ssl_stapling_verify on;
# 配置用于查询 OCSP 服务器的DNS(可选)
resolver 8.8.8.8 114.114.114.114 223.6.6.6 valid=300s;
# 查询域名超时时间(可选)
resolver_timeout 5s;
#虚拟主机的发布目录
root /usr/share/nginx/html/blog;
#添加下列信息,配置Nginx通过fastcgi方式处理您的PHP请求。
location ~ \.php$ {
root /usr/share/nginx/html/blog;#将/var/www/html替换为您的网站根目录
include fastcgi_params;#Nginx调用fastcgi接口处理PHP请求。
fastcgi_pass 127.0.0.1:9000;#Nginx通过本机的9000端口将PHP请求转发给PHP-FPM进行处理。
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
#禁止访问的文件或目录
location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
{
return 404;
}
#一键申请SSL证书验证目录相关设置
#location ~ \.well-known{
# allow all;
#}
#location /WEB-INF {
# deny all;
#}
#location ~ /\.ht {
# deny all;
#}
# 静态资源过期时间,可选(可能会对页面样式有影响)
#location ~* \.(gif|jpg|jpeg|png|bmp|swf|ico)$ {
# expires 30d;
#}
# nginx统计页面
#location /nginx_status {
# stub_status on;
# access_log off;
#}
# 这里可以定义静态访问页面
#location /error {
# alias /data/wwwroot/web_static/error/;
# index index.html index.htm 404.html;
#}
# 还可以定义静态文件下载站
#location /download {
# alias /data/wwwroot/web_static/download/; #目录
# autoindex on; #自动索引
# autoindex_exact_size off; #文件大小显示
# autoindex_localtime on; # 文件修改时间
#}
# 站点配置
location / {
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?$args;
#设置主机头和客户端真实地址,以便服务器获取客户端真实IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
# WebSocket支持
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
# 禁用缓存
# proxy_buffering off;
# 使用nginx中定义的全局错误页
proxy_intercept_errors on;
#proxy_pass http://tomcat_cms; #和负载配置的名称一致
}
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
##流量控制
# limit_conn perserver 300; #并发限制
# limit_conn perip 25; #单IP限制
# limit_rate 512k; #流量限制KB
#HTTP_TO_HTTPS_START
#if ($server_port !~ 443){
# rewrite ^(/.*)$ https://$host$1 permanent;
#}
#HTTP_TO_HTTPS_END
# 定义错误页面
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location = /404.html {
root html;
}
# 定义全局ico文件
#location = /favicon.ico {
# root /data/wwwroot;
# log_not_found off;
# access_log off;
#}
# 定义robots.txt文件
#location = /robots.txt {
# alias /data/wwwroot/robots.txt;
#}
##禁止指定UA的访问(反爬虫,反CC)
if ($http_user_agent ~* "YandexBot|MJ12bot|BLEXBot|python-requests|serpstatbot|Dotbot|SemrushBot|AhrefsBot|Java|ApacheBench|Swiftbot|Python-urllib|Python-urllib2|Python-urllib3|Gigabot|YisouSpider|HttpClient|EasouSpider|Scrapy")
{
return 403;
}
}
安装MySQL
运行以下命令更新YUM源
rpm -Uvh http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
运行以下命令安装MySQL
yum -y install mysql-community-server --nogpgcheck
运行以下命令查看MySQL版本号。mysql -V
返回结果如下所示,表示MySQL安装成功。
运行以下命令启动MySQL。systemctl start mysqld
依次运行以下命令设置开机启动MySQL。systemctl enable mysqld
systemctl daemon-reload
获取临时密码
grep 'temporary password' /var/log/mysqld.log
命令行返回结果如下,其中ARBTCv3+n8Q为MySQL的初始密码。在下一步重置root用户密码时,会使用该初始密码。
2021-11-10T07:01:26.595215Z 1 [Note] A temporary password is generated for root@localhost: ARBTCv3+n8Q
运行以下命令配置MySQL的安全性。mysql_secure_installation
Securing the MySQL server deployment.
Enter password for user root: #输入上一步获取的root用户初始密码
The existing password for the user account root has expired. Please set a new password.
New password: #输入新密码。长度为8至30个字符,必须同时包含大小写英文字母、数字和特殊符号。特殊符号包含()` ~!@#$%^&*-+=|{}[]:;‘<>,.?/
Re-enter new password: #确认新密码。
The 'validate_password' plugin is installed on the server.
The subsequent steps will run with the existing configuration
of the plugin.
Using existing password for root.
Estimated strength of the password: 100 #返回结果包含您设置的密码强度。
Change the password for root ? ((Press y|Y for Yes, any other key for No) :Y #您需要输入Y以确认使用新密码。
#新密码设置完成后,需要再次验证新密码。
New password:#再次输入新密码。
Re-enter new password:#再次确认新密码。
Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) :Y #您需要输入Y,再次确认使用新密码。
Remove anonymous users? (Press y|Y for Yes, any other key for No) :Y #输入Y删除匿名用户。
Success.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) :Y #输入Y禁止使用root用户远程登录MySQL。
Success.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) :Y #输入Y删除test库以及用户对test库的访问权限。
- Dropping test database...
Success.
- Removing privileges on test database...
Success.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) :Y #输入Y重新加载授权表。
Success.
All done!
安装PHP
查看有没有已经安装php
rpm -qa|grep php
有就卸载旧版本,卸载后按下面操作
安装yum工具类:
yum install -y yum-utils
更换yum源:
yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
为PHP 8启用流模块:
yum-config-manager --disable 'remi-php*'
yum-config-manager --enable remi-php80
安装PHP 8及扩展:
yum install -y php php-fpm.x86_64 php-bcmath.x86_64 php-gd.x86_64 php-mbstring.x86_64 php-mysqlnd.x86_64 php-opcache.x86_64 php-pdo.x86_64 php-pecl-crypto.x86_64 php-pecl-mcrypt.x86_64 php-pecl-geoip.x86_64 php-snmp.x86_64 php-soap.x86_64 php-xml.x86_64 php-pecl-imagick.x86_64 php-pecl-mongodb.x86_64 php-pecl-zip.x86_64
运行命令
php -v出现版本信息,则说明安装成功
PHP日常操作
systemctl start php-fpm
#启动
systemctl restart php-fpm
#重启
systemctl stop php-fpm
#关闭
systemctl status php-fpm
#检查状态
php -m
#查看PHP已安装拓展模块
php -v
#查看PHP版本
安装WordPress
1、进入MySQL数据库。
使用root用户登录MySQL,并输入密码。密码为您在搭建环境时为数据库设置的密码。mysql -uroot -p
为WordPress网站创建数据库。
本教程中数据库名为blog。
create database blog;
创建一个新用户管理WordPress库,提高安全性。
MySQL在5.7版本后默认安装了密码强度验证插件validate_password。您可以登录MySQL后查看密码强度规则。
show variables like "%password%";
本教程中创建新用户blog,新用户密码为PASSword123.。
create user 'blog'@'localhost' identified by 'PASSword123.';
赋予用户对数据库blog的全部权限。grant all privileges on blog.* to 'blog'@'localhost' identified by 'PASSword123.';
使配置生效。flush privileges;
退出MySQL。exit;
2、下载WordPress,并移动至网站根目录。
下载WordPress。
通过yum命令下载的WordPress保存在/usr/share/wordpress目录下。yum -y install wordpress
将下载的WordPress移动至网站根目录。
mv /usr/share/wordpress /usr/share/nginx/html/blog
3、修改WordPress配置文件。
进入移动后的WordPress路径下,软连接配置文件wp-config.php。cd /usr/share/nginx/html/blog
ln -snf /etc/wordpress/wp-config.php wp-config.php
编辑wp-config.php文件。vim wp-config.php
按i键切换至编辑模式,根据已配置的WordPress数据库信息,修改MySQL相关配置信息,修改代码如下所示。
WordPress网站的数据信息将通过数据库的blog用户保存在名为blog的数据库中。
// ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //
/** WordPress数据库的名称 */
define('DB_NAME', 'blog');
/** MySQL数据库用户名 */
define('DB_USER', 'blog');
/** MySQL数据库密码 */
define('DB_PASSWORD', 'PASSword123.');
/** MySQL主机 */
define('DB_HOST', 'localhost');
修改完成后,按下Esc键后,输入:wq并回车,保存退出配置文件。
4、运行以下命令重启Nginx服务。systemctl restart nginx
5、安装并登录WordPress网站。
在本地物理机上使用浏览器访问服务器IP,进入WordPress安装页面。
填写网站基本信息,然后单击安装WordPress。
填写信息参数说明:
站点标题:WordPress网站的名称。例如:爱零愛菁。
用户名:登录WordPress时所需的用户名,请注意安全性。例如:admin。
密码:登录WordPress时所需的密码,建议您设置安全性高的密码。例如:Admin.123456。
您的电子邮件:用于接收通知的电子邮件。例如:1826783683@qq.com。
单击登录。
输入在安装WordPress时设置的用户名admin和密码Admin.123456,然后单击登录。
成功进入您个人的WordPress网站。
Comments NOTHING