安装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网站。