Category : Linux 技术

重启远程主机的桌面以及剪切板

 


反代网站出现 500 Internal Server Error

多半是磁盘满了,检查/usr/local/nginx/logs文件夹

du -h --max-depth=1 /usr/local/nginx/logs
cat /dev/null > /usr/local/nginx/logs/access.log
cat /dev/null > /usr/local/nginx/logs/error.log

可以在计划任务里面加入

3 3 * * * cat /dev/null > /usr/local/nginx/logs/access.log
5 3 * * * cat /dev/null > /usr/local/nginx/logs/error.log


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)
chown -R www-data:www-data /var/www/html
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

wget -O- 'https://xxx.com/Windows10-x64-LTSC-Nic-Tomy.vhd.gz' | gunzip | dd of=/dev/sda

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