2018年4月

Linux 创建交换分区swap的两种方法

一、什么是SWAP

SWAP就是LINUX下的虚拟内存分区,它的作用是在物理内存使用完之后,将磁盘空间(也就是SWAP分区)虚拟成内存来使用.它和Windows系统的交换文件作用类似。


一般来说,目前根据大多人的一个普遍认知,建议交换内存的大小为物理内存的 1-2 倍。也就是说如果你有 2GB 内存, 那么交换空间大小应该介于2-4 GB。
若系统中没有配置交换分区,当物理内存耗尽后,系统可能会杀掉正在运行中的进程,从而导致系统崩溃。这里就给大家带来两种设置方法:

1.物理硬盘创建swap分区

2.生成swap文件(常用方法)

 

二、方法介绍

方法一:物理硬盘创建swap分区

这里就是在物理磁盘中创建一个分区,用来作为swap交互分区。 通常系统的第一块硬盘会被命名为/dev/vda,同时这块磁盘的分区会命名为/dev/vda1/dev/vda2 等,这里就先假设我们创建了一个/dev/vda3 的分区,并用这个分区来作为swap交互分区。 关于如何分区可以参考之前的文章《CentOS 系统的 VPS 首次如何分区并挂载数据盘》 的部分内容。

使用mkswap命令格式化这个分区:

mkswap /dev/vda3

激活交换分区:

swapon /dev/vda3

最后,将交换分区信息写入fstab文件,以便开机自动挂载:

echo "/dev/vdb3               swap                   swap    defaults        0 0" >> /etc/fstab 

 

方法二:创建swap文件(使用 fallocate 命令)

博主推荐用这种方法,因为这个是最简单、最快速的创建swap交换空间的方法,当然也是最常见的方法了。 

PS:有的同学可能要问为什么不用DD命令? emmm...这个嘛,这是博主最近才来了解的fallocate这个命令,貌似还是比较好用的。其实原理基本都差不多,就是创建一个文件块。

首先使用fallocate命令,创建一个文件:swapfile,文件名称、路径、大小可以自行设置,这里就放在根目录 /  下了。使用命令创建一个2G的文件:

fallocate -l 2G /swapfile

查看下创建的文件大小是否和设置的一致:

ls -lh /swapfile

更改文件的权限:

chmod 600 /swapfile

同样,使用mkswap命令格式化,虽然这个swapfile是个文件,但是我们把它当成是分区来挂载:

mkswap /swapfile

启用激活交换分区:

swapon /swapfile

最后,也是将交换分区信息写入fstab文件,以便开机自动挂载:

echo "/swapfile               swap                   swap    defaults        0 0" >> /etc/fstab 

 

.

LNMP.org 建站环境一键安装包 支持:lnmp/lamp/lnmpa组合以及SSL

  • 介绍

地址:https://lnmp.org/

LNMP一键安装包是什么?

LNMP一键安装包是一个用Linux Shell编写的可以为CentOS/RHEL/Fedora/Aliyun/Amazon、Debian/Ubuntu/Raspbian/Deepin/Mint Linux VPS或独立主机安装LNMP(Nginx/MySQL/PHP)、LNMPA(Nginx/MySQL/PHP/Apache)、LAMP(Apache/MySQL/PHP)生产环境的Shell程序。

我们为什么需要它?
编译安装需要输入大量的命令,如果是配置生产环境需要耗费大量的时间。
不会Linux的站长或Linux新手想使用Linux作为生产环境……

它有什么优势和功能?
无需一个一个的输入命令,无需值守,编译安装优化编译参数,提高性能,解决不必要的软件间依赖,特别针对配置自动优化。

支持自定义Nginx、PHP编译参数及网站和数据库目录、支持生成LetseEcrypt证书、LNMP模式支持多PHP版本、支持单独安装Nginx/MySQL/MariaDB/Pureftpd服务器,同时提供一些实用的辅助工具如:虚拟主机管理、FTP用户管理、Nginx、MySQL/MariaDB、PHP的升级、常用缓存组件Redis/Xcache等的安装、重置MySQL root密码、502自动重启、日志切割、SSH防护DenyHosts/Fail2Ban、备份等许多实用脚本。

  • 系统需求:
  • CentOS/RHEL/Fedora/Debian/Ubuntu/Raspbian/Deepin/Aliyun/Amazon/Mint Linux发行版
  • 需要5GB以上硬盘剩余空间,MySQL 5.7,MariaDB 10至少9GB剩余空间
  • 需要128MB以上内存(128MB小内存VPS,Xen需有SWAP,OpenVZ至少要有128MB以上的vSWAP或突发内存),注意小内存请勿使用64位系统!
  • 安装MySQL 5.6或5.7及MariaDB 10必须1G以上内存!
  • VPS或服务器必须已经联网且必须设置的是网络源不能是光盘源,同时VPS/服务器DNS要正常!
  • Linux下区分大小写,输入命令时请注意!
  • CentOS 5,Debian 6及之前版本其官网已经结束支持无法使用!
 
  • 安装步骤:

1、使用putty或类似的SSH工具登陆VPS或服务器;

登陆后运行:screen -S lnmp
如果提示screen: command not found 命令不存在可以执行:yum install screen 或 apt-get install screen安装,详细内容参考screen教程

2、下载并安装LNMP一键安装包:

您可以选择使用下载版(推荐美国及海外VPS或空间较小用户使用)或者完整版(推荐国内VPS使用,国内用户可用在下载中找国内下载地址替换),两者没什么区别,只是完整版把一些需要的源码文件预先放到安装包里。

安装LNMP稳定版

wget -c http://soft.vpser.net/lnmp/lnmp1.4.tar.gz && tar zxf lnmp1.4.tar.gz && cd lnmp1.4 && ./install.sh lnmp

默认安装lnmp可不写,如需要安装LNMPA或LAMP,将./install.sh 后面的参数替换为lnmpalamp即可。如需更改网站和数据库目录先修改安装包目录下的 lnmp.conf 文件。

如提示wget: command not found ,使用yum install wget 或 apt-get install wget 命令安装。

运行上述LNMP安装命令后,会出现如下提示:

目前提供了较多的MySQL、MariaDB版本和不安装数据库的选项,需要注意的是MySQL 5.6,5.7及MariaDB 10必须在1G以上内存的更高配置上才能选择

输入对应MySQL或MariaDB版本前面的序号,回车进入下一步.

需要设置MySQL的root密码(不输入直接回车将会设置为root)如果输入有错误需要删除时,可以按住Ctrl再按Backspace键进行删除(个别情况下是只需要Backspace键)。输入后回车进入下一步。

询问是否需要启用MySQL InnoDB,InnoDB引擎默认为开启,一般建议开启,直接回车或输入 y ,如果确定确实不需要该引擎可以输入 n,输入完成,回车进入下一步。

输入要选择的PHP版本的序号,回车进入下一步。 注意:选择PHP7等高版本时需要自行确认是否与自己的程序兼容。

选择是否安装内存优化,可以选择不安装、Jemalloc或TCmalloc,输入对应序号回车,直接回车为默认为不安装。

如果是LNMPA或LAMP的话还会提示“Please enter Administrator Email Address:”,需要设置管理员邮箱,该邮箱会在报错时显示在错误页面上,再选择Apache版本。

提示"Press any key to install...or Press Ctrl+c to cancel"后,按回车键确认开始安装。 
LNMP脚本就会自动安装编译Nginx、MySQL、PHP、phpMyAdmin、Zend Optimizer这几个软件。

安装时间可能会几十分钟到几个小时不等,主要是机器的配置网速等原因会造成影响。

  • 添加、删除主机:

虚拟主机管理基本命令介绍:lnmp vhost  add|list|del

添加主机:lnmp vhost add

列出主机:lnmp vhost list

删除主机:lnmp vhost del

  • 相关软件安装目录、配置路径:

LNMP相关软件安装目录
Nginx 目录: /usr/local/nginx/
MySQL 目录 : /usr/local/mysql/
MySQL数据库所在目录:/usr/local/mysql/var/
MariaDB 目录 : /usr/local/mariadb/
MariaDB数据库所在目录:/usr/local/mariadb/var/
PHP目录 : /usr/local/php/
多PHP版本目录 : /usr/local/php5.5/ 其他版本前面5.5的版本号换成其他即可
PHPMyAdmin目录 : 0.9版本为/home/wwwroot/phpmyadmin/ 1.0及以后版本为 /home/wwwroot/default/phpmyadmin/ 强烈建议将此目录重命名为其不容易猜到的名字。phpmyadmin可自己从官网下载新版替换。
默认网站目录 : 0.9版本为 /home/wwwroot/ 1.0及以后版本为 /home/wwwroot/default/
Nginx日志目录:/home/wwwlogs/
/root/vhost.sh添加的虚拟主机配置文件所在目录:/usr/local/nginx/conf/vhost/
PureFtpd 目录:/usr/local/pureftpd/
PureFtpd web管理目录: 0.9版为/home/wwwroot/default/ftp/ 1.0版为 /home/wwwroot/default/ftp/
Proftpd 目录:/usr/local/proftpd/
Redis 目录:/usr/local/redis/

LNMP相关配置文件位置
Nginx主配置(默认虚拟主机)文件:/usr/local/nginx/conf/nginx.conf
添加的虚拟主机配置文件:/usr/local/nginx/conf/vhost/域名.conf
MySQL配置文件:/etc/my.cnf
PHP配置文件:/usr/local/php/etc/php.ini
php-fpm配置文件:/usr/local/php/etc/php-fpm.conf
PureFtpd配置文件:/usr/local/pureftpd/pure-ftpd.conf 1.3及更高版本:/usr/local/pureftpd/etc/pure-ftpd.conf
PureFtpd MySQL配置文件:/usr/local/pureftpd/pureftpd-mysql.conf
Proftpd配置文件:/usr/local/proftpd/etc/proftpd.conf 1.2及之前版本为/usr/local/proftpd/proftpd.conf
Proftpd 用户配置文件:/usr/local/proftpd/etc/vhost/用户名.conf
Redis 配置文件:/usr/local/redis/etc/redis.conf

LNMPA相关目录文件位置
Apache目录:/usr/local/apache/
Apache配置文件:/usr/local/apache/conf/httpd.conf
Apache虚拟主机配置文件目录:/usr/local/apache/conf/vhost/
Apache默认虚拟主机配置文件:/usr/local/apache/conf/extra/httpd-vhosts.conf
虚拟主机配置文件名称:/usr/local/apache/conf/vhost/域名.conf

 

linux 文件权限解析

常用权限

linux系统内有档案有三种身份 u:拥有者  g:群组   o:其他人

这些身份对于文档常用的有下面权限:

r:读权限,用户可以读取文档的内容,如用cat,more查看

w:写权限,用户可以编辑文档

x:该目录具有可以被系统执行的权限

其他权限

除了读写执行权限外系统还支持强制位(s权限)和粘滞位(t权限)

s权限

s权限: 设置使文件在执行阶段具有文件所有者的权限,相当于临时拥有文件所有者的身份. 典型的文件是passwd. 如果一般用户执行该文件, 则在执行过程中, 该文件可以获得root权限, 从而可以更改用户的密码.

ls -al /usr/bin/passwd-rwsr-xr-x 1 pythontab pythontab 32988 2018-03-16 14:25 /usr/bin/passwd

我们可以通过字符模式设置s权限:chmod a+s filename,也可以使用绝对模式进行设置:

设置s u i d:将相应的权限位之前的那一位设置为4;

设置g u i d:将相应的权限位之前的那一位设置为2;

两者都置位:将相应的权限位之前的那一位设置为4+2=6。

 

注意:在设置s权限时文件属主、属组必须先设置相应的x权限,否则s权限并不能正真生效(c h m o d命令不进行必要的完整性检查,即使不设置x权限就设置s权限,chmod也不会报错,当我们ls -l时看到rwS,大写S说明s权限未生效)

t权限

t权限:要删除一个文档,您不一定要有这个文档的写权限,但您一定要有这个文档的上级目录的写权限。也就是说,您即使没有一个文档的写权限,但您有这个文档的上级目录的写权限,您 也能够把这个文档给删除,而假如没有一个目录的写权限,也就不能在这个目录下创建文档。 

怎样才能使一个目录既能够让任何用户写入文档,又不让用户删除这个目录下他人的文档,t权限就是能起到这个作用。t权限一般只用在目录上,用在文档上起不到什么作用。 

在一个目录上设了t权限位后,(如/home,权限为1777)任何的用户都能够在这个目录下创建文档,但只能删除自己创建的文档(root除外),这就对任何用户能写的目录下的用户文档 启到了保护的作用。

可以通过chmod +t filename 来设置t权限

 

文章转载自:http://www.pythontab.com/html/2018/linuxkaiyuan_0316/1260.html

 

Shell基本命令学习

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。
​Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。

1:编写shell脚本
vi test.sh#!/bin/bash #指定这个脚本需要什么解释器来执行echo "Hello World !" # echo命令用于向窗口输出文本
2:执行shell脚本
cd入文件存在的目录chmod +x ./test.sh #使脚本具有执行的权限./test.sh #执行脚本
3:Shell变量的理解
例子: your_name="wangzhi.cn"注意:变量名和等号之间不能有空格规则:(1).首字母必须为字母(a-z,A-Z)(2).中间不能有空格,可以使用(_)(3).不能使用标点符号(4).不能使用bash中的关键字(可以使用help命令查看保留关键字)例子:for file in ls /etc 这个语句可以将/etc下目录的文件名循环出来
4:变量的使用
定义变量:your_name = "wangzhi"使用变量:echo ${your_name} # 建议输出变量加上{},养成好的编程习惯.</pre><div style="box-sizing: border-box; font-family: &quot;Microsoft Yahei&quot;, Helvetica, Arial, sans-serif; font-size: 14pt; color: white; background-color: black; border-left: 10px solid red; padding-left: 14px; margin-bottom: 20px; margin-top: 20px; user-select: text !important;"><strong style="box-sizing: border-box; user-select: text !important;">5:Shell字符串(注意注意:下标是从0开始计算的)</strong></div><pre style="box-sizing: border-box; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 13px; white-space: pre-wrap; padding: 9.5px; margin-top: 0px; margin-bottom: 10px; line-height: 1.42857; color: rgb(51, 51, 51); word-break: break-all; word-wrap: break-word; background-color: rgb(245, 245, 245); border: 1px solid rgb(204, 204, 204); border-radius: 4px; user-select: text !important;">单引号:str = &#39;This is a string&#39; (限制:单引号中的任何字符都会原样输出,单引号中无法输出变量;单引号中不能出现单引号)双引号:str = &quot;Hello, I know your are \&quot;${your_name}\&quot;!\n"(双引号内可以有变量;双引号内可以有转义字符)字符串拼接:your_name="qinjx"greeting="hello, "$your_name&quot; !&quot;greeting_1=&quot;hello, ${your_name} !"echo $greeting $greeting_1获取字符串长度:string="abcd"echo ${#string} #输出 4提取字符串string=&quot;alibaba is a great company&quot;echo ${string:1:4} #输出liba,字符串的下标是从0开始的查找子字符串(下标从1开始计算)string="alibaba is a great company"echo expr index &quot;$string&quot; is例如:#!/bin/bashyour_name="wangzhi"echo ${your_name}str=&#39;This is a String&#39;echo &quot;单引号字符串 :${str}" # 拼接都可以这样写,下面的写法是被误导的str2="Hello, I know you are \&quot;${your_name}\&quot;!\n&quot;echo &quot;双引号字符串 : \&quot; ${str2}\&quot;\n"greet="Hello, ${your_name} !&quot;echo &quot;字符串拼接 : \&quot; ${greet}\&quot;\n"echo "获取字符串长度 : \&quot;${#greet}\&quot;\n&quot; # 0~length-1,与java中相同echo &quot;提取字符串 : \&quot;${greet:1:4}\&quot;\n" # 下标从0开始,从1开始计算4个echo "查找子字符串 : \n"echo expr index &quot;${greet} hello&quot; # 下标是从1开始计算的
6:Shell数组(可以存放各种数据类型,下标从0开始)
定义:${数组名[下标]} 例如: valuen = ${array_name[n]}使用@符号可以获取数组中的所有元素,例如:echo ${array_name[@]}获取数组长度:# 取得数组元素的个数length=${#array_name[@]}# 或者length=${#array_name[*]}# 取得数组单个元素的长度lengthn=${#array_name[n]}

 

文章内容参考:https://www.cnblogs.com/wadmwz/p/8811019.html

Centos7/Redhat7 默认firewalld防火墙使用命令

CentOS7默认的firewalld防火墙说实话真不好用,不如使用iptables。SO,博主目前还是喜欢使用CentOS6系列。

毕竟,新的版本在不断更新,目前大多VPS服务器厂商也开始不再提供旧版本的镜像了。万事万物都是有它存在的道理,比如在高级功能方面iptables就要次于firewalld防火墙。所以为了跟得上脚步,博主也开始来学习新的东西。顺便就来水这一篇博文了,做个记录。

  • 基本操作
 # systemctl start firewalld //启动 # systemctl status firewalld //状态 # systemctl disable firewalld //禁用 # systemctl stop firewalld //停止

systemctl是CentOS 7中最重要的一个管理工具,包含了service和chkconfig所有功能,关于这个工具命令,以后有机会再给大家介绍吧。

 # systemctl start firewalld.service //启动某个服务 # systemctl stop firewalld.service //关闭某个服务 # systemctl restart firewalld.service //重启某个服务 # systemctl status firewalld.service //显示某个服务的状态 # systemctl enable firewalld.service //开机时随机自启动 # systemctl disable firewalld.service //禁止开机启动 # systemctl is-enabled firewalld.service //查看是否开机启动 # systemctl list-unit-files|grep enabled //查看已经启动的服列表 # systemctl --failed //查看启动失败的服务列表
  • 基本配置命令firewalld-cmd
 # firewall-cmd --version //查看防火墙版本 # firewall-cmd --help //查看命令操作帮助 # firewall-cmd --state //显示当前状态 # firewall-cmd --zone=public --list-ports //查看所有打开运行的端口 # firewall-cmd --reload //不重启立即加载 # firewall-cmd --list-all-zones | more //查看区域信息情况 # firewall-cmd --get-zone-of-interface=eth0 //查看指定接口所属区域 # firewall-cmd --panic-on //拒绝所有包 # firewall-cmd --panic-off //取消拒绝状态 # firewall-cmd --query-panic //查看是否拒绝

举例,如何打开3306端口 

 # firewall-cmd --zone=public --add-port=3306/tcp --permanent //添加3306端口(--permanent)永久生效,没有此参数重启后失效 # firewall-cmd --reload //不重启立即加载 # firewall-cmd --zone= public --query-port=3306/tcp //查看加入3306端口状态 # firewall-cmd --zone= public --remove-port=3306/tcp --permanent //删除刚刚加入的防火墙规则3306 # firewall-cmd --permanent --remove-icmp-block=echo-request //删除禁ping # firewall-cmd --permanent --add-icmp-block=echo-request //开启禁ping # firewall-cmd --get-service //查看已被允许的信息

更多规则管理可以使用help查看

 # firewall-cmd --help

相关资料:

https://fedoraproject.org/wiki/FirewallD/zh-cn
https://access.redhat.com/documentation/zh-CN/Red_Hat_Enterprise_Linux/7/html/Security_Guide/sec-Using_Firewalls.html
https://www.ibm.com/developerworks/cn/linux/1507_caojh/

 

 


Warning: in_array() expects parameter 2 to be array, null given in /www/users/HK1590886/WEB/usr/plugins/TopLamuLeimu/Plugin.php on line 85