openwrt固件:https://github.com/kiddin9/OpenWrt_x86-r2s-r4s
]]>zerotier-cli join
3,生成moon模板
cd /var/lib/zerotier-one
zerotier-idtool initmoon identity.public > moon.json
4,改moon.json
vi moon.json
找到"stableEndpoints": [ "8.8.8.8/9993" ]修改8.8.8.8为自己vps的ip
5,生成签名
zerotier-idtool genmoon moon.json
执行之后会生产一个000000xxxx.moon的文件
6,把moon节点加入网络
mkdir moons.d
mv 000000xxxxx.moon moons.d/
完成之后,重启zertior或者vps,moon节点即完成设置。
然后,需要用到moon节点的相关机子,可以执行命令:
curl -s https://install.zerotier.com | sudo bash
zerotier-cli join
zerotier-cli orbit
再命令重启即可。
注意network id为局域网id,id为moon节点在zerotier的id,可以zerotier后台查看,也可以moon节点vps执行zerotier-cli info查看
相关命令:
重启命令
systemctl restart zerotier-one
service zerotier-one restart
/etc/init.d/zerotier-one restart
zerotier-cli listpeers
剔除moon节点命令
zerotier-cli deorbit
卸载zerotier命令
sudo dpkg -P zerotier-one
借鉴来源:
https://blog.csdn.net/it_LiChengwei/article/details/120934792
https://www.lingbaoboy.com/2019/03/vpszerotiermoon.html]]>
service nginx stop
cd /data/wwwroot/
mkdir ssl
cd ssl
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto certonly -d nuluzheng.com -d www.nuluzheng.com --debug
这里注意,--debug这个要复制进去,我一开始就是没复制这个,导致报错
WARNING: Python 2.6 support is very experimental at present…
if you would like to work on improving it, please ensure you have backups
and then run this script again with the –debug flag!
另外最后不带www以及带www都要申请,他会整到一个证书里,当然,如果你有这个域名的其他二级域名,也想使用这个证书,可以一起写进去。
三,如果没有报其他错误的话,然后进入 /etc/letsencrypt/live/nuluzheng.com 这个目录下,应该可以看到证书了。
一共有四个文件,我们用到的只是其中两个文件,不过,咱们不用管他,看到有文件在,就ok。
cert.pem chain.pem fullchain.pem privkey.pem
四,接下来,我们修改配置文件。
原来默认的配置文件是:
server {
listen 80;
server_name www.nuluzheng.com nuluzheng.com;
access_log off;
index index.html index.htm index.php;
root /data/wwwroot/www.nuluzheng.com;
if ($host != www.nuluzheng.com) {
rewrite ^/(.*)$ $scheme://www.nuluzheng.com/$1 permanent;
}
location / {
try_files $uri @apache;
}
location @apache {
proxy_pass http://127.0.0.1:88;
include proxy.conf;
}
location ~ .*\.(php|php5|cgi|pl)?$ {
proxy_pass http://127.0.0.1:88;
include proxy.conf;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|ico)$ {
expires 30d;
access_log off;
}
location ~ .*\.(js|css)?$ {
expires 7d;
access_log off;
}
}
咱们把他改为:
server {
listen 80;
server_name www.nuluzheng.com;
rewrite ^(.*)$ https://$host$1 permanent;
}
server {
server_name nuluzheng.com;
return 301 https://www.nuluzheng.com$request_uri;
}
server {
listen 443 ssl;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_dhparam /opt/dhparam/keys/dhparams.pem;
ssl_certificate /etc/letsencrypt/live/nuluzheng.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/nuluzheng.com/privkey.pem;
server_name www.nuluzheng.com nuluzheng.com;
access_log off;
index index.html index.htm index.php;
root /data/wwwroot/www.nuluzheng.com;
if ($host != www.nuluzheng.com) {
rewrite ^/(.*)$ $scheme://www.nuluzheng.com/$1 permanent;
}
location / {
try_files $uri @apache;
}
location @apache {
proxy_pass http://127.0.0.1:88;
include proxy.conf;
}
location ~ .*\.(php|php5|cgi|pl)?$ {
proxy_pass http://127.0.0.1:88;
include proxy.conf;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|ico)$ {
expires 30d;
access_log off;
}
location ~ .*\.(js|css)?$ {
expires 7d;
access_log off;
}
}
因为配置文件里,有这一句, ssl_dhparam /opt/dhparam/keys/dhparams.pem;
所以咱们还得生成这个。
cd /opt
mkdir dhparam
cd dhparam
mkdir keys
cd keys
openssl dhparam -out dhparams.pem 2048
cd ../
chmod 700 keys
openssl dhparam -out dhparams.pem 2048 执行这一步骤,需要等待的时间有点长。可能要两三分钟,咱们耐心等待一会即可。
五,ok,搞定,启动nginx即可。如果你不喜欢用cloudflare的dns,这个时候,可以再把dns切换回来。
service nginx start
网站已经实现https了,拿到https://www.ssllabs.com测试一下安全性。
嗯不错,评级为A。]]>
yum --enablerepo epel-testing install s3cmd
二,配置s3cmd
配置,主要是 Access Key ID 和 Secret Access Key
s3cmd --configure
然后根据提示输入Access Key ID 和 Secret Access Key,其他的选项直接回车忽略.最后确定测试,如果测试成功,即保存配置文件即可。
错误1:
ERROR: Test failed: 403 (RequestTimeTooSkewed): The difference between the request time and the current time is too large
这个一般是,时区出了问题。一般情况下只需要执行:
/usr/sbin/ntpdate us.pool.ntp.org
或者
/usr/sbin/ntpdate ntp.api.bz
如果还是不行:
cat /etc/sysconfig/clock
cd /usr/share/zoneinfo
rm /etc/localtime
ln -s /usr/share/zoneinfo/America/New_York /etc/localtime
再执行前面的即可。
错误2:
ERROR: Test failed: [Errno -3] Temporary failure in name resolution
这个错误是dns文件有问题,只要把/etc/resolv.conf这个文件原来的内容注释掉,修改为谷歌的dns即可:
nameserver 8.8.8.8
nameserver 8.8.4.4
到此基本错误解决,再运行一下命令:s3cmd --configure之前有输入了key这次只要不停的回车,最后测试的时候yes.反馈测试成功了。
三,s3cmd详细相关命令
1、列举所有 Buckets。(bucket 相当于根文件夹)
s3cmd ls
2、创建 bucket,且 bucket 名称是唯一的,不能重复。
s3cmd mb s3://my-bucket-name
3、删除空 bucket
s3cmd rb s3://my-bucket-name
4、列举 Bucket 中的内容
s3cmd ls s3://my-bucket-name
5、上传 file.txt 到某个 bucket,
s3cmd put file.txt s3://my-bucket-name/file.txt
6、上传并将权限设置为所有人可读
s3cmd put --acl-public file.txt s3://my-bucket-name/file.txt
7、批量上传文件
s3cmd put ./* s3://my-bucket-name/
8、下载文件
s3cmd get s3://my-bucket-name/file.txt file.txt
9、批量下载
s3cmd get s3://my-bucket-name/* ./
10、删除文件
s3cmd del s3://my-bucket-name/file.txt
11、来获得对应的bucket所占用的空间大小
s3cmd du -H s3://my-bucket-name
目录处理规则
以下命令都能将dir1 中的文件上传至my-bucket-name,但效果只截然不同的。
1)dir1 不带"/"斜杠,那么dir1会作为文件路径的一部分,相当于上传整个dir1目录,即类似 "cp -r dir1/"
s3cmd put -r dir1 s3://my-bucket-name/
dir1/file1-1.txt -> s3://my-bucket-name/dir1/file1-1.txt
2)带"/"斜杠的 dir1,相当于上传dir1目录下的所有文件,即类似 "cp ./* "
s3cmd put -r dir1/ s3://my-bucket-name/
dir1/file1-1.txt -> s3://my-bucket-name/file1-1.txt
四、同步方法
这是s3cmd 使用难点,但却是最实用的功能。官方使用说明见《s3cmd sync HowTo》
首先明确,同步操作是要进行MD5校验的,只有当文件不同时,才会被传输。
4.1、常规同步操作
1、同步当前目录下所有文件
s3cmd sync ./ s3://my-bucket-name/
2、加 "--dry-run"参数后,仅列出需要同步的项目,不实际进行同步。
s3cmd sync --dry-run ./ s3://my-bucket-name/
3、加 " --delete-removed"参数后,会删除本地不存在的文件。
s3cmd sync --delete-removed ./ s3://my-bucket-name/
4、加 " --skip-existing"参数后,不进行MD5校验,直接跳过本地已存在的文件。
s3cmd sync --skip-existing ./ s3://my-bucket-name/
4.2、高级同步操作
4.2.1、排除、包含规则(--exclude 、--include)
file1-1.txt被排除,file2-2.txt同样是txt格式却能被包含。
s3cmd sync --dry-run --exclude '*.txt' --include 'dir2/*' ./ s3://my-bucket-name/
exclude: dir1/file1-1.txt
upload: ./dir2/file2-2.txt -> s3://my-bucket-name/dir2/file2-2.txt
4.2.2、从文件中载入排除或包含规则。(--exclude-from、--include-from)
s3cmd sync --exclude-from pictures.exclude ./ s3://my-bucket-name/
pictures.exclude 文件内容
# Hey, comments are allowed here
*.jpg
*.gif
4.2.3、排除或包含规则支持正则表达式
--rexclude 、--rinclude、--rexclude-from、--rinclude-from]]>user www www;
worker_processes 8;
#worker_cpu_affinity auto;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
worker_rlimit_nofile 65535;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
use epoll;
worker_connections 20480;
}
http {
server_names_hash_bucket_size 512;
server_names_hash_max_size 512;
include mime.types;
default_type application/octet-stream;
#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 logs/access.log main;
sendfile on;
tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
tcp_nodelay on;
server_tokens off;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
proxy_cache_path /wwwroot/nginx/cache/one levels=1:2 keys_zone=one:50m inactive=1h max_size=1g;
proxy_cache_path /wwwroot/nginx/cache/two levels=1:2 keys_zone=two:50m inactive=1h max_size=1g;
upstream lunxun1 {
server 192.168.1.1:80;
server 192.168.1.2:80;
server 192.168.1.3:80;
server 192.168.1.4:80;
ip_hash;
}
upstream lunxun2 {
server 192.168.2.1:80;
server 192.168.2.2:80;
server 192.168.2.3:80;
server 192.168.2.4:80;
ip_hash;
}
include vhost/*.conf;
}
proxy_cache_path /wwwroot/nginx/cache/one levels=1:2 keys_zone=one:50m inactive=1h max_size=1g;
levels指定目录结构,可以使用任意的1位或2位数字作为目录结构,如 X, X:X,或X:X:X 例如: “2”, “2:2”, “1:1:2“,但是最多只能是三级目录。
keys_zone=one 参数用来为这个缓存区起名(proxy_cache 指令需要用到 其后对应缓存区名称)
one指的是共享池的名称,50m指的是内存缓存空间的大小
inactive=1h指如果缓存数据在1小时(天:d、秒:s、分:m)内没有被访问,将自动被删除,默认inactive为10分钟;
max_size=1g 指硬盘缓存大小为1g
下面是vhost里面的具体网站的conf文件配置
server {
listen 80 default;
server_name www.test.com;
#增加两头部 查看缓存命中情况
add_header Server-Via $server_addr;
add_header Nginx-Cache $upstream_cache_status;
location / {
proxy_pass http://test;
proxy_set_header Host www.hao123.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;
proxy_cache one;
proxy_cache_valid 200 10m;
proxy_connect_timeout 60;
proxy_read_timeout 600;
proxy_send_timeout 600;
}
access_log off;
error_log /dev/null;
}
proxy_cache one; #设置一个缓存区域的名称,一个相同的区域可以在不同的地方使用
proxy_cache_valid 200 10m; #为不同的应答设置不同的缓存时间
#增加两头部 查看缓存命中情况和服务器地址
add_header Server-Via $server_addr;
add_header Nginx-Cache $upstream_cache_status;
用fiddler查看headers里面的Nginx-Cache、Server-Via
MISS 未命中
EXPIRED - expired。请求被传送到后端。
UPDATING - expired。由于proxy/fastcgi_cache_use_stale正在更新,将使用旧的应答。
STALE - expired。由于proxy/fastcgi_cache_use_stale,后端将得到过期的应答。
HIT 命中
参照资料:http://www.360doc.com/content/13/1114/12/7694408_329125489.shtml]]>
server {
listen 80;
server_name doman.com www.doman.com;
location /
{
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://2.2.2.1;
proxy_cache_key $host$uri$is_args$args;
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 Referer $http_referer;
proxy_set_header Cookie $http_cookie;
proxy_set_header Accept-Encoding "";
proxy_intercept_errors on;
#proxy_cache_valid 200 304 12h;
#expires 1d;
}
#access_log off;
}
服务器上只使用一个ip:1.1.1.1
server {
listen 1.1.1.1:80;
server_name doman.com www.doman.com;
location /
{
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://2.2.2.1;
proxy_cache_key $host$uri$is_args$args;
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 Referer $http_referer;
proxy_set_header Cookie $http_cookie;
proxy_set_header Accept-Encoding "";
proxy_intercept_errors on;
#proxy_cache_valid 200 304 12h;
#expires 1d;
}
#access_log off;
}
单台服务器反向代理一个源服务器案例
只用服务器上的ip: 1.1.1.1
源服务器上的网站全部解析到这一个ip。
server {
listen 1.1.1.1:80 default backlog=1024 rcvbuf=32768 sndbuf=131072;
server_name $host;
location / {
proxy_pass http://2.2.2.1:80/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_redirect off;
proxy_set_header X-Nginx-Scheme $scheme;
client_max_body_size 15m;
access_log /var/log/nginx/2.2.2.1_access_log ;
error_log /var/log/nginx/2.2.2.1_error_log notice;
}
}
服务器是多ip: 1.1.1.1-1.1.1.128
源服务器上的网站可以解析到服务器上的任何ip。
server {
listen 80;
server_name $host;
location / {
proxy_pass http://2.2.2.1/;
proxy_set_header Host $host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 60;
proxy_read_timeout 600;
proxy_send_timeout 600;
}
}
一个ip反向代理案例
服务器ip对应源服务器ip
1.1.1.1>>>2.2.2.1(源服务器1)
1.1.1.2>>>2.2.2.2(源服务器2)
源服务器1上的网站全部解析到ip:1.1.1.1
源服务器2上的网站全部解析到ip:1.1.1.2
server {
listen 1.1.1.1:80 backlog=1024 rcvbuf=32768 sndbuf=131072;
server_name $host;
location / {
proxy_pass http://2.2.2.1/;
proxy_set_header Host $host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 60;
proxy_read_timeout 600;
proxy_send_timeout 600;
}
}
server {
listen 1.1.1.2:80 backlog=1024 rcvbuf=32768 sndbuf=131072;
server_name $host;
location / {
proxy_pass http://2.2.2.2/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_redirect off;
proxy_connect_timeout 60;
proxy_read_timeout 600;
proxy_send_timeout 600;
}
}
proxy_set_header Referer http://www.cnbeta.com; #强制定义Referer,程序验证判断会用到
proxy_set_header Host www.cnbeta.com; #定义主机头,如果目标站点绑定的域名个server_name项的吻合则使用$host
proxy_pass http://www.cnbeta.com; #指定目标,建议使用IP或者nginx自定义池
proxy_set_header Accept-Encoding “”; #清除编码
给所有配置文件添加这个属性
location ~.*\.(jpg|png|jpeg)$
{
expires 30d;
}
location ~.*\.(js|css)?$
{
expires 1h;
}
]]>
for /l %i in (其实数字,1,结束数字) do netsh interface ip add address "本地连接" IP前缀.%i 子网掩码
真实范例:
IP地址段 Subnet: 188.82.131.81/29
子网掩码 Netmask: 255.255.255.248
网关地址 Gateway: 188.82.131.81
广播地址 Broadcast: 188.82.131.87
可用IP地址: 188.82.131.82 - 188.82.131.86(共5个可用IP)
DOS命令:
for /l %i in (82,1,86) do netsh interface ip add address "本地连接" 188.82.131.%i 255.255.255.248
IP地址段 Subnet: 188.82.136.0/24
子网掩码 Netmask: 255.255.255.0
网关地址 Gateway: 188.82.136.1
广播地址 Broadcast: 188.82.136.255
可用IP地址: 188.82.136.2 - 188.82.136.254(共253个可用IP)
DOS命令:
for /l %i in (2,1,254) do netsh interface ip add address "本地连接" 188.82.136.%i 255.255.255.0
Linux服务器下批量添加ip地址
1,近入/etc/sysconfig/network-scripts目录,并且查看对应于的两个网关,看具体使用的是哪一个。命令如下:
cd /etc/sysconfig/network-scripts
ls
cat ifcfg-eth0
cat ifcfg-eth1
2,一般情况下,主ip在哪个文件下,就是使用的哪个文件。然后咱们要新建配置文件。
IPADDR_START=起始ip
IPADDR_END=结束ip
NETMASK=子网掩码参照文章一开始的参照表
BROADCAST=这个一般填这个ip段最大的ip也就是xxx.xxx.xxx.255
CLONENUM_START=这个是网络克隆接口的启始号,从0开始累加
例子一如下:
一台服务器有以下四个ip段,每个ip段61个ip,共计244个ip:
189.218.57.130-190
189.218.58.130-190
189.218.59.2-62
189.218.60.2-62
并且通过第一步查出主ip104.216.57.130在ifcfg-eth1这个配置文件,那么我们新建四个文件即可。
ifcfg-eth1-range0
ifcfg-eth1-range1
ifcfg-eth1-range2
ifcfg-eth1-range3
命令如下:
vi ifcfg-eth1-range0
文件内容
IPADDR_START=189.218.57.131
IPADDR_END=189.218.57.190
NETMASK=255.255.255.192
BROADCAST=189.218.57.255
CLONENUM_START=0
命令如下:
vi ifcfg-eth1-range1
文件内容
IPADDR_START=189.218.58.130
IPADDR_END=189.218.58.190
NETMASK=255.255.255.192
BROADCAST=189.218.58.255
CLONENUM_START=60
命令如下:
vi ifcfg-eth1-range2
文件内容
IPADDR_START=189.218.59.2
IPADDR_END=189.218.59.62
NETMASK=255.255.255.192
BROADCAST=189.218.59.255
CLONENUM_START=121
命令如下:
vi ifcfg-eth1-range3
文件内容
IPADDR_START=189.218.60.2
IPADDR_END=189.218.60.62
NETMASK=255.255.255.192
BROADCAST=189.218.60.255
CLONENUM_START=182
然后重启网络服务让IP生效:
service network restart
例子二如下:
服务器为257ip的服务器,主ip四个,默认已经绑定,其余的253个要求自己绑定,通过步骤一查出默认网关为ifcfg-eth1
服务器ip:128.109.161.2-128.109.161.254
命令如下:
vi ifcfg-eth1-range0
文件内容
IPADDR_START=128.109.161.2
IPADDR_END=128.109.161.254
NETMASK=255.255.255.0
BROADCAST=128.109.161.255
CLONENUM_START=4
然后重启网络服务让IP生效:
service network restart
有的时候需要填写更详细的信息
DEVICE=eth0 //实际使用的网卡名,如果不是eth0请按实际情况修改#
BOOTPROTO=static //表示静态IP
HWADDR=00:1c:c0:fd:0f:27 //网卡mac地址,查看机房默认绑定的那条ip,复制过来
IPADDR_START=173.245.176.2 //起始IP地址
IPADDR_END=173.245.176.62 //结束IP地址
CLONENUM_START=1 //网络克隆接口的启始号
NETMASK=255.255.255.192 //子网掩码,以实际为准
GATEWAY=173.245.17693 //网关ip
ONBOOT=yes //开机启用此网卡
TYPE=Ethernet
NO_ALIASROUTING=yes //这个参数的作用是数据包始终通过eth0进出,不走网卡别名(如eth0:0),设置这个参数可以加快路由的响应速度,所以强烈建议配置
]]>
ediplus2015
注册码:F8484-A11C8-0A020-614C7-7A215
EditPlus注册码在线生成
http://demon.tw/my-work/editplus-regcode-online.html
]]>
D:\ZkeysSoft\PhpMyAdmin\phpMyAdmin\libraries\config.default.php
第三步:修改IIS的applicationhost.config(先关闭iis,用服务器默认的记事本打开这个文件)
文件位置:
%windir%/system32/inetsrv/config/applicationhost.config
找到节点
该节点下默认没有
(上传的大小将改为2G)
第四步:进iis -- asp -- 限制属性 -- 最大请求实体主体限制 后面加几个零,然后保存,重启iis,既OK !
参照来源:
http://www.chinaz.com/web/2011/0309/163944.shtml
http://www.cnblogs.com/JKqingxinfeng/archive/2012/10/29/2744663.html
]]>
mkdir D:\www\a1.com
mkdir D:\www\a2.com
mkdir D:\www\a3.com
mkdir D:\www\a4.com
mkdir D:\www\a5.com
mkdir D:\www\a6.com
mkdir D:\www\a7.com
mkdir D:\www\a8.com
mkdir D:\www\a9.com
mkdir D:\www\a10.com
1.3、批量iis里面建站
%systemroot%\system32\inetsrv\APPCMD add site /name:a1.com /id:2 /bindings:http://a1.com:80,http://www.a1.com:80 /physicalPath:D:\www\a1.com
%systemroot%\system32\inetsrv\APPCMD add site /name:a2.com /id:3 /bindings:http://a2.com:80,http://www.a2.com:80 /physicalPath:D:\www\a2.com
%systemroot%\system32\inetsrv\APPCMD add site /name:a3.com /id:4 /bindings:http://a3.com:80,http://www.a3.com:80 /physicalPath:D:\www\a3.com
%systemroot%\system32\inetsrv\APPCMD add site /name:a4.com /id:5 /bindings:http://a4.com:80,http://www.a4.com:80 /physicalPath:D:\www\a4.com
%systemroot%\system32\inetsrv\APPCMD add site /name:a5.com /id:6 /bindings:http://a5.com:80,http://www.a5.com:80 /physicalPath:D:\www\a5.com
%systemroot%\system32\inetsrv\APPCMD add site /name:a6.com /id:7 /bindings:http://a6.com:80,http://www.a6.com:80 /physicalPath:D:\www\a6.com
%systemroot%\system32\inetsrv\APPCMD add site /name:a7.com /id:8 /bindings:http://a7.com:80,http://www.a7.com:80 /physicalPath:D:\www\a7.com
%systemroot%\system32\inetsrv\APPCMD add site /name:a8.com /id:9 /bindings:http://a8.com:80,http://www.a8.com:80 /physicalPath:D:\www\a8.com
%systemroot%\system32\inetsrv\APPCMD add site /name:a9.com /id:10 /bindings:http://a9.com:80,http://www.a9.com:80 /physicalPath:D:\www\a9.com
%systemroot%\system32\inetsrv\APPCMD add site /name:a10.com /id:11 /bindings:http://a10.com:80,http://www.a10.com:80 /physicalPath:D:\www\a10.com
1.4、批量建应用程序池(这个是针对建站的数量比较大整的,因为如果一个站一个应用程序池,站建的稍多,内存就会不够,网站会挂掉,得经常重启服务器,很蛋疼。)
%systemroot%\system32\inetsrv\APPCMD add apppool /name:AppPool1
%systemroot%\system32\inetsrv\APPCMD add apppool /name:AppPool2
%systemroot%\system32\inetsrv\APPCMD add apppool /name:AppPool3
%systemroot%\system32\inetsrv\APPCMD add apppool /name:AppPool4
%systemroot%\system32\inetsrv\APPCMD add apppool /name:AppPool5
1.5、修改应用程序池(我这里演示是每两个站共用一个程序池,实际建的量比较大时,可以几十个站共用一个应用程序池都是没问题的,当然如果你内存足够大,你一个站一个应用程序也未尝不可。)
%systemroot%\system32\inetsrv\APPCMD set site "a1.com" /applicationDefaults.applicationPool:"AppPool1"
%systemroot%\system32\inetsrv\APPCMD set site "a2.com" /applicationDefaults.applicationPool:"AppPool1"
%systemroot%\system32\inetsrv\APPCMD set site "a3.com" /applicationDefaults.applicationPool:"AppPool2"
%systemroot%\system32\inetsrv\APPCMD set site "a4.com" /applicationDefaults.applicationPool:"AppPool2"
%systemroot%\system32\inetsrv\APPCMD set site "a5.com" /applicationDefaults.applicationPool:"AppPool3"
%systemroot%\system32\inetsrv\APPCMD set site "a6.com" /applicationDefaults.applicationPool:"AppPool3"
%systemroot%\system32\inetsrv\APPCMD set site "a7.com" /applicationDefaults.applicationPool:"AppPool4"
%systemroot%\system32\inetsrv\APPCMD set site "a8.com" /applicationDefaults.applicationPool:"AppPool4"
%systemroot%\system32\inetsrv\APPCMD set site "a9.com" /applicationDefaults.applicationPool:"AppPool5"
%systemroot%\system32\inetsrv\APPCMD set site "a10.com" /applicationDefaults.applicationPool:"AppPool5"
如果是一般的asp程序,这个时候,得手动在应用程序的高级设置里,把启动32位应用程序改为true,有些程序,还得在asp设置里,启用父路径,否则网站会报错!(这个在IIS里面选择左边起始页下面的WIN-XXXX,然后双击右边的iis下面的asp,在这里启用父路径,所有网站都会继承,不然,建几百个,设置几百下,也会搞死你。其他的一些如默认文档什么的,也都在这里设置,会节省很多时间。)
二、 复制网站程序
2.1、在D盘下随便新建一个目录,并且把网站程序复制进去。我这里在D盘根目录下建了一个0828,在这个下面再建了个uplaod目录,把程序复制到upload目录。(因为我们后面涉及到批量整配置文件,也是放在0828目录下,所以再建个upload区分下)
2.3、批量准备好的配置文件,复制并解压到 0828中,我这里配置文件全部放在一个11的文件夹(这一步,如果你不需要批量修改配置文件可以去掉,但一般如果批量建的站量比较大,一个一个站登陆后台去修改配置文件,也会搞死,所以一般这步也还是必要的。)
2.4、拷贝网站程序
xcopy D:\0828\upload D:\www\a1.com /E /Y
xcopy D:\0828\upload D:\www\a2.com /E /Y
xcopy D:\0828\upload D:\www\a3.com /E /Y
xcopy D:\0828\upload D:\www\a4.com /E /Y
xcopy D:\0828\upload D:\www\a5.com /E /Y
xcopy D:\0828\upload D:\www\a6.com /E /Y
xcopy D:\0828\upload D:\www\a7.com /E /Y
xcopy D:\0828\upload D:\www\a8.com /E /Y
xcopy D:\0828\upload D:\www\a9.com /E /Y
xcopy D:\0828\upload D:\www\a10.com /E /Y
三、 修改配置文件
3.1、批量拷贝各个站的配置文件到各个网站。
xcopy D:\0828\11\a1.com.asp D:\www\a1.com\inc /Y
xcopy D:\0828\11\a2.com.asp D:\www\a2.com\inc /Y
xcopy D:\0828\11\a3.com.asp D:\www\a3.com\inc /Y
xcopy D:\0828\11\a4.com.asp D:\www\a4.com\inc /Y
xcopy D:\0828\11\a5.com.asp D:\www\a5.com\inc /Y
xcopy D:\0828\11\a6.com.asp D:\www\a6.com\inc /Y
xcopy D:\0828\11\a7.com.asp D:\www\a7.com\inc /Y
xcopy D:\0828\11\a8.com.asp D:\www\a8.com\inc /Y
xcopy D:\0828\11\a9.com.asp D:\www\a9.com\inc /Y
xcopy D:\0828\11\a10.com.asp D:\www\a10.com\inc /Y
3.2、删除程序里原先的配置文件config.asp
del D:\www\a1.com\inc\config.asp
del D:\www\a2.com\inc\config.asp
del D:\www\a3.com\inc\config.asp
del D:\www\a4.com\inc\config.asp
del D:\www\a5.com\inc\config.asp
del D:\www\a6.com\inc\config.asp
del D:\www\a7.com\inc\config.asp
del D:\www\a8.com\inc\config.asp
del D:\www\a9.com\inc\config.asp
del D:\www\a10.com\inc\config.asp
3.3、重命名配置文件
ren D:\www\a1.com\inc\a1.com.asp config.asp
ren D:\www\a2.com\inc\a2.com.asp config.asp
ren D:\www\a3.com\inc\a3.com.asp config.asp
ren D:\www\a4.com\inc\a4.com.asp config.asp
ren D:\www\a5.com\inc\a5.com.asp config.asp
ren D:\www\a6.com\inc\a6.com.asp config.asp
ren D:\www\a7.com\inc\a7.com.asp config.asp
ren D:\www\a8.com\inc\a8.com.asp config.asp
ren D:\www\a9.com\inc\a9.com.asp config.asp
ren D:\www\a10.com\inc\a10.com.asp config.asp
ok,接下来,解析域名就ok。如果是在godaddy注册的域名,可以批量把dns修改为dnspod.cn的dns,然后在网络上找个批量解析的软件或者脚本批量弄,实在不行,就一个一个去解析吧!前面那么复杂的步骤都搞定了,最近这一步咬牙也要搞定!(该流程原创作者为猴哥)]]>
insert into MAIN.[WebPost] (WebPostName,XmlData,ModifyOn) values ('a1.com','GB2312 2 马克斯 CMS4.0 视频 添加_更新(HTML) http://www.a1.com/admin zh-cn,cn,en,en-us 30 1023 ','2014/5/29 15:51:03');
insert into MAIN.[WebPost] (WebPostName,XmlData,ModifyOn) values ('a2.com','GB2312 2 马克斯 CMS4.0 视频 添加_更新(HTML) http://www.a2.com/admin zh-cn,cn,en,en-us 30 1023 ','2014/5/29 15:51:03');
文章模块插入sql
insert into MAIN.[WebPost] (WebPostName,XmlData,ModifyOn) values ('http://www.a1.com','GB2312 2 马克斯电影系统文章免登陆WEB在线发布模块--淘宝版 http://www.a1.com/admin zh-cn,cn,en,en-us 30 1023 ','2014/8/29 8:56:07');
insert into MAIN.[WebPost] (WebPostName,XmlData,ModifyOn) values ('http://www.a2.com','GB2312 2 马克斯电影系统文章免登陆WEB在线发布模块--淘宝版 http://www.a2.com/admin zh-cn,cn,en,en-us 30 1023 ','2014/8/29 8:56:07');
]]>https://chrome.google.com/webstore/detail/lastpass-free-password-ma/hdokiejnpimakedhajhdlcegeplioahd
功能强大,自从接触这块插件之后,再也没有为密码的事而烦恼过!只要记住这个一个主密码,其他密码全部用他保存,也用他生成,这样可以避免跟其他网站密码一样,出现一个站被脱裤,导致别人尝试破解出你在其他站的账号密码。
插件二:Pasty
下载安装地址:
https://chrome.google.com/webstore/detail/hdjihnnclpjhfdbbinmgoiehhoehhlgf
该插件,在我们要打开多个网站时很方便,只要复制到剪贴板,然后点下即可批量打开,即使是打开一个网站,也不用敲回车了,点下既新建一个标签打开该网站,只是有个小缺陷是,网站要带http:// ,没带着个的打不开。
插件三:Copy All Urls
下载安装地址:
https://chrome.google.com/webstore/detail/iiagcalhlpmgdipdcikkjiliaankcagj
这个可以把我们浏览器里打开的多个站的相关信息复制到剪切板,如title,url。强大之处在于可以自定义着个复制出来的数据格式!很好很强大,
插件四:Proxy SwitchySharp
https://chrome.google.com/webstore/detail/proxy-switchysharp/dpplabbmogkhghncfbfdeeokoefdjegm
翻墙代理神器,可以使用http,socks,pac,shadowsocks各种代理,简单方便,必备!!!]]>
Invalid system disk
Replace the disk, and then press any key
这个是由于VMware默认是第一次从光盘启动,第二次从硬盘启动,你刚分区,里面还没有系统,这个时候,我们需要进入BIOS里面进行设置,把光驱启动设置为第一启动项,进入虚拟机的BIOS,有两个方法,
1)重新启动虚拟系统,出现VMware界面的时候,快速按F2,这个方法要手脚快,而且要试多次,有点难度。
2)关闭虚拟机,找到虚拟机的文件夹,虚拟机名.vmx,在里面加一行代码
bios.forceSetupOnce = "TRUE"
再重启开启虚拟机,自动进入BIOS系统,你设置启动项即可。(这个文件设置,在你进入BIOS系统后,他会自动修改为FLASE,所以你不用担心每次都进入BIOS系统了。)
设置好BIOS保持退出,系统自动进入安装界面,这个时候我们选择安装系统到c盘即可。
安装完毕之后,再次重启还是会进入安装界面,应该我们的第一启动项是关盘,所以呢,你得再次按照我们前面所讲的方法进入BIOS系统,把硬盘启动移动到第一启动项。保存退出即可。
到此基本ok,为了我们使用方便,最好是安装下VMware tools:
先确保咱要安装VMware tools的虚拟机是开启的,然后选择 虚拟机-安装VMware tools
再进虚拟机我的电脑,在可移动存储盘的设备里,可以看到 VMware tools,双击进入,选择setup.exe(如果你没把:我的电脑-工具-文件夹选项-查看-隐藏已知文件类型的扩展名的√去掉,那选择setup)安装即可。
安装VMware tools有个好处是鼠标可以直接从虚拟机里移进移出,而不用按Ctrl+Alt切换了。]]>