分类 Linux 下的文章

公司内部服务器使用新版本Ubuntu系统,发现IP地址配置与之前版本有差别。

以下是新版本修改方法.

  1. 进入系统之后注意看欢迎页的自动分配的IP地址(使用的网卡、与IP地址段)。
Welcome to Ubuntu 18.04.1 LTS (GNU/Linux 4.15.0-36-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Mon Oct  8 15:05:45 CST 2018

  System load:  0.0                Processes:           202
  Usage of /:   1.2% of 915.40GB   Users logged in:     0
  Memory usage: 8%                 IP address for eno1: 10.1.1.66
  Swap usage:   0%
  1. 编辑 /etc/netplan/50-cloud-init.yaml
$ vim /etc/netplan/50-cloud-init.yaml


network:
    ethernets:
        eno1:
            addresses: [10.1.1.66/24]
            gateway4: 10.1.1.1
            dhcp4: true
            nameservers:
                    addresses: [8.8.8.8, 114.114.114.114]
    version: 2

保存退出.

  1. 应用新配置文件
$ sudo netplan apply

闲来无事,将闲置VPS搭建一个私有云。

所需配置

  • vps主机一台
  • oneinstack 安装包
  • owncloud 安装包

步骤

  • 安装oneinstack(略)

    1. 安装mysql
    2. 安装PHP
    3. 安装Nginx/Apache (owncloud 默认使用Apache做web服务器、如果使用Nginx需要修改NGINX配置、见下文)
    4. 安装Redis/Memcache(解决内存太小问题、提升访问速度)
  • 安装owncloud

    > 当前最新地址 https://download.owncloud.org/community/owncloud-10.0.9.tar.bz2
    
    #下载owncloud安装包
    $ wget https://download.owncloud.org/community/owncloud-10.0.9.tar.bz2
    #解压文件
    $ tar -jxf owncloud-10.0.9.tar.bz2
    #拷贝文件至/data/wwwroot/
    $ mkdir /data/wwwroot/owncloud && cp -r owncloud/* /data/wwwroot/owncloud/
    #以上有一处坑点!cp命令复制的时候回忽略.开头的文件 .htaccess .usr.ini 这两个文件需要手动移动至目标文件夹
  • 接下来创建对应的数据库和用户(略)
  • 使用./vhost.sh创建虚拟主机(oneinstack)
  • 依据文档修改nginx配置

附上简略nginx配置

server {
  listen 80;
  listen 443 ssl http2;
  ssl_certificate /usr/local/nginx/conf/ssl/fuck.crt;
  ssl_certificate_key /usr/local/nginx/conf/ssl/fuck.key;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
  ssl_prefer_server_ciphers on;
  ssl_session_timeout 10m;
  ssl_session_cache builtin:1000 shared:SSL:10m;
  ssl_buffer_size 1400;
    # add_header Strict-Transport-Security max-age=15768000;
    # Add headers to serve security related headers
    # Before enabling Strict-Transport-Security headers please read into this topic first.
    add_header Strict-Transport-Security "max-age=15552000; includeSubDomains";
    add_header X-Content-Type-Options nosniff;
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Robots-Tag none;
    add_header X-Download-Options noopen;
    add_header X-Permitted-Cross-Domain-Policies none;

    # set max upload size
    #      client_max_body_size 512M;
    #      fastcgi_buffers 8 4K;                     # Please see note 1
    #      fastcgi_ignore_headers X-Accel-Buffering; # Please see note 2
    error_page 403 /core/templates/403.php;
    error_page 404 /core/templates/404.php;
  ssl_stapling on;
  ssl_stapling_verify on;
  server_name fuck.happyhack.cn;
  access_log /data/wwwlogs/fuck.happyhack.cn_nginx.log combined;
  index index.html index.htm index.php;
  root /data/wwwroot/owncloud;
  if ($ssl_protocol = "") { return 301 https://$host$request_uri; }

  include /usr/local/nginx/conf/rewrite/none.conf;
  #error_page 404 /404.html;
  #error_page 502 /502.html;
location / {
    rewrite ^ /index.php$uri;
}

location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
    return 404;
}
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
    return 404;
}


location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) {
    fastcgi_split_path_info ^(.+\.php)(/.*)$;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param SCRIPT_NAME $fastcgi_script_name; # necessary for owncloud to detect the contextroot https://github.com/owncloud/core/blob/v10.0.0/lib/private/AppFramework/Http/Request.php#L603
    fastcgi_param PATH_INFO $fastcgi_path_info;
    fastcgi_param HTTPS on;
    fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice
    fastcgi_param front_controller_active true;
    fastcgi_read_timeout 180; # increase default timeout e.g. for long running carddav/ caldav syncs with 1000+ entries
    fastcgi_pass unix:/dev/shm/php-cgi.sock;
    fastcgi_intercept_errors on;
    fastcgi_request_buffering off; #Available since NGINX 1.7.11
}

location ~ ^/(?:updater|ocs-provider)(?:$|/) {
    try_files $uri $uri/ =404;
    index index.php;
}
  #location ~ [^/]\.php(/|$) {
  #  #fastcgi_pass remote_php_ip:9000;
  #  fastcgi_pass unix:/dev/shm/php-cgi.sock;
  #  fastcgi_index index.php;
  #  include fastcgi.conf;
  #}

location ~ ^/(?:updater|ocs-provider)(?:$|/) {
    try_files $uri $uri/ =404;
    index index.php;
}
location ~ \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg|map)$ {
    add_header Cache-Control "public, max-age=7200";
    try_files $uri /index.php$uri$is_args$args;
    # Optional: Don't log access to other assets
    access_log off;
}
location ~ \.(?:css|js)$ {
    try_files $uri /index.php$uri$is_args$args;
    add_header Cache-Control "max-age=15778463";
    # Add headers to serve security related headers (It is intended to have those duplicated to the ones above)
    # Before enabling Strict-Transport-Security headers please read into this topic first.
    #add_header Strict-Transport-Security "max-age=15552000; includeSubDomains";
    add_header X-Content-Type-Options nosniff;
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Robots-Tag none;
    add_header X-Download-Options noopen;
    add_header X-Permitted-Cross-Domain-Policies none;
    expires 7d;
    # Optional: Don't log access to assets
    access_log off;
}
  location ~ /\.ht {
    deny all;
  }
}
  • 重启nginx

访问web安装界面

创建管理员用户、选择使用mysql为数据库。大功告成!

优化

使用crontab定时命令来代替Ajax执行脚本

#查看php所在路径
$ which php
/usr/local/php/bin/php
# 使用www用户添加定时任务 (可能会让你选择使用什么编辑器、当然是vim啦!)
$ sudo crontab -u www -e
# 添加以下代码 30分钟执行一次任务
30  *  *  *  * /usr/local/php/bin/php -f /data/wwwroot/owncloud/cron.php

客户端安装

  • Mac

    >https://download.owncloud.com/desktop/stable/ownCloud-qt5.6.2-2.4.2.10200.pkg
    
  • Andriod

    通过GooglePay需要$0.9、良心作者给了一个第三方下载APK[地址](https://f-droid.org/packages/com.owncloud.android/)
    

crontab命令小记

使用crontab命令时,最好填写绝对路径,命令和文件都最好写绝对路径.
否则很容易出现command not foundfile not found

man crontab

让我们来使用男人这个命令查看下crontab.呀!都是英文!不喜!

Options

每个用户拥有自己的crontab, 配置文件在/var下面.

  • -e 设置计时器
  • -l 列出当前计时器的设置
  • -r 删除计时器设置
  • -i 交互模式,删除计时器设置时要询问

* 表示任意时间, - 表示取值范围

* * * * * echo 'crontab test' >> /home/test/test.txt
* * * * * /bin/sh /home/test/test.sh
  • 第一列分钟, 每分钟用*或者*/1表示
  • 第二列小时, 1~23, 6则表示6小时,0表示0点
  • 第三列日期, 1~31, 同上
  • 第四列月份, 1~12, 同上
  • 第五列星期, 0~6, 0代表星期天

### 举些茄子 #

30 21 * * * /usr/local/etc/rc.d/lighttpd restart
//表示每晚的21:30重启lighttpd.

45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
//表示每月1、10、22日的4:45重启lighttpd.

0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
//每天18 : 00至23 : 00之间每隔30分钟重启lighttpd.

0 * * * * /usr/local/etc/rc.d/lighttpd restart
//每一小时重启lighttpd

*/5 * * * *    #每五分钟执行
0 * * * *      #每小时执行
0 0 * * *      #每天执行
0 0 * * 0      #每周日执行

5 4 * * 6 /var/www/test.sh    #每周六凌晨4:05执行
0 4 * * 6 /var/www/test.sh    #每周六凌晨4:00执行
31 10-23/2 * * *   /var/www/test.sh    #在每天的10:31开始,每隔2小时重复一次

记录常用的一些Linux命令。

添加开机自启动脚本

  1. 首先查看当前机器的启动状态
$ runlevel
  N 5

N 5 则说明当前启动是在/etc/rc5.d/文件夹下面

  0~6的各个级别

  • 0-Halt 关机模式
  • 1-Single 单用户模式
  • 2-Full multi-user with display 多用户模式
  • 3-Full multi-user with display 多用户模式
  • 4-Full multi-user with display 多用户模式
  • 5-Full multi-user with display 多用户模式
  • 6-Reboot 重启
  1. 将所需启动脚本复制到/etc/init.d/文件夹中

注意权限

  1. 创建一个软链接至/etc/rc5.d/

举个茄子:$ sudo ln -s /etc/init.d/qiezi /etc/rc5.d/S66qiezi

注意在创建软链接至rc5.d中,需要注意命名规则

S 表示 start 开启服务

[number] 表示该脚本运行的优先级,数字越小优先级越高

[service name] 表示服务的名称

参考文献


Linux 常用命令

wget

在终端下载网络文件

参数作用
-b后台下载模式
-O下载到指定目录
-t最大尝试次数
-c断点续传
-p下载页面所有资源
-r递归下载
wget http://1024.com/ooxx.rmvb

pidof

查询某个指定服务进程的PID值 pidof [参数] [服务名称]

pidof nginx

uname

查看系统内核于系统版本信息 通常加上参数__-a__

[root@linuxprobe ~]# uname -a
Linux linuxprobe.com 3.10.0-123.el7.x86_64 #1 SMP Mon May 5 11:16:57 EDT 2017 x86_64 x86_64 x86_64 GNU/Linux

uptime

查看系统负载信息

[root@linuxprobe ~]# uptime
22:49:55 up 10 min, 2 users, load average: 0.01, 0.19, 0.18
系统时间   运行时间  终端数量 平均负载值(1,5,15)minus

free -h

显示内存使用信息

last

查看所有系统登入记录

history [-c]

当前用户在系统中执行过得命令记录

history !23 执行history第23条命令

查看文件

cat more head tail

cat__, __more 加上-n 显示行号
__tail__, -n 显示最后n行记录, -f 动态显示

tr

替换文本中的字符 eg: tr [原始字符] [目标字符]

wc

统计文本中的 行数-l,  字数-w, 字节数-c

cut

默认按行提取文本字符 eg: cut [参数] 文本
-d 设置间隔符,  -f 设置需要看的列数

cut -d: -f1 /etc/passwd
以:为间隔符,看第一列的数据

cp

复制文件或者目录

参数作用
-p保留原始文件属性
-d若对象问'链接文件',则保留链接文件属性
-r递归持续复制(目录)
-i若目标文件存在,询问是否覆盖
-a相当于-pdr

tar

打包,解压

参数作用
-c创建压缩文件
-x解压文件
-z解压Gzip
-j解压bzip2
-v显示解压过程
-C解压到指定目录
-f__必须放到参数最后__,指定解压(压缩)文件

grep

对文本内容进行关键词搜索匹配

参数作用
-n显示搜索出来的行号
-v反选

find

按照指定格式查找文件,  find [查找路径] [寻找条件] 操作

参数作用
-name匹配名称
-perm匹配权限(mode为完全匹配,-mode为包含即可)
-user匹配所有者
-group匹配所有组
-mtime -n +n匹配修改内容的时间(-n指n天以内,+n指n天以前)
-atime -n +n匹配访问文件的时间-n指n天以内,+n指n天以前
-ctime -n +n匹配修改权限的时间-n指n天以内,+n指n天以前
-nouser匹配无所有者的文件
-nogroup匹配无所有组的文件
-newer f1 !f2匹配比文件f1新却比f2旧的文件
--type b/d/c/p/l/f匹配文件类型(块设备、目录、字符设备、管道、链接文件、文件文件)
-size匹配文件的大小(+50k查找超过50k的文件,而-50k则代表查找小于50k的文件)
-prune忽略某个目录
-exec {} ;后面可接对搜索到结果进一步处理的命令(下面会有演示)
"-exec {} \;"其中的{}代表find命令搜索出的逐个文件,并且记得命令的结尾必须是\;
[root@linuxprobe ~]# find / -user linuxprobe -exec cp -a {} /root/findresults/ \;

which

查看命令所在路径

which php

alias

自定义命令的别名

[root@linux ~] $ alias rm=ls
[root@linux ~] $ alias
alias rm='ls'

unalias

alias 相反

重定向,管道符,环境变量

重定向

输入重定向

符号作用
命令 < 文件将文件作为命令的标准输入
命令 << 分界符从标准输入中读入,直到遇见“分界符”才停止
命令 < 文件1 > 文件2将文件1作为命令的标准输入并将标准输出到文件2

输出重定向

符号作用
命令 > 文件将标准输出重定向到一个文件中(清空原有文件的数据)
命令 2> 文件将错误输出重定向到一个文件中(清空原有文件的数据)
命令 >> 文件将标准输出重定向到一个文件中(追加到原有内容的后面)
命令 2>> 文件将错误输出重定向到一个文件中(追加到原有内容的后面)
命令 >> 文件 2>&1 或 命令 &>> 文件将标准输出与错误输出共同写入到文件中(追加到原有内容的后面)

管道符

把前一个命令原本要输出到屏幕的数据当做后一个命令的标准输入

command A | command B | command C

转义符

反斜杠(\)的作用就是转义后面的一个变量变为单纯的字符串.
单引号('')则是转义其中所有的变量为单纯的字符串.
而双引号("")是保留其中的变量属性不转义.
反引号(``)则是把其中的命令执行后返回一个结果.

查看文件大小 du ,df

du(disk usage) 查看文件目录占用空间大小

#查看当前目录下所有目录及子目录大小
$ du -h
$ du -ah # -h用人性化的单位显示, -a 显示目录和文件
$ du -h www #只查看当前目录下的www目录

# 指定目录深度
$ du -h --max-depth=0 #-–max-depth=n:只深入到第n层目录,此处设置为0,即表示不深入到子目录

# df 用于查看设备的空间使用率
$ df -lh
#查看设备使用率