Linux Desktop Entry 文件以 .desktop 为后缀,保存了程序启动配置信息。类似 Windows 下的快捷方式。Desktop Entry 文件一般存放在 /usr/share/applications 目录下。

jetbrains-phpstorm.desktop


[Desktop Entry] Version=1.0 Type=Application Name=PhpStorm Icon=/opt/PhpStorm-2016.2/bin/webide.png Exec="/opt/PhpStorm-2016.2/bin/phpstorm.sh" %f Comment=Develop with pleasure! Categories=Development;IDE; Terminal=false StartupWMClass=jetbrains-phpstorm

配置参数

  • Version:可选,版本号

  • Type:必选,Desktop Entry 文件的类型。常见类型有 ApplicationLink

    • Application:表示当前 Desktop Entry 文件为一个应用程序

    • Link:表示当前 Desktop Entry 文件指向一个 URL

  • Encoding:可选,指定当前 Desktop Entry 文件中字符串的编码方式

  • Name:必选,应用程序名称。在 GUI 中看到的是该名称,而不是文件名称。如 jetbrains-phpstorm.desktop 看到是名称是 PhpStorm,而不是 jetbrains-phpstorm

  • Comment:可选,当前应用的描述

  • Exec:可选,只有在 Type=Application 时,才有意义。表示启动应用程序要执行的命令

  • URL:可选,只有在 Type=URL 时,才有意义。定义该 Desktop Entry 文件指向的 URL

  • Icon:可选,图标

  • Categories:可选,只有在 Type=Application时,才有意义。指定该应用程序在菜单中显示的类型

  • Terminal:可选,布尔值,指定该应用程序是否需要在 Terminal 中运行。

更多配置参数可以参考 Desktop Entry Specification

rpm 和 deb

  • rpm 包

rpm 后缀的安装包,是可执行文件安装包,可以用 rpm 命令进行安装。RPM,RedHat Package Manager。

  • deb 包

deb 后缀的安装包,debian 及其衍生版本的安装包(如 ubuntu),是可执行文件安装包。可以用 dpkg 命令进行安装。

alien

alien – Convert and install an alien binary package.

  • 先安装 alien 工具

sudo apt-get install alien
  • 直接使用 alien 安装

sudo alien -i xxx.rpm
  • 将 rpm 包转换为 deb 包再安装

sudo alien -d xxx.rpm 或 sudo alien xxx.rpm # default is -d

参照 OpenVPN文档

大概流程:

  • 安装 OpenVPN

  • 生成 PKI:CA 证书和密钥、服务器端证书和密钥、客户端证书和密钥、迪菲·赫尔曼密钥

  • 服务器端配置

  • 客户端配置

OpenVPN Server

安装 OpenVPN


apt-get install openvpn easy-rsa

OpenVPN PKI

构建 OpenVPN 配置的第一步是建立一个公钥基础设施(PKI)。PKI 包括:

  • 一个主证书颁发机构(CA)的证书(即公钥)和密钥,用于签名服务器和客户端的证书(English:a master Certificate Authority (CA) certificate and key which is used to sign each of the server and client certificates.)

  • OpenVPN Server 证书(公钥)和密钥

  • OpenVPN Client 证书(公钥)和密钥

1、CA 设置,生成证书和密钥

  • 用安装的 easy-rsa 包来制作 CA/服务器端/客户端的证书和密钥

cp -r /usr/share/easy-rsa/ /etc/openvpn/
  • 设置默认的基本参数: /etc/openvpn/easy-rsa/vars

export KEY_COUNTRY="CN" export KEY_PROVINCE="GuangDong" export KEY_CITY="FoShan" export KEY_ORG="easecloud" # organization 组织 export KEY_EMAIL="*@easecloud.cn" export KEY_OU="easecloud" # organization unit 单位 export KEY_NAME="easecloudVPN" export KEY_CN="ecVPN" # common name for all keys 常用名
  • 生成 CA 证书和密钥

source vars ./clean-all ./build-ca # 生成 CA 证书和密钥

执行 ./build-ca时,可以一直回车,默认使用 vars 的设置。执行完之后,就会生成 CA 证书(keys/ca.crt)和密钥(keys/ca.key)。

** 运行 ./build-ca 时可能报错:**

错误一:

error on line 198 of /etc/openvpn/easy-rsa/openssl-1.0.0.cnf

139749463725728:error:0E065068:configuration file routines:STR_COPY:variable has no value:conf_def.c:618:line 198

错误二:

error on line 220 of /etc/openvpn/easy-rsa/openssl-1.0.0.cnf

140566456841888:error:0E065068:configuration file routines:STR_COPY:variable has no value:conf_def.c:618:line 220

解决:

分别注释到 openssl-1.0.0.cnf 文件中 198 和 220 行的内容 subjectAltName=$ENV::KEY_ALTNAMES

2、服务器端证书和密钥,迪菲·赫尔曼密钥

  • 生成服务器端的证书和密钥

./build-key-server myservername
+    `myservername`:服务器证书名称,如:easecloudVPN

+    执行:一直回车,直到 `Sign the certificate?[y/n]y`,`1 out of 1 certificate requests certified, commit? [y/n]y`

+    执行完之后,我们就可以得到服务器证书(keys/easecloudVPN.crt)和密钥(keys/easecloudVPN.key)。
  • 同时,为 OpenVPN 服务器生成迪菲·赫尔曼密钥

./build-dh

执行完 ./build-dh 之后,会根据 /easy-ras/vars 的 KEY_SIZE 参数来生成相应的 Diffie Hellman 参数文件(keys/dh-2048.pem)

迪菲·赫尔曼密钥交换(Diffie–Hellman key exchange,简称“D–H”) 是一种安全协议。它可以让双方在完全没有对方任何预先信息的条件下通过不安全信道创建起一个密钥。这个密钥可以在后续的通讯中作为对称密钥来加密通讯内容。

3、客户端证书和密钥

生成客户端证书。一般,不同的客户端各自创建自己的客户端证书和密钥。


cd /etc/openvpn/easy-rsa/ ./build-key clientName
  • clientName:客户端证书名称,如:lizs

  • 执行:一直回车,直到 Sign the certificate?[y/n]y1 out of 1 certificate requests certified, commit? [y/n]y

  • 执行完之后,我们就可以得到客户端证书(keys/lizs.crt)和密钥(keys/lizs.key)

  • 先将以下证书拷贝到 OpenVPN Client 所在环境,等下配置客户端 OpenVPN 要用到

    • ca.crt

    • lizs.crt

    • lizs.key

服务器配置

  • 先将生成的相关证书复制到 /etc/openvpn/

cd keys/ cp easecloudVPN.crt easecloudVPN.key ca.crt dh2048.pem /etc/openvpn/
  • 安装了 OpenVPN 之后会自动带有一些服务器端和客户端的简单配置的例子。

ls -l /usr/share/doc/openvpn/examples/sample-config-files/ -rw-r--r-- 1 root root 3427 Dec 2 2014 client.conf # 客户端配置 -rw-r--r-- 1 root root 4141 Dec 2 2014 server.conf.gz # 服务器端配置
  • 服务器端配置,我们可以使用例子中的配置 server.conf.gz,将它复制到 /etc/openvpn/ 目录下解压就可以使用了

cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/ gunzip /etc/openvpn/server.conf.gz
  • 接下来,编辑 server.conf

ca ca.crt # 刚生成的 CA 证书 cert easecloudVPN.crt # 刚生成的服务器端证书 key easecloudVPN.key # 刚生成的服务器端密钥 dh dh2048.pem # 刚生成的 Diffie Hellman 参数文件
  • 编辑 sysctl 配置文件 /etc/sysctl.conf 并且重新加载

#net.ipv4.ip_forward=1 # default net.ipv4.ip_forward=1 # we just need to uncomment it

重新加载 sysctl


sysctl -p /etc/sysctl.conf
  • 开启服务器端 OpenVPN

service openvpn start
  • 检查 OpenVPN 是否创建了一个 tun0 接口(可以查看 server.conf 配置文件中的 dev 参数)

$ ifconfig tun0 tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:10.8.0.1 P-t-P:10.8.0.2 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

OpenVPN Client

安装 OpenVPN


sudo apt-get install openvpn

客户端配置

  • 先将服务器端生成的相关证书文件复制到 /etc/openvpn/ 目录下
    • ca.crt:CA 证书

    • lizs.crt:客户端证书

    • lizs.key:客户端密钥

  • 客户端配置也可以使用 OpenVPN 自带的客户端配置例子 client.conf,将其复制到 /etc/openvpn


sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/
  • 编辑客户端配置文件 /etc/openvpn/client.conf

remote 123.123.123.123 1194 ca ca.crt # 服务器端生成的 CA 证书 cert lizs.crt # 客户端证书 key lizs.key # 客户端密钥

123.123.123.123:OpenVPN Server 所在服务器的 IP 或域名。

  • 开启 OpenVPN Client

service openvpn@client start
  • 检查 OpenVPN 是否创建了一个 tun0 接口(可以查看 server.conf 配置文件中的 dev 参数)

ifconfig tun0

如果没有成功开启,重启服务器端的 OpenVPN 和 客户端的 OpenVPN 试试看。


附 windows openvpn client

  • 安装 OpenVPN GUI

  • 首先,将服务器生成的相关证书复制到安装目录的 config 文件夹下面。

    • ca.crt:CA 证书

    • lizs.crt:客户端证书

    • lizs.key:客户端密钥

  • 修改配置文件。同样,使用自带的配置例子 sample-config/client.ovpn。将其复制到 config 目录下,然后编辑:


dev tun # 和服务器的保持一致 remote 123.123.123.123 1194 ca ca.crt # 服务器端生成的 CA 证书 cert lizs.crt # 客户端证书 key lizs.key # 客户端密钥

123.123.123.123:OpenVPN Server 所在服务器的 IP 或域名。

  • 最后以管理员身份运行 OpenVPN。启动之后,右键菜单栏 OpenVPN 图标,connect

cron 是 linux 下的一个定时执行工具。启动、关闭:


$ service cron start $ service cron stop $ service cron restart

设置开机启动,在 rc.local 脚本添加 shell 命令:


service cron start

rc.local 文件的位置因为版本问题,可能不一样。/etc/rc.local /etc/rc.d/rc.local

crontab 命令


usage: crontab [-u user] file crontab [ -u user ] [ -i ] { -e | -l | -r } (default operation is replace, per 1003.2) -e (edit user's crontab) -l (list user's crontab) -r (delete user's crontab) -i (prompt before deleting user's crontab)

比如,删除 lizs 用户的定时任务:


lizs@lizs-pc:/etc$ crontab -u lizs -i -r crontab: really delete lizs's crontab? (y/n) n

crontab 添加定时任务

修改默认编辑器:select-editor

首先打开编辑页面 crontab -e,用以下方式添加任务:


t1 t2 t3 t4 t5 command
  • t1,分钟(0 – 59)

  • t2,小时(0 – 23)

  • t3,日期(1 – 31)

  • t4,月份(1 – 12)

  • t5,星期(0 – 6, 0 代表星期日)

  • command,要执行的任务,如访问某个网址:curl https://www.baidu.com

除了以上参数之外还有几个特殊符号:

  • *,代表所有取值范围内的数字

  • /,代表每的意思,如*/2表示每 2 个单位

  • -,代表从某个数值到某个数值,如3-10表示从 3 到 10

  • ,,分开几个离散的数字,如 2,23

示例:


// 每天晚上 23:30 30 23 * * * curl https://www.baidu.com // 每天中午 12 点到晚上 11 点,每隔两个小时和早上 8 点 0 12-23/2,8 * * * /home/lizs/app/backup.sh

在 ubuntu15.10 中,chromium 浏览器会出现 Adobe Flash Player 问题,导致不能够看视频。

因为,chromium 浏览器使用 Netscape Plugin API 来支持 Flash。从 ubuntu14.04 开始,chromium 停用了 Netscape Plugin API。而使用了一个更稳定的 Pepper Flash Player。

修复:


sudo apt-get install pepperflashplugin-nonfree sudo update-pepperflashplugin-nonfree --install

安装完之后,重启 chromium。

dpkg — Debian package,为Debian操作系统专门开发的一套管理系统,用于软件的安装,更新和移除。

所有源自于 Debian 的 Linux 的发行版都使用 dpkg,例如,Ubuntu。

  • 安装软件

    dpkg -i <.deb file name>

    软件包 xxx.deb 是手动下载下来的安装包。

  • 显示包的版本

    dpkg -l package

    可以用该命令查看软件包的版本或者查看是否安装了某个软件包。

  • 列出与该包相关联的文件

    dpkg -L package

    安装完之后,可以用此命令查看软件安装到什么地方。

  • 查看包的详细信息

    dpkg -s package

  • 移除软件(保留配置)

    dpkg -r package

  • 移除软件(不保留配置)

    dpkg -P package

  • Ubuntu 查看系统在安装的所有包:

    dpkg -l

Linux 上通过源代码编译安装软件包的时候,一般需要经过一下几个步骤:

  • configure

./configure 可以对即将安装的软件进行配置。

./configure 会检查当前的环境是否满足要安装软件的依赖关系,它是个 shell 脚本。configure 之后一般会生成一个 Makefile,为下一步的编译做准备。

  • make 编译

  • make install 安装

  • make clean 可选,清除编译产生的可执行文件及目标文件。


  • --help / -h 输出帮助信息

  • --version / -V 打印用来产生 configure 脚本的 Autoconf 的版本号

  • --prefix=PREFIX 安装软件到 PREFIX。默认位置 /usr/local

等等,详细参照 ./configure -h

  • sudo apt-get update

    这个命令,会访问源列表里的每个网址,并读取软件列表,然后保存到本地电脑。

    即同步 /etc/apt/sources.list/etc/apt/sources.list.d/ 中列出的源的索引,这样才能够获取到最软件包。

  • sudo apt-get upgrade

    这个命令,会把本地已经安装的软件与刚下载的软件列表里对应软件进行对比,如果发现软件版本低了,就会提示更新。

    即升级已安装的所有软件包,升级之后的版本就是本地所有里的。

实践环境:ubuntu14.04

更新系统数据:


$ sudo apt-get update $ sudo apt-get upgrade

Nginx


$ sudo apt-get install nginx

成功安装之后,启动 Nginx 之后,访问localhost(127.0.0.1)会显示欢迎页面。

MySQL


$ sudo apt-get install mysql-server php5-mysql

如果需要,可以安装 phpmyadmin


$ sudo apt-get install phpmyadmin

PHP5

  • 安装 PHP5

$ sudo apt-get install php5-fpm

也可以同时安装其他 php5 库。


$ sudo apt-get install php5-fpm php5-cli php5-mysql php5-gd php5-mcrypt php5-curl

php5-cli:Command Line Interface,命令行界面。如果没有安装,你想要在终端执行 php 命令,或者执行一个 php 脚本文件(#!/usr/bin/php)等都是无法执行的。

php5-mysql:php5 的 mysql 数据库扩展,提供 php 能够访问 mysql 的接口。

php5-gd:gd 库是 php 处理图形的扩展库,gd 库提供了一系列用来处理图片的 API。

php5-mcrypt:php5 加密函数库

  • 配置 php5-fpm

更改配置文件 /etc/php5/fpm/php.inicgi.fix_pathinfo 的值为 0,然后,重启 php5-fpm 服务。

  • 配置 Nginx

配置 Nginx,是它支持 php 文件。

文件:/etc/nginx/sites-available/default


location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; # # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini # # # With php5-cgi alone: # fastcgi_pass 127.0.0.1:9000; # # With php5-fpm: fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; }

然后,重新载入 Nginx 配置:service nginx reload

PHP7

  • 添加 PPA(Personal Package Archives)

sudo apt-get install python-software-properties software-properties-common sudo add-apt-repository ppa:ondrej/php sudo apt-get update
  • 安装 php7.0

sudo apt-get install php7.0-fpm

也可同时安装 php7.0 的一些扩展


sudo apt-get install php7.0-fpm php7.0-mysql php7.0-cli php7.0-curl php7.0-mcrypt
  • 配置 php7.0-fpm

更改配置文件 /etc/php/7.0/fpm/php.inicgi.fix_pathinfo 的值为 0,然后,重启 php7-fpm 服务。

  • 配置 Nginx

location ~ \.php$ { fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; fastcgi_index index.php; include fastcgi_params; }