点滴记录
自古成功在尝试。

Ubuntu 18+开启Google BBR的方法

cx阅读(190)

GoogleBBR算法需要linux内核为4.9+,Ubuntu18中内核版本为4.15,直接符合开启bbr的要求,只需要简单的两步即可开启BBR算法。

vim /etc/sysctl.conf

#添加
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr

# 生效配置
sysctl -p

查看BBR算法时候是否开启

lsmod | grep bbr

如果又状态信息,即为开启成功1

Git基本使用命令记录

cx阅读(214)

最近在学习git使用方法,颇有收获,总结一些常用的命令。

git init
创建git仓库 默认主机名为orgin

git clone url
克隆远程仓库
git clone -o 主机名 url
克隆远程仓库并命名主机民为主机名

查看远程仓库
git remote

添加远程仓库
git remote add pb https://github.com/paulboone/ticgit

git fetch [remote-name]
这个命令会访问远程仓库,从中拉取所有你还没有的数据。 执行完成后,你将会拥有那个远程仓库中所有分支的引用,可以随时合并或查看。

git add filename
跟踪项目
git commit -m “”
提交说明信息

git push orgin 版本名
推送

git branch 分支名
创建分支

git branch -d 分支名
删除本地分支

git push 主机名 –delete 分支名
删除远程分支,需通过push远程操作命名

git branch -v
显示本地以及远程仓库的分支

git checkout 分支名
切换分支

git fetch –all
git reset –hard origin/master
git pull
强制从远程仓库同步到本地

git fetch 主机名 分支名
取回远程主机分支

git merge 分支名
获取分支的改动

pull = fetch + merge

git log –pretty=oneline 文件名
查看文件的修改历史 可以得到xxxxxxxxxx
git show xxxxxxxxxxxx
查看某次修改的内容

git checkout -b 分支名 主机名、分支名
创建分支,其实节点为远程的分支

git ls-files –stage
查看已经在缓存区的文件

git rm 文件名
会删除本地和缓存的文件,但不会删除远程的文件容易出错

git checkout HEAD –data

其他正在学习中,本文会持续更新。

Centos虚拟主机添加配置swap,增加性能

cx阅读(216)

工作中,我们常常在使用虚拟机中,发现内存不够用。尤其数据库经常因为内存不足而down掉。这时候我们就需要swap来零时救济一把。本文记录了设置swap的方法。
1. 查看分区状况

free -m

#如下
total        used        free      shared  buff/cache   available
Mem:           1839         190         219           4        1428        1447
Swap:             0           0           0

2. 配置swap 2G的空间

dd if=/dev/zero of=/var/swap bs=1024 count=2048000
#会提示创建信息

3. 设置交换文件

mkswap /var/swap

4. 启用交换空间

swapon /var/swap 

5. 关闭交换空间

swapoff /var/swap

PHP7.0连接mysql一些小问题

cx阅读(193)

今天在使用php7.x编译版本时,遇到了无法连接mysql的问题。

//错误如下:
Message: mysqli::real_connect(): (HY000/2002): No such file or directory

Google后发现,有多种原因,某些时候某些系统或者php版本等。。mysql中获取所需套接字文件的位置有点不对。

//修改连接是使用localhost...全都改成127.0.0.1(改成v4地址即可。)
$con = mysqli_connect('127.0.0.1','root','','mysql');
if ($con) { echo 'connect ok !';}

ps:PHP7.0很多模块默认都是关闭的,需要手动开启。连接不上数据库出错,可能也会出错哦!

解决Openssl升级到1.1.0使用shadowsocks服务报错问题

cx阅读(451)

本文记录ss无法在linux系统中openssl版本为1.1.0及以上,无法使用的解决方法。

运行服务报错如下:

INFO: loading config from /ss/ss.json
2018-03-08 15:29:53 INFO     loading libcrypto from libcrypto.so.1.1
Traceback (most recent call last):
  File "/usr/local/bin/sslocal", line 11, in 
    sys.exit(main())
  File "/usr/local/lib/python2.7/dist-packages/shadowsocks/local.py", line 39, in main
    config = shell.get_config(True)
  File "/usr/local/lib/python2.7/dist-packages/shadowsocks/shell.py", line 262, in get_config
    check_config(config, is_local)
  File "/usr/local/lib/python2.7/dist-packages/shadowsocks/shell.py", line 124, in check_config
    encrypt.try_cipher(config['password'], config['method'])
  File "/usr/local/lib/python2.7/dist-packages/shadowsocks/encrypt.py", line 44, in try_cipher
    Encryptor(key, method)
  File "/usr/local/lib/python2.7/dist-packages/shadowsocks/encrypt.py", line 83, in __init__
    random_string(self._method_info[1]))
  File "/usr/local/lib/python2.7/dist-packages/shadowsocks/encrypt.py", line 109, in get_cipher
    return m[2](method, key, iv, op)
  File "/usr/local/lib/python2.7/dist-packages/shadowsocks/crypto/openssl.py", line 76, in __init__
    load_openssl()
  File "/usr/local/lib/python2.7/dist-packages/shadowsocks/crypto/openssl.py", line 52, in load_openssl
    libcrypto.EVP_CIPHER_CTX_cleanup.argtypes = (c_void_p,)
  File "/usr/lib/python2.7/ctypes/__init__.py", line 375, in __getattr__
    func = self.__getitem__(name)
  File "/usr/lib/python2.7/ctypes/__init__.py", line 380, in __getitem__
    func = self._FuncPtr((name_or_ordinal, self))
AttributeError: /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1: undefined symbol: EVP_CIPHER_CTX_cleanup

错误原因:

openssl升级到1.1.0以上版本,导致shadowsocks启动报undefined symbol: EVP_CIPHER_CTX_cleanup错误。
因为在openssl1.1.0版本中,废弃了EVP_CIPHER_CTX_cleanup函数,如官网中所说

EVP_CIPHER_CTX was made opaque in OpenSSL 1.1.0. As a result, EVP_CIPHER_CTX_reset() appeared and EVP_CIPHER_CTX_cleanup() disappeared. 
EVP_CIPHER_CTX_init() remains as an alias for EVP_CIPHER_CTX_reset().

解决方法如下:

#编辑shadowsocks运行文件中openssl.py文件,目录在/usr/local/lib/python2.7/后有所不同
vim /usr/local/lib/python2.7/dist-packages/shadowsocks/crypto/openssl.py

#查找所有的cleanup函数,改为reset函数
#小编共找到两个cleanup函数,一个在52行,一个在111行。

重启服务,一切正常。。。

Linux中使用PostFix服务,并发送邮件

cx阅读(312)

本文记录使用Postfix发送电子邮件
1、域名添加相关解析

记录类型 主机记录 记录值
A @ A.B.C.D
A mail A.B.C.D
MX @ test.com

2、安装postfix服务

apt-get install postfix
#安装telnet服务使用postfix
apt-get install telnet

3、修改postfix配置

vim /etc/postfix/main.cf

//本地主机名(设置为A记录中的值)
myhostname = mail.test.com
//本地域(设置为A记录中的值)
mydomain = test.com
//本地寄出邮件域
myorigin = $mydomain
//设置监听的网卡
inet_interfaces = all
//可接收邮件的主机名和域名
mydestination = $myhostname, $mydomain

4、创建用户

useradd xxx
passwd xxx

5、重新启动postfix服务

service postfix restart

5、本地发送测试邮件

telnet 127.0.0.1 25

Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
220 mail.test.com ESMTP Postfix
//设置发信人
mail from:xxx@test.com
250 2.1.0 Ok
//设置收信人
rcpt to:root@test.com
250 2.1.5 Ok
//书写邮件内容,以回车.回车结束书写
data
354 End data with .
Hello i iam xxx;
.
250 2.0.0 Ok: queued as E155B40051
//退出
quit

5、查看邮件

mail

Heirloom Mail version 12.5 7/5/10.  Type ? for help.
"/var/spool/mail/root": 1 message 1 new
>N  1 xxx@test.com          Tue Mar  6 09:23  16/438 

//输入编号
&1

Message  1:
From xxx@test.com  Tue Mar  6 09:23:57 2018
Return-Path: 
X-Original-To: root@test.com
Delivered-To: root@test.com
Date: Tue,  6 Mar 2018 09:23:28 +0800 (CST)
From: xxx@test.com
Status: R

Hello i iam xxx;

//退出
&quit

Linux下网站数据,数据库等备份懒人shell脚本

cx阅读(230)

在linux中搭建个人博客后,一般情况下不会经常登入终端器,本文记录一些方案,方便我们备份网站的数据和数据库

linux中写脚本,首选当然是shell了呀

思路:
需要每天备份一次数据库和网站源文件和多媒体等。
每天备份的数据存在不同文件夹下,文件夹以日期命名。
当数据存放大于五天后,删除数据。
最后添加到crond进程中。

#!/bin/sh

path="/backup/`date +%Y-%m-%d`"
agopath="/backup/`date -d "5 days ago" +%Y-%m-%d`"
#echo $agopath
#echo $(ls $path)

if [ ! -d $path ];then
        mkdir $path
fi

mysqldump -uroot -ppasswod cx_wp > $path"/databasename.sql"

#我的源文件在根目录下所以到根下操作tar
cd /
tar -czf $path"/web.tar.gz" web

if [ -d $agopath ];then
        rm -rf $agopath
fi

Debian中安装vsftp启用ftp功能及多功能配置

cx阅读(249)

本文记录Debian中ftp服务,vsftp软件的安装和使用

1、安装vsftp

apt-get install vsftpd
#启动vsftp
service vsftpd start

2、启用匿名连接,匿名上传等功能

#编辑/etc/vsftpd.conf

#开启匿名用户,并赋予写入权限
anonymous_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES

#要给默认文件夹设置777权限呦


#限制用户在自己默认目录下读写

#关闭匿名访问
anonymous_enable=NO
#YES:userlist_file文件中列举的用户不能访问ftp服务,NO:只允许userlist_file文件中的用户可访问ftp
userlist_deny=YES
#定义userlist_file文件路径
userlist_file=/etc/vsftpd/user_list
#将用户禁锢在自己的家目录
chroot_local_user=YES
#对家目录总是有写权限
allow_writeable_chroot=YES
pam_service_name=ftp

#重启服务
service vsftpd restart

Linux中Apache安装与多功能配置

cx阅读(257)

本文记录Apache在linux中的安装和配置。

1、安装apache


#debian系列的apache服务目前名称为apache2
apt-get install apache2

#centos为httpd,下面配置信息有所区别,大体不变
yum install httpd

2、apache开启多站点和多主机


#在apache配置文件中修改
vim /etc/apache/apache2.conf

<Directory 站点目录>
      Options Indexes FollowSysmLinks
      AllOverride None
      Require all granted
</Directory>

#配置对应的站点配置信息目录
vim /etc/apache2/sites-available/000-default.conf

<VirtualHost *:80>
        ServerName 域名
        DocumentRoot 站点目录
</VirtualHost>

3、apache2设置用户认证


#开启url重写功能,在配置文件中修改
vim /etc/napache2/apache2.conf

<Directory 站点目录>
        Options Indexes FollowSymLinks
        #设置为All,使.htaccess文件内的内容全部生效
        AllowOverride All
        Require all granted
</Directory>

#创建.htaccess隐藏文件
vim /站点目录/.htaccess

AuthName "sys"
AuthType Basic
AuthUserFile /站点目录/.htpasswd
require user 用户名

#创建.htpasswd文件
touch /站点目录/.htpasswd

#添加用户
htpasswd -c /站点目录/.htpasswd 用户名

3、apache中配置https


#也需要开启url重写功能,在配置文件中修改
vim /etc/napache2/apache2.conf

<Directory 站点目录>
        Options Indexes FollowSymLinks
        #设置为All,使.htaccess文件内的内容全部生效
        AllowOverride All
        Require all granted
</Directory>

#对应站点配置信息修改
vim /etc/apache2/sites-available/000-default.conf

<VirtualHost *:443>
        ServerName 域名
        SSLEngine on
        SSLCertificateFile crt文件目录
        SSLCertificateKeyFile key文件目录
        DocumentRoot 站点目录
</VirtualHost>

#配置url重定向使访问http跳转值https
vim /站点目录/.htaccess

RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R]


#开启ssl支持、重启服务
a2enmod rewrite
a2enmod ssl
service apache2 restart

over!

Debian中挂载多张光盘为下载源

cx阅读(230)

Debian在没有网络环境下安装,apt源有严重的缺失。本文记录如何挂载多张cd作本地下载源。

debian官方镜像中,一个系统版本分为多个iso文件,编号为1的主要系统安装文件,其他盘可以在安装过程中扫入,不过相对比较麻烦。这里介绍一种简单方法。

环境为虚拟机:
添加挂载cd,这里举例3个。

#挂载后使用ls -h查看
ls -l /dev |grep cdrom

#挂载后应该出现如下
root@cx201:/# ls -l /dev |grep cdrom
lrwxrwxrwx 1 root root           3 2月  28 17:23 cdrom -> sr0
crw-rw---- 1 root cdrom    21,   1 2月  28 17:23 sg1
crw-rw---- 1 root cdrom    21,   2 2月  28 17:23 sg2
crw-rw---- 1 root cdrom    21,   3 2月  28 17:23 sg3
brw-rw---- 1 root cdrom    11,   0 2月  28 17:23 sr0
brw-rw---- 1 root cdrom    11,   1 2月  28 17:23 sr1
brw-rw---- 1 root cdrom    11,   2 2月  28 17:23 sr2

#sro,sr1,sr2为挂载的3张光盘

挂载cd

#建立3个文件夹接受挂载
mkdir /mnt/cd0
mkdir /mnt/cd1
mkdir /mnt/cd2

mount /dev/sr0 /mnt/cd0
mount /dev/sr1 /mnt/cd1
mount /dev/sr2 /mnt/cd2

添加apt下载源

#修改
vim /etc/apt/sources.list

#添加
deb file:///mnt/cd0 stretch main contrib
deb file:///mnt/cd1 stretch main contrib
deb file:///mnt/cd2 stretch main contrib

#升级下载源即可
apt-get update