综合实验(博客和电商平台)
综合实验(博客和电商平台)

综合实验(博客和电商平台)

环境准备

#服务端内网,内网1:10.0.0.0/24
#模拟客户端网络:192.168.0.0/24
#模拟外网环境,外网:172.25.254.0/24

#Windows远程运维机器,通过OpenVPN,连接内网机器
IP:172.25.254.1

#Rocky2--wordpress/mysql数据库/服务器
IP:10.0.0.152
LAMP:wordpress
MYSQL:8.0.26
WordPress:6.0.1

#Rocky3--shopxo应用服务器
IP:10.0.0.153
ShopXO

#Rocky4--openvpn
eth0:10.0.0.154
eth1:172.25.254.128
OpenVPN

#Rocky5--firewalld1
eth0:10.0.0.155
eth1:172.25.254.130

#Rocky6--主dns服务器
IP:192.168.0.11
Bind

#Rocky7--从DNS服务器
IP:192.168.0.12
Bind

#Rocky8--firewalld2
eth0:192.168.0.9
eth1:172.25.254.131

#Rocky9--客户端机器
IP:192.168.010

Rocky2–wordpress/mysql数据库/服务器

#安装mysql,创建数据库,和应用登陆账号
[root@localhost ~]#yum -y install mysql-server
[root@localhost ~]#mysqladmin -uroot password 123456
[root@localhost ~]#mysql -p123456
mysql> create database wordpress;
mysql> create database shopxo;
mysql> create user wordpress@'10.0.0.%' identified by '123456';
mysql> grant all on wordpress.* to wordpress@'123456';
mysql> create user shopxo@'10.0.0.%' identified by '123456';
mysql> grant all on shopxo.* to shopxo@'123456';
#注意查看用户密码的加密方式,wordpress和shopx支持的认证的方式是 mysql_native_password
mysql> select user,host,plugin from user;
+------------------+-----------+-----------------------+
| user             | host      | plugin                |
+------------------+-----------+-----------------------+
| shopxo           | 10.0.0.%  | mysql_native_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session    | localhost | caching_sha2_password |
| mysql.sys        | localhost | caching_sha2_password |
| root             | localhost | mysql_native_password |
| wordpress        | localhost | mysql_native_password |
+------------------+-----------+-----------------------+
6 rows in set (0.00 sec)

#安装wordpress
[root@localhost ~]#yum -y install httpd php php-mysqlnd php-json
[root@localhost ~]#systemctl enable --now httpd
#wordpress网上下载资源,本地解压,解压后覆盖到指定目录/var/www/html
[root@localhost www]#tar xf wordpress-6.0.1-zh_CN.tar.gz 
#放到对应目录
[root@localhost html]#pwd
/var/www/html
[root@localhost html]#ll
total 216
-rw-r--r--  1 apache apache   405 Feb  6  2020 index.php
-rw-r--r--  1 apache apache 19915 Aug 25 20:49 license.txt
-rw-r--r--  1 apache apache  7401 Aug 25 20:49 readme.html
-rw-r--r--  1 apache apache  7165 Jan 21  2021 wp-activate.php
drwxr-xr-x  9 apache apache  4096 Apr  6 21:00 wp-admin
-rw-r--r--  1 apache apache   351 Feb  6  2020 wp-blog-header.php
-rw-r--r--  1 apache apache  2338 Nov 10  2021 wp-comments-post.php
-rw-rw-rw-  1 apache apache  3275 Aug 25 19:41 wp-config.php
-rw-r--r--  1 apache apache  3001 Dec 14  2021 wp-config-sample.php
drwxr-xr-x  7 apache apache    99 Aug 26 22:25 wp-content
-rw-r--r--  1 apache apache  3943 Aug 25 20:49 wp-cron.php
drwxr-xr-x 26 apache apache 12288 Apr  6 21:00 wp-includes
-rw-r--r--  1 apache apache  2494 Aug 25 20:49 wp-links-opml.php
-rw-r--r--  1 apache apache  3973 Aug 25 20:49 wp-load.php
-rw-r--r--  1 apache apache 48498 Aug 25 20:49 wp-login.php
-rw-r--r--  1 apache apache  8577 Aug 25 20:49 wp-mail.php
-rw-r--r--  1 apache apache 23706 Aug 25 20:49 wp-settings.php
-rw-r--r--  1 apache apache 32051 Aug 25 20:49 wp-signup.php
-rw-r--r--  1 apache apache  4748 Aug 25 20:49 wp-trackback.php
-rw-r--r--  1 apache apache  3236 Jun  9  2020 xmlrpc.php
[root@localhost www]#chown -R apache:apache html
[root@localhost ~]#vim /etc/php.ini
post_max_size = 100M
upload_max_filesize = 100M
[root@localhost ~]#systemctl restart httpd

#访问本机地址进入wordpress配置界面,输入对应的数据账号

Rocky3–shopxo应用服务器

[root@shopox ~]#yum -y install httpd php php-mysqlnd php-json php-gd php-xml php-pecl-zip
[root@shopox ~]#systemctl enable --now httpd
#shopxo网上下载资源,本地解压,解压后覆盖到指定目录/var/www/html
[root@Ubuntu2004 ~]#apt -y install apache2 php7.4-fpm libapache2-mod-php7.4 php7.4-mysql php7.4-json php7.4-xml php7.4-mbstring php7.4-zip php7.4-gd php7.4-curl
[root@shopxo2 www]#scp shopxo-v2.3.0.zip 10.0.0.200:/var/www
[root@shopxo2 www]#unzip shopxo-v2.3.0.zip 
[root@shopxo2 www]#mv shopxo-v2.3.0/* html/
[root@shopxo2 www]#chown -R www-data. html/
[root@shopxo2 www]#systemctl restart apache2

#访问本地地址进入shopxo,配置数据库连接,数据库连10.0.0.153

Rocky4–openvpn

#运行脚本,按步骤自动安装openvpn,并生成证书和账号
[root@openvpn data]#./openvpn.sh 
1) 部署环境及安装软件		     5) 申请账号密码
2) 准备CA证书和服务器证书并启动服务  6) 删除用户名密码
3) 申请客户端证书		     7) 退出
4) 注销客户客户端证书
请按要求输入操作选项:

#准备以下文件
#checkpsw.sh       openvpn@.service  openvpn.sh        
[root@openvpn data]#vim openvpn.sh 
#!/bin/bash
#
#*********************************************
#Author:           shuhong
#QQ:               985347841@qq.com
#Date:             2022-08-20
#FileName:         openvpn.sh
#URL:              www.hhhh.com
#Description:      The test script
#Copyright(C):     2022All right reserved
#*********************************************

. /etc/init.d/functions

Red="\e[1;31m"
Purple="\e[1;35m"
Green="\e[1;32m"
Blue="\e[1;36m"
Yellow="\e[1;33m"
End="\e[0m"

#检查登录用户
check_root(){
if [ $UID -ne 0 ]; then
    action "当前用户不是root,安装失败" false
    exit 1
fi
}

#检查yum源
check_yum(){
yum=$(yum repolist |grep -o epel &> /dev/null; echo $?)
if [  $yum -eq 0 ];then
    echo -e "$Green epel源存在$End"
else
    echo -e "$Yellow重新为你添加epel源$End"
    echo -en "
[epel]
name=EPEL
baseurl=https://mirror.tuna.tsinghua.edu.cn/epel/\$releasever/Everything/\$basearch
        https://mirrors.cloud.tencent.com/epel/\$releasever/Everything/\$basearch
        https://mirrors.huaweicloud.com/epel/\$releasever/Everything/\$basearch
        https://mirrors.aliyun.com/epel/\$releasever/Everything/\$basearch
gpgcheck=0
enabled=1 " > /etc/yum.repos.d/epel.repo 
    yum clean all
    yum makecache
    action "epel配置完成" true
fi
}

#安装openvpn
install_openvpn(){
if [ -e /etc/openvpn ];then
    action "openvpn已存在,安装失败" false
else 
    echo -e  "$Green开始安装openvpn$End"
    yum -y install openvpn
    action "安装openvpn" true
fi
}


#安装easy-rsa
install_easy_rsa(){
if [ -e /usr/share/easy-rsa/ ];then
    action "easy_rsa已存在" false
else
    echo -e "$Green开始安装easy-rsa$End"
    yum -y install easy-rsa
    action "安装easy-rasy" true 
fi
}

#展示软件版本
appinfo(){
    echo -e "$Yellow软件版本$End"
    yum list openvpn easy-rsa |tail -2|awk '{print $1,$2}'
}

check_apps(){
if [ -e /etc/openvpn -a -e /usr/share/easy-rsa/ ];then
    action "openvpn和easy-rsa已安装" true
else
    action "openvpn和easy-rsa未安装" false
    exit 1
fi
}

#检查Openvpen服务是否已经已启动
check_servivce(){
status=$(systemctl status openvpn@server.service |awk -F"[ ()]+" '/^ + Active/{print $4}')
if [ $status == "running" ];then
   echo -e "$Green服务正在运行$End"
   exit 0
fi
}

#生成CA证书和密钥
CA(){ 
    #echo CA   
    #准备好证书生成文件
    cp -r /usr/share/easy-rsa/3/ /etc/openvpn/easy-rsa 
    #准备证书颁发相关配置变量的文件
    cp /usr/share/doc/easy-rsa/vars.example  /etc/openvpn/easy-rsa/vars   
    #设置CA和服务器证书有效期
    echo -ne "set_var EASYRSA_CA_EXPIRE   36500\nset_var EASYRSA_CERT_EXPIRE 36500" >> /etc/openvpn/easy-rsa/vars
    #初始化PKI生成相关的文件和目录
    cd /etc/openvpn/easy-rsa/
    echo  -e "$Yellow生成PKI相关文件和目录$End"
    echo "yes"| /etc/openvpn/easy-rsa/easyrsa init-pki
    #创建 CA 机构证书环境
    echo -e "$Yellow生成CA证书和私钥$End"
    echo "CA" | /etc/openvpn/easy-rsa/easyrsa build-ca nopass         
    tree /etc/openvpn/easy-rsa/pki
}

server(){     
    cd /etc/openvpn/easy-rsa/
    echo -e "$Yellow生成证书申请文件和密钥文件$End"   
    echo -e "OpenVPN" | /etc/openvpn/easy-rsa/easyrsa gen-req server nopass
    echo -e "$Yellow生成服务器证书$End"
    echo "yes" | /etc/openvpn/easy-rsa/easyrsa sign server server
    echo -e "$Yellow生成Diffie-Hellma密钥$End"
    /etc/openvpn/easy-rsa/easyrsa gen-dh
    tree /etc/openvpn/easy-rsa/pki
}

startserver(){  
    cd /etc/openvpn/easy-rsa/ 
    #将CA和服务器证书相关文件复制到服务器相应的目录
    echo -e "$Yellow将CA和服务器证书相关文件复制到服务器相应的目录$End"
    cp /etc/openvpn/easy-rsa/pki/ca.crt  /etc/openvpn/server/
    cp /etc/openvpn/easy-rsa/pki/issued/server.crt  /etc/openvpn/server/
    cp /etc/openvpn/easy-rsa/pki/private/server.key  /etc/openvpn/server/
    cp /etc/openvpn/easy-rsa/pki/dh.pem  /etc/openvpn/server/
    ls -l /etc/openvpn/server/
    #准备启动的配置文件和日志目录 
    echo -e "$Yellow准备启动的配置文件和日志目录$End"
    cp /usr/share/doc/openvpn/sample/sample-config-files/server.conf  /etc/openvpn/
    echo -e "$Yellow生成ta.key$End"
    openvpn --genkey --secret /etc/openvpn/server/ta.key
    #准备账号密码认证脚本
    echo -e "$Yellow准备密码账户认证脚本$End"
    #mv /checkpsw.sh /etc/openvpn/checkpsw.sh   
    find / -name "checkpsw.sh"  -exec cp {} /etc/openvpn/ \; 
    chmod +x /etc/openvpn/checkpsw.sh 
    #提前生成吊销目录
    echo -e "$Yellow生成证书吊销文件$End"
    /etc/openvpn/easy-rsa/easyrsa gen-crl
    echo -ne "port 1194
proto tcp
dev tun
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/server.crt
key /etc/openvpn/server/server.key # This file should be kept secret
dh /etc/openvpn/server/dh.pem
server 10.8.0.0 255.255.255.0
push \"route 10.0.0.0 255.255.255.0\"
keepalive 10 120
cipher AES-256-CBC
compress lz4-v2
push \"compress lz4-v2\"
max-clients 2048
user openvpn
group openvpn
status /var/log/openvpn/openvpn-status.log
log-append /var/log/openvpn/openvpn.log
verb 3
mute 20
tls-auth /etc/openvpn/server/ta.key 0
crl-verify /etc/openvpn/easy-rsa/pki/crl.pem
script-security 3
auth-user-pass-verify /etc/openvpn/checkpsw.sh via-env
username-as-common-name" > /etc/openvpn/server.conf    
    getent passwd openvpn
    mkdir /var/log/openvpn
    chown openvpn:openvpn /var/log/openvpn
    ls -d -d /var/log/openvpn/
    find / -name "openvpn@.service"  -exec cp {} /usr/lib/systemd/system/ \;
    #cp /openvpn@.service /usr/lib/systemd/system/
    ll /usr/lib/systemd/system/ |grep openvpn
    systemctl daemon-reload 
    echo -e "$Yellow startOpen_VPN_service $End"
    systemctl enable --now openvpn@server
    systemctl status openvpn@server.service 
    echo "net.ipv4.ip_forward = 1" >>/etc/sysctl.conf
    sysctl -p
    iptables -t nat -A POSTROUTING -s 10.8.0.0/24 ! -d 10.8.0.0/24 -j SNAT --to-source 10.0.0.152
    echo "iptables -t nat -A POSTROUTING -s 10.8.0.0/24 ! -d 10.8.0.0/24 -j SNAT --to-source 10.0.0.152" >> /etc/rc.d/rc.local
}

#检查证书是否申请过
check_crt(){
if [ -e etc/openvpn/client/$1 ];then
    echo -e "$Red证书已存在$End"
    exit
fi
}

#申请客户端证书
reqcrt(){
if [ -e /etc/openvpn/client/$1 ];then
    echo -e "$Red证书已存在$End"
    exit 1
else
    cd /etc/openvpn/easy-rsa/
    echo -e "$Yellow用户证书有效期默认设置150天$End"
    sed -ri "s/(^set_var EASYRSA_CERT_EXPIRE )[0-9]+$/\1150/i" /etc/openvpn/easy-rsa/vars
    echo -e "$Yellow生成客户端证书申请文件$End"
    mkdir /etc/openvpn/client/$1 
    echo "$1" | ./easyrsa gen-req $1 nopass
    echo "yes"| ./easyrsa sign client $1
    #find /etc/openvpn/easy-rsa/ \( -name "$1.key" -o -name "$1.crt" \) -exec cp {} /etc/openvpn/client/$1/ \;
    cp /etc/openvpn/easy-rsa/pki/private/$1.key /etc/openvpn/client/$1/client.key 
    cp /etc/openvpn/easy-rsa/pki/issued/$1.crt  /etc/openvpn/client/$1/client.crt
    cp /etc/openvpn/server/{ca.crt,ta.key} /etc/openvpn/client/$1
    #mv /etc/openvpn/client/$1/$1.key client.key
    #mv /etc/openvpn/client/$1/$1.key client.crt
    echo -ne "client
dev tun
proto tcp
remote $2 1194
resolv-retry infinite
nobind
#persist-key
#persist-tun
ca ca.crt
cert client.crt
key client.key
remote-cert-tls server
tls-auth ta.key 1
cipher AES-256-CBC
verb 3
compress lz4-v2
auth-user-pass
" > /etc/openvpn/client/$1/client.ovpn 
    zip /etc/openvpn/client/$1/$1.zip /etc/openvpn/client/$1/*
fi
}

#证书注销
crtdel(){
    cd /etc/openvpn/easy-rsa/
    echo "yes" | /etc/openvpn/easy-rsa/easyrsa revoke $1
    /etc/openvpn/easy-rsa/easyrsa gen-crl
    rm -rf /etc/openvpn/client/$1
}

#账号申请
useradd(){
   grep -o "$1" /etc/openvpn/psw-file && { echo -e "$Red用户已存在$End";exit 1; } ||  { echo -e "$1 $2" >> /etc/openvpn/psw-file;systemctl daemon-reload;systemctl restart openvpn@server.service;echo -e "$Green用户$1添加成功$End"; }
}

#账号删除
userdel(){
   grep -o "$1" /etc/openvpn/psw-file && { sed -ri "s/(^$1.*)//i"  /etc/openvpn/psw-file;echo -e "$Green删除$1用户成功$End";systemctl daemon-reload;systemctl restart openvpn@server.service; } ||  { echo -e "$Red用户$1不存在$End"; }
}

PS3="请按要求输入操作选项:"
select lists in 部署环境及安装软件 准备CA证书和服务器证书并启动服务 申请客户端证书 注销客户客户端证书 申请账号密码 删除用户名密码 退出;do
case $REPLY in
1)
    #部署环境及安装软件
    echo -e "$Blue$lists$End"
    check_root #检查是否是root用户登录
    check_servivce
    check_yum  #检查有没有eple源
    install_openvpn #安装openvpn
    install_easy_rsa #安装easy_rsa
    appinfo   #展示软件版本
    ;;
2)  
    #准备服务器证书并启动服务端
    echo -e "$Blue$lists$End"
    check_apps #检查是否安装软件包
    check_servivce  #检查Openvpen服务是否已经已启动
    CA  #生成CA证书和密钥
    server #生成server证书和密钥,准备server.conf文件
    startserver #启动openvpn服务
    ;;
3)  
    #申请客户客户端证书 
    echo -e "$Blue$lists$End"
    read -p "输入证书名称:" crtname
    read -p "输入vpn地址:"  ip
    check_crt $crtname 
    reqcrt $crtname $ip
    ;;
4)
    #注销客户客户端证书
    echo -e "$Blue$lists$End"
    ls -l /etc/openvpn/client/ |awk 'NR!=1{print $9}'
    read -p "请输入要删除的证书:" dcrtname
    crtdel $dcrtname
    ;;
5)  #申请账号密码
    echo -e "$Blue$lists$End"
    echo -e "$Yellow现有账号$End"
    awk '{print $1}' /etc/openvpn/psw-file
    read -p "请输入用户名(英文字母数字):" uname
    read -p "请输入密码(英文字母数字):" passd
    useradd $uname $passd
    ;;
6)
    #删除用户名密码
    echo -e "$Blue$lists$End"
    echo -e "$Yellow现有账号$End"
    awk '{print $1}' /etc/openvpn/psw-file
    read -p "请输入用户名(英文字母数字):" duname
    userdel $duname
    ;;
7)  #退出
    echo -e "$Blue$lists$End"
    exit
    ;;
*)
    echo "输入错误请重新输入"
    ;;
esac
done

#将客户端证书和文件拷到客户端,考压缩包即可
[root@openvpn data]#cd /etc/openvpn/client/
[root@openvpn client]#ll
total 0
drwxr-xr-x 2 root root 108 Aug 26 22:32 shuhong
[root@openvpn client]#cd shuhong/
[root@openvpn shuhong]#ll
total 32
-rw------- 1 root root 1168 Aug 26 22:32 ca.crt
-rw------- 1 root root 4451 Aug 26 22:32 client.crt
-rw------- 1 root root 1704 Aug 26 22:32 client.key
-rw-r--r-- 1 root root  246 Aug 26 22:32 client.ovpn
-rw-r--r-- 1 root root 6213 Aug 26 22:32 shuhong.zip
-rw------- 1 root root  636 Aug 26 22:32 ta.key

Rocky5–firewalld1

[root@firewalld1 ~]#iptables -t nat -A PREROUTING -d 172.25.254.130 -p tcp --dport 80 -j DNAT --to-destination 10.0.0.153:80
[root@firewalld1 ~]#iptables -t nat -A PREROUTING -d 172.25.254.130 -p tcp --dport 8080 -j DNAT --to-destination 10.0.0.152:80
[root@firewalld1 ~]#iptables -nvL -t nat
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
   40  2400 DNAT       tcp  --  *      *       0.0.0.0/0            172.25.254.130       tcp dpt:80 to:10.0.0.153:80
    6   360 DNAT       tcp  --  *      *       0.0.0.0/0            172.25.254.130       tcp dpt:8080 to:10.0.0.152:80

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

[root@firewalld1 ~]#vim /etc/sysctl.conf 
net.ipv4.ip_forward = 1
[root@firewalld1 ~]#sysctl -p
net.ipv4.ip_forward = 1

Rocky6–主dns服务器

[root@MDNS ~]#yum -y install bind
[root@MDNS ~]#vim /etc/named.conf
//  listen-on port 53 { localhost; };
//  listen-on-v6 port 53 { ::1; };
    allow-query     { any; };

[root@MDNS ~]#vim /etc/named.rfc1912.zones 
zone "rs.sh" IN {
    type master;
    file  "rs.sh.zone";
};
[root@MDNS ~]#cd /var/named/
[root@MDNS named]#vim rs.sh.zone 
$TTL 1D
@   IN SOA  master admin (
                    1   ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
            NS   master
master      A    192.168.0.11
www         A    172.25.254.130
[root@MDNS named]#chown .named rs.sh.zone 
[root@MDNS named]#systemctl restart named

Rocky7–从DNS服务器

[root@SDNS slaves]#yum -y install bind
[root@SDNS slaves]#vim /etc/named.conf 
//  listen-on port 53 { 127.0.0.1; };
//  listen-on-v6 port 53 { ::1; };
//  allow-query     { localhost; };

[root@SDNS slaves]#vim /etc/named.rfc1912.zones 
zone "rs.sh" IN {
        type slave;
        masters { 192.168.0.11; };
        file "slaves/rs.sh.slave";
};

[root@SDNS slaves]#systemctl restart named
[root@SDNS slaves]#ll
total 4
-rw-r--r-- 1 named named 220 Aug 27 11:06 rs.sh.slave
[root@SDNS slaves]#pwd
/var/named/slaves

Rocky8–firewalld2

[root@firewalld2 ~]#iptables -t nat -A POSTROUTING -s  192.168.0.0/24     -j MASQUERADE
[root@firewalld2 ~]#iptables -t nat -A PREROUTING -d 172.25.254.131 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.10

[root@firewalld2 ~]#iptables -nvL -t nat
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
   10   600 DNAT       tcp  --  *      *       0.0.0.0/0            172.25.254.131       tcp dpt:80 to:192.168.0.10

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
   49  3012 MASQUERADE  all  --  *      *       192.168.0.0/24       0.0.0.0/0           

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination      

[root@firewalld2 ~]#vim /etc/sysctl.conf 
net.ipv4.ip_forward = 1
[root@firewalld2 ~]#sysctl -p
net.ipv4.ip_forward = 1

Rocky9–客户端机器

#验证访问博客网站www.rs.sh:8080
[root@client ~]#curl www.rs.sh:8080
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta name="viewport" content="width=device-width, user-scalable=yes, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta charset="UTF-8">
<link rel="profile" href="http://gmpg.org/xfn/11">
<title>RS – Welcome SH Blog!!</title>
<meta name='robots' content='max-image-preview:large' />
<link rel='dns-prefetch' href='//10.0.0.152' />
<link rel='dns-prefetch' href='//fonts.googleapis.com' />
<link rel='dns-prefetch' href='//s.w.org' />
<link rel="alternate" type="application/rss+xml" title="RS » Feed" href="http://10.0.0.152/index.php/feed/" />
<link rel="alternate" type="application/rss+xml" title="RS » 评论Feed" href="http://10.0.0.152/index.php/comments/feed/" />
<script>
window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/14.0.0\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/"source":{"concatemoji":"http:\/\/10.0.0.152\/wp-includes\/js\/wp-emoji-release.min.js?ver=6.0.1"}};
/*! This file is auto-generated */
!function(e,a,t){var n,r,o,i=a.createElement("canvas"),p=i.getContext&&i.getContext("2d");function s(e,t){var a=String.fromCharCode,e=(p.clearRect(0,0,i.widthhis,e),0,0),i.toDataURL());return p.clearRect(0,0,i.width,i.height),p.fillText(a.apply(this,t),0,0),e===i.toDataURL()}function c(e){var t=a.createElement("scrext/javascript",a.getElementsByTagName("head")[0].appendChild(t)}for(o=Array("flag","emoji"),t.supports={everything:!0,everythingExceptFlag:!0},r=0;r<o.lengthe){if(!p||!p.fillText)return!1;switch(p.textBaseline="top",p.font="600 32px Arial",e){case"flag":return s([127987,65039,8205,9895,65039],[127987,65039,8203,985356,56819],[55356,56826,8203,55356,56819])&&!s([55356,57332,56128,56423,56128,56418,56128,56421,56128,56430,56128,56423,56128,56447],[55356,57332,8203,56128,28,56421,8203,56128,56430,8203,56128,56423,8203,56128,56447]);case"emoji":return!s([129777,127995,8205,129778,127999],[129777,127995,8203,129778,127999])}retung=t.supports.everything&&t.supports[o[r]],"flag"!==o[r]&&(t.supports.everythingExceptFlag=t.supports.everythingExceptFlag&&t.supports[o[r]]);t.supports.everyythingExceptFlag&&!t.supports.flag,t.DOMReady=!1,t.readyCallback=function(){t.DOMReady=!0},t.supports.everything||(n=function(){t.readyCallback()},a.addEventLMContentLoaded",n,!1),e.addEventListener("load",n,!1)):(e.attachEvent("onload",n),a.attachEvent("onreadystatechange",function(){"complete"===a.readyState&&t.r{}).concatemoji?c(e.concatemoji):e.wpemoji&&e.twemoji&&(c(e.twemoji),c(e.wpemoji)))}(window,document,window._wpemojiSettings);
</script>
<style>
img.wp-smiley,
...........................


#验证访问电商网站www.rs.sh
[root@client ~]#curl www.rs.sh
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8" />
	<title>ShopXO企业级B2C电商系统提供商 - 演示站点</title>
	<meta name="keywords" content="商城系统,开源电商系统,免费电商系统,PHP电商系统,商城系统,B2C电商系统,B2B2C电商系统" />
	<meta name="description" content="ShopXO是国内领先的商城系统提供商,为企业提供php商城系统、微信商城、小程序。" />
	<meta name="generator" content="http://www.rs.sh/" />
	<meta name="application-name" content="ShopXO企业级B2C电商系统提供商 - 演示站点" />
	<meta name="msapplication-tooltip" content="ShopXO企业级B2C电商系统提供商 - 演示站点" />
	<meta name="msapplication-starturl" content="http://www.rs.sh/" />
	<link rel="shortcut icon" type="image/x-icon" href="http://www.rs.sh/public/favicon.ico" />
	<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1, maximum-scale=1">

	<meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-title" content="ShopXO">
    <link rel="apple-touch-icon" href="http://www.rs.sh/public/static/upload/images/common/2019/01/14/1547448728921121.jpg">
    <link rel="apple-touch-icon-precomposed" href="http://www.rs.sh/public/static/upload/images/common/2019/01/14/1547448728921121.jpg">
    
	<link rel="stylesheet" type="text/css" href="http://www.rs.sh/public/static/common/lib/assets/css/amazeui.css?v=20200202" />
	<link rel="stylesheet" type="text/css" href="http://www.rs.sh/public/static/common/lib/amazeui-switch/amazeui.switch.css?v=20200202" />
	<link rel="stylesheet" type="text/css" href="http://www.rs.sh/public/static/common/lib/amazeui-chosen/amazeui.chosen.css?v=20200202" />
	<link rel="stylesheet" type="text/css" href="http://www.rs.sh/public/static/common/lib/cropper/cropper.min.css?v=20200202" />
    <link rel="stylesheet" type="text/css" href="http://www.rs.sh/public/static/common/lib/amazeui-tagsinput/amazeui.tagsinput.css?v=20200202" />
	
	<link rel="stylesheet" type="text/css" href="http://www.rs.sh/public/static/common/css/common.css?v=20200202" />
    <link rel="stylesheet" type="text/css" href="http://www.rs.sh/public/static/index/default/css/common.css?v=20200202" />
    		<link rel="stylesheet" type="text/css" href="http://www.rs.sh/public/static/index/default/css/index.css?v=20200202" />
	
	<!-- css钩子 -->
    
	<script type="text/javascript">
		var __root__ = 'http://www.rs.sh/public/';
		var __my_url__ = 'http://www.rs.sh/';
        var __my_public_url__ = 'http://www.rs.sh/public/';
......