debian 9 配置cgi

debian 9
apt update
apt install apache2
ln -s /etc/apache2/mods-available/cgid.conf /etc/apache2/mods-enabled/cgid.conf
ln -s /etc/apache2/mods-available/cgid.load /etc/apache2/mods-enabled/cgid.load
修改/etc/apache2/conf-available/serve-cgi-bin.conf
<IfDefine ENABLE_USR_LIB_CGI_BIN>
                ScriptAlias /cgi-bin/ /var/www/html/cgi-bin/
                <Directory "/var/www/html/cgi-bin">
                        AllowOverride None
                        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                        Require all granted
                        AddHandler cgi-script .cgi .py .sh
                </Directory>
</IfDefine>
添加/etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:80>
ServerName t.xxx.com
DocumentRoot /var/www/html
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/html/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /var/www/html/cgi-bin/
<Directory "/var/www/html/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
Include /etc/apache2/conf-available/serve-cgi-bin.conf
</VirtualHost>
https://www.jianshu.com/p/10e371c4e78a
apt update
apt install apache2
sudo a2enmod cgi
perl -MCPAN -e shell
install CGI
install LWP::UserAgent
修改/var/www/html/cgi-bin/Modules/CGI.pm 496行
defined(@QUERY_PARAM)改为(@QUERY_PARAM)
service apache2 restart

Docker

  • Docker可以认为是vmware或者virtualbox
  • 镜像可以认为是 xxx.iso
  • 容器可以认为是 virtualbox运行xxx.iso后的系统

查看容器

docker ps -a

root@li1041-243:~# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c3686838ba3d danielguerra/ubuntu-xrdp "/usr/bin/docker-ent…" 6 hours ago Up 6 hours 0.0.0.0:3389->3389/tcp, 9001/tcp, 0.0.0.0:2222->22/tcp uxrdp

进入已经停止运行的容器

docker start container ID

docker attach container ID

把修改或运行后的容器再打包为镜像(ISO)

  1. 退出容器
  2. 查看容器 docker ps -a
  3. 把容器打成镜像sudo docker commit -p c3686838ba3d vpsxyz/xrdp:20190218
  • c3686838ba3d 是容器的id
  • vpsxyz 是你注册的https://store.docker.com/的名字,如果你没有的话,那需要先注册
  • xrdp 是你为该镜像起的名字
  • :20190218 是镜像的版本号,默认是latest版本

root@li1041-243:~# sudo docker commit c3686838ba3d vpsxyz/xrdp:20190218
sha256:f66eb34fb39558f5ae2d28952befb877be03130ad067435416bf61d8f4e09523

当做完操作需要保存时再开一个窗口

root@li1041-243:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ecb1e3a329fd vpsxyz/vpsxyz:v02 "/startup.sh" 6 minutes ago Up 6 minutes (healthy) 22/tcp, 0.0.0.0:5900->5900/tcp, 0.0.0.0:6080->80/tcp quizzical_heyrovsky
root@li1041-243:~# docker commit ecb1e3a329fd vpsxyz/vpsxyz:v02
sha256:30665ee9da7242b9e7164d181a5af7706ff1ff9908592f1e0637f33baf4ffc70
r

4.查看镜像docker images

root@li1041-243:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
vpsxyz/xrdp 20190218 f66eb34fb395 About a minute ago 1.28GB
danielguerra/ubuntu-xrdp latest 44bd892742f7 4 weeks ago 981MB

相比原镜像多了些软件,大小变大了.

上传镜像

登录

docker login

上传

docker push vpsxyz/xrdp:20190218

OK!

再次使用该镜像就可以直接docker pull vpsxyz/xrdp:20190218

 

另一台服务器上:

抓取 image 文件

docker pull vpsxyz/xrdp:20190218

查看镜像

docker image ls

运行抓取到的镜像

会从 image 文件,生成一个正在运行的容器实例。(新建容器)

docker container run vpsxyz/xrdp:20190218

如果已经运行过,生成了容器,想要运行则是:

docker container start vpsxyz/xrdp:20190218

也可以直接省略上面的步骤

docker pull vpsxyz/xrdp:20190218

有些容器会自动终止,有些不会自动终止

终止容器

docker container kill [containID]

image 文件生成的容器实例,本身也是一个文件,称为容器文件。也就是说,一旦容器生成,就会同时存在两个文件: image 文件和容器文件。而且关闭容器并不会删除容器文件,只是容器停止运行而已。

列出本机所有容器,包括终止运行的容器

docker container ls --all

删除终止运行的无用的容器文件(节约硬盘空间)

docker container rm [containerID]

从正在运行的 Docker 容器里面,将文件拷贝到本机

容器与主机之间的数据拷贝。

docker container cp [containID]:[/path/to/file] /local/path/file

**********************************************************************

**********************************************************************

Docker 最低支持 CentOS 7
使用脚本自动安装
curl -sSL https://get.docker.com/ | sh

service docker start

docker pull ubuntu:16.04
启动容器ubuntu里面的 bash 并且进行交互式操作
docker run -it ubuntu:16.04 bash

通过 exit 退出了这个容器

列出镜像
docker images

导出容器
docker ps -a

docker export 7691a814370e > ubuntu.tar

python3 -m http.server 8080

python -m SimpleHTTPServer 8080
导入容器快照
cat ubuntu.tar | sudo docker import - test/ubuntu:v1.0

默认情况下Docker的存放位置为:/var/lib/docker
可以通过下面命令查看具体位置:
docker info | grep "Docker Root Dir"

修改Docker本地镜像与容器的存储位置
service docker stop

mkdir -p /data
mv /var/lib/docker /data/docker
ln -s /data/docker /var/lib/docker

 

 

 

curl -sSL https://get.docker.com/ | sh
service docker start

docker run -p 6080:80 -p 5900:5900 -e VNC_PASSWORD=mypassword dorowu/ubuntu-desktop-lxde-vnc:bionic

docker ps -a
sudo docker commit -p b35dfe5324e8 vpsxyz/xrdp:20190218
docker push vpsxyz/xrdp:20190218

docker run -p 6080:80 -p 5900:5900 --add-host=account.jetbrains.com:0.0.0.0 -e VNC_PASSWORD=xxx vpsxyz/vpsxyz:v03

SQL服务器搭建

Ubuntu 16.04.2 LTS

sudo apt-get update
sudo apt-get install apache2
sudo systemctl restart apache2

sudo apt-get install mysql-server
mysql_secure_installation
sudo apt-get install php libapache2-mod-php php-mcrypt php-mysql
sudo apt install unzip
#sudo apt-get install php-mbstring

cd /var/www/html/
wget https://files.phpmyadmin.net/phpMyAdmin/4.7.6/phpMyAdmin-4.7.6-all-languages.zip
unzip -x *.zip
mv phpMyAdmin-4.7.6-all-languages phpmyadmin
sudo systemctl restart apache2

/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT

1.ping 远程地址 判断远端服务网络正常

2.telnet 远程地址 端口号,拒绝了访问3306端口
telnet 192.168.99.100 3306

3.
vi /etc/mysql/mysql.conf.d/mysqld.cnf
修改MySQL配置文件,将bind_address = 127.0.0.1注释掉或修改成0.0.0.0
sudo /etc/init.d/mysql restart

netstat -an|grep 3306
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN

4.编辑后重启mysql ,再次查看3306端口
telnet 192.168.99.100 3306

5.授权访问,
用root身份登录到mysql,使用grant命令分配权限,
如果操作所有库就把 database_name.* 改成 *.* ,user_name是用户名,%是所有ip地址可访问,
如果限制固定ip访问就改成ip,user_password是密码,
mysql -uroot -p
mysql> grant all on database_name.* to user_name@'%' identified by 'user_password';
mysql> flush privileges; #让权限立即生效
mysql> exit;

开启慢查询
mysql -uroot -p
set global slow_query_log=ON;
set global long_query_time=1;
set global log_queries_not_using_indexes = 1;
将字符编码设置为UTF-8
set character_set_database=utf8;
set character_set_server=utf8;

show variables like '%char%';

mysql> show variables like '%char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

phpmyadmin
Users overview
User name Host Password Global privileges Grant
root % Yes ALL PRIVILEGES Yes

客户端连接:

mysql -u 用户名 -p密码 -h 服务器IP地址 -P 服务器端MySQL端口号 -D 数据库名

注意:
(1)服务器端口标志-P一定要大些以区别于用户-p,如果直接连接数据库标志-D也要大写;
(2)如果要直接输入密码-p后面不能留有空格如-pmypassword;
(3)命令结束段没有';'分号。

例子:
mysql -u lzpddd -pmypassword -h 192.168.1.88 -P 3306 -D mydb

闲置服务器的CPU算力挖XMR

Centos 6

矿池:xmr.nanopool.org

yum -y install epel-release
yum -y install centos-release-scl cmake3 hwloc-devel libmicrohttpd-devel openssl-devel
yum -y install devtoolset-4-gcc*
yum -y install git
scl enable devtoolset-4 bash
git clone https://github.com/fireice-uk/xmr-stak-cpu xmr-stak
cd xmr-stak

#调整百分之二的开发者捐赠
sed -i 's/2.0/0.0/g' donate-level.h
cmake3 .
make install

cd /root/xmr-stak/bin
先运行一遍
./xmr-stak-cpu

会给出推荐的CPU配置信息,将它编辑进config.txt,并填写钱包地址、矿池地址、Payment ID等信息
httpd_port 设置http访问端口,可以用网页查看矿机状态

"cpu_threads_conf" :
[
{ "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 0 },
{ "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 1 },
{ "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 2 },
{ "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 3 },
],
"pool_address" : "xmr-eu1.nanopool.org:14444",
"wallet_address" : "42bhDV2R5zF4KkQ5maiwJCiiwxckdhTcqEFGgwggbr938TXNC5Di6d8jXqrT3anyZ22j7DEE74GkbVcQFyH2nNiC3fpvU7j.0648b3bdea5e2d3a63bb2bbb9ee7592abab7728bc93e18d3ddac22c21937fed8",
"pool_password" : "x",
"httpd_port" : 3128,
正式运行:
./xmr-stak-cpu
EDIT: 关于Payment ID:
openssl rand -hex 32

EDIT: 关于Linux下挖矿出现MEMORY ALLOC FAILED: mmap failed
解决方案:
sysctl -w vm.nr_hugepages=128
echo "* soft memlock 262144" >> /etc/security/limits.conf
echo "* hard memlock 262144" >> /etc/security/limits.conf
reboot

编译好的绿色版(centos 6 x64)

bin

DD windows

KS3B 2T

wget -O- https://down.zhujiwiki.com/windows-dd/Windows7-Joodle-Template.gz |gunzip|dd of=/dev/sda

Username: Admin
Password: Password147

7欧SSD
wget -O- 'https://down.tn/Windows/ISO/Win2012R2CN.gz' | gunzip | dd of=/dev/sda
用户:Administrator
密码:Laiboke.com

20欧
wget -O- 'https://down.tn/Windows/ISO/DD-Joodle/Windows2012R2-Joodle-Template.gz' | gunzip | dd of=/dev/sda
用户:Administrator
密码:Password147

 

http://windowstemplate.com/

 

Nginx 反向代理 https 网站

Nginx SSL反向代理

反代部分参考:http://vpsxyz.com/archives/358

 

apt-get -y install git
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto certonly --standalone --email admin@xxx.com -d xxx.com

./certbot-auto certonly --standalone --email admin@xxx.com -d xxx.com

在完成Let's Encrypt证书的生成之后,我们会在"/etc/letsencrypt/live/xxx.com/"域名目录下有4个文件就是生成的密钥证书文件。
cert.pem - Apache服务器端证书
chain.pem - Apache根证书和中继证书
fullchain.pem - Nginx所需要ssl_certificate文件
privkey.pem - 安全证书KEY文件

Let's Encrypt证书是有效期90天的
30 2 * * 1 ./letsencrypt-auto certonly --renew-by-default --email admin@xxx.com -d xxx.com

示例:

xxx.com

wget http://www.openssl.org/source/openssl-1.0.1e.tar.gz
tar zxvf openssl-1.0.1e.tar.gz

cd /root/nginx-1.2.8
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6 --with-http_sub_module --add-module=/root/ngx_http_substitutions_filter_module --with-openssl=/root/openssl-1.0.1e --with-openssl-opt="enable-tlsext"

确认已经开启 TLS SNI
nginx -V

 

netstat -lntp
查看是不是被其他软件占用了 80 端口
停止 Apache2
service apache2 stop
kill -9 $(ps -ef|grep "apache2"|grep -v "grep"|awk '{print $2}')
取消开机自启动,仅限 Debian/Ubuntu 系统
update-rc.d -f apache2 remove
卸载 Apache2
apt-get remove --purge apache2

通过 SSH 挂载远程的 Linux 文件系统或者目录

yum install epel-release

yum install sshfs
mkdir /remote
sshfs root@62.210.244.157:/data/ /remote

CentOS 安装远程桌面环境 VNC Server

 

nginx 只允许特定IP访问

1.单独网站屏闭IP的方法:

在server”{}”,在这个大括号内加入deny IP地址是限制某IP地址访问;allow IP地址是只允许某IP地址访问;

如:

allow 203.137.116.106;

allow 118.0.0.0/8;
deny all;

2.全局屏蔽

首先建立下面的配置文件放在nginx的conf目录下面,命名为blocksip.conf。比如我们要拒绝ip:
deny 118.114.245.37;
保存一下。
在nginx的配置文件nginx.conf中加入:include blocksip.conf;
重启一下nginx的服务就可以生效了。

Nginx 反向代理以及正则替换内容

如果是为了隐藏源站IP而使用Nginx 反向代理,可以将源站域名替换为一个不存在的子域名,然后在代理机上vi /etc/hosts,将这个不存在的子域名指向源站IP。

安装nginx

cd /root
apt-get update
apt-get install -y git gcc g++ make automake
sudo apt-get install libpcre3 libpcre3-dev
sudo apt-get install openssl libssl-dev

apt-get install zlib1g-dev

或者

yum -y install pcre-devel openssl openssl-devel

git clone https://github.com/yaoweibin/ngx_http_substitutions_filter_module
wget http://nginx.org/download/nginx-1.2.8.tar.gz
tar zxvf nginx-1.2.8.tar.gz
cd nginx-1.2.8
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6 --with-http_sub_module --add-module=/root/ngx_http_substitutions_filter_module
make
make install

修改nginx.conf,配置反向代理以及替换内容

添加缓存文件夹
mkdir /home/cache/path -p
mkdir /home/cache/temp
chmod 777 -R /home/cache

cd /usr/local/nginx/conf/

新增虚拟主机配置:
vi /usr/local/nginx/conf/vhosts/xxx.com.conf

修改nginx.conf
#在 http 配置节的结束花括号 } 前一行加入如下语句
include /usr/local/nginx/conf/vhosts/*;

创建www这个用户
/usr/sbin/groupadd -f www
/usr/sbin/useradd -g www www

查看配置文件是否正确

由于系统默认会查找/usr/bin下的命令

ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
/usr/local/nginx/sbin/nginx -t

重新加载 Nginx配置文件

service apache2 stop

sudo nginx -c /usr/local/nginx/conf/nginx.conf
sudo nginx -s reload

示例:

xxx-com

nginx

 

替换规则

subs_filter_types text/html text/css text/xml;
subs_filter st(\d*).example.com $1.example.com ir;
subs_filter a.example.com s.example.com;

*subs_filter* 是用来替换文本的,可以使用正则
* *g*(默认):替换匹配项。
* *i*:区分大小写的匹配
* *o*: 只匹配发现的第一个。
* *r*: 正则。

oneinstack添加ngx_http_substitutions_filter_module:

nginx -V
cd /root/oneinstack/src
tar zxvf nginx-1.14.2.tar.gz
tar zxvf pcre-8.42.tar.gz
tar zxvf openssl-1.1.1a.tar.gz
cd nginx-1.14.2
./configure --user=www --group=www --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_v2_module --with-http_ssl_module --with-http_gzip_static_module --with-http_realip_module --with-http_flv_module --with-http_mp4_module --with-openssl=../openssl-1.1.1a --with-pcre=../pcre-8.42 --with-pcre-jit --with-ld-opt=-ljemalloc --add-module=/root/ngx_http_substitutions_filter_module
make && make install
覆盖原nginx文件
service nginx stop
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
cp /root/oneinstack/src/nginx-1.14.2/objs/nginx /usr/local/nginx/sbin/
service nginx start

vi /etc/hosts
kill -9 $(ps -ef|grep "nginx"|grep -v "grep"|awk '{print $2}')
/usr/local/nginx/sbin/nginx -t
nginx -c /usr/local/nginx/conf/nginx.conf
nginx -s reload