环境:
mac系统下,使用wmware fusion 安装了Ubuntu16.04, 为了操作方便,使用了secureCRT这个工具来管理虚拟机。
使用root帐户进行操作。
虚拟机配置:
由于经常会使用多个虚拟机配合,为了保证虚拟机的IP不自己变化,为虚拟机配置了静态IP。
vim /etc/network/interfaces
会看到类似下面的内容
# The primary network interface
auto ens33
iface ens33 inet dhcp
这是动态分配ip,修改为静态ip,如下所示
# The primary network interface
auto ens33
iface ens33 inet static
address 192.168.79.161
netmask 255.255.255.0
gateway 192.168.79.2
dns-nameserver 192.168.79.2 #为了让虚拟机能正常上网,需要指定dns服务器地址,这里指定为宿主机地址
保存,并重启后,执行ifconfig ,可以看到ip已经变为161
SecureCRT配置
之所以使用这个工具,主要是直接用vmfusion的窗口,与宿主机交互不是很方便,屏幕输出也看不到历史消息。
为了能使用ssh登录,需要先将本机的ssh的公钥拷贝到虚拟机。同时需要在虚拟机上安装openssh-server。
安装openssh-server: 参考https://blog.csdn.net/qq_35038153/article/details/77898815
然后在宿主机终端执行 ssh-copy-id root@192.168.79.161,这个过程会有个询问,输入yes,然后再输入161机器root用密钥,然后会拷贝宿主机的ssh公钥到虚拟机上。
现在可以尝试 ssh root@192.168.79.161,直接登录到虚拟机。输入exit既出登录。
然后可以在secureCrt中添加一个session,并选择ssh登录优先。具体可参考 https://jingyan.baidu.com/article/c275f6ba08267ae33c756758.html
正题--安装nginx
参考链接:http://www.cnblogs.com/EasonJim/p/7806879.html#commentform
更新包源: apt-get update
安装gcc g++的依赖库
sudo apt-get install build-essential sudo apt-get install libtool
安装pcre依赖库(http://www.pcre.org/),PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正规表达式库.
sudo apt-get install libpcre3 libpcre3-dev
安装zlib依赖库(http://www.zlib.net),zlib 是通用的压缩库,提供了一套 in-memory 压缩和解压函数。zlib 也支持读写 gzip (.gz) 格式的文件。源码网址:http://www.gzip.org/zlib/。
sudo apt-get install zlib1g-dev
安装SSL依赖库(16.04默认已经安装了), 有这个才能支持https
sudo apt-get install openssl libssl-dev , libssl-dev 如果不做这方面的开发,可以不安装libssl-dev
安装Nginx
#下载最新版本: wget http://nginx.org/download/nginx-1.14.2.tar.gz #解压: tar -zxvf nginx-1.14.2.tar.gz #进入解压目录: cd nginx-1.14.2 #配置: ./configure --prefix=/usr/local/nginx --user=www
#可以不指定用户,然后在nginx.conf里通过命令指定。如果两处都不指定默认会以nobody用户运行nginx,会导致403.
# 默认是没有用户www的, 可执行 useradd www #编译: make #安装: sudo make install #启动:
1)可直接使用文件路径 /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 注意:-c 指定配置文件的路径,不加的话,nginx会自动加载默认路径的配置文件,可以通过-h查看帮助命令。
查看默认使用的配置路径可以使用 -t命令
root@localhost:/usr/local/nginx/sbin# ./nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
2)如果闲每次敲路径麻烦,可以把nginx的路径加入到系统变量PATH中。
可使用 vim /etc/profile
在打开的文件中最后加入 export PATH=$PATH:/usr/local/nginx/sbin
然后执行 source /etc/profile
OK ,现在可以直接使用nginx 命令了
常用命令
查看进程: ps -ef | grep nginx
帮助
nginx -? 或 nginx -h
查看版本
nginx -v #只显示版本信息
nginx -V #显示版本信息,以及配置信息
测试配置文件
测试当前配置文件是否正确: nginx -t
测试指定配置文件是否正确: nginx -t 指定配置文件路径
发送信息给nginx主进程
nginx -s stop | quit | reopen | reload #具体含义后面会有
注意: 这个命令执行时,会先找到配置文件,再依据配置文件指定的pid存储路径(如果没有,则是默认路径/usr/local/nginx/logs/nginx.pid),从中读取主进程号,给这个进程发送通知。
而如果运行多个nginx实例,可能会出现你意想不到的情况。
比如果执行了以下 两条命令,运行了两个实例
nginx #采用默认配置 主进程号 21777
nginx -c /nginxtest/nginx.conf #采用配置文件/nginxtest/nginx.conf 主进程号21892
如果/nginxtest/nginx.conf 这个配置里没有指定pid路径,则采用的是默认路径/usr/local/nginx/logs/nginx.pid,
也就是说执行第二条命令的时候,把第一条命令时产生的nginx.pid给覆盖了,里面的值是21892
在这种情况下如果执行nginx -s stop ,关闭的是第二个实例(主进程号为21892),第一个实例仍然在运行。
而且再一次执行nginx -s stop 会报错,因为stop的时候,已经将nginx.pid删除了,找不到对应的pid,无法发送命令。
正确的方式是:
1.通过在每个配置文件里指定不同的pid路径,如
pid /nginxtest/nginx.pid;
2.发送通知时,指定配置文件,如
nginx -s reload -c /nginxtest/nginx.conf
停止:
启动:
进入nginx安装目录/sbin/下执行
nginx 或者 nginx -c 特定位置的nginx.conf
重启:
nginx -s reload 平滑的重启。配置重载。
nginx工作中,包括一个master进程,多个worker进程。worker进程负责具体的http等相关工作,master进程主要是进行控制等控制。
nginx -s reload 命令加载修改后的配置文件,命令下达后发生如下事件
1. Nginx的master进程检查配置文件的正确性,若是错误则返回错误信息,nginx继续采用原配置文件进行工作(因为worker未受到影响)
2. Nginx启动新的worker进程,采用新的配置文件
3. Nginx将新的请求分配新的worker进程
4. Nginx等待以前的worker进程的全部请求已经都返回后,关闭相关worker进程
5. 重复上面过程,知道全部旧的worker进程都被关闭掉。
所以,重启之后,master的进程号不变,worker的进程号会改变。
日志分割:
nginx -s reopen 重新打开日志文件。
为什么要切割日志?一般Nginx安装好后有些人会打开日志记录,有些人会关闭日志记录,打开日志记录的人一般都会把架设在Nginx上的所有网站日志都存在同一个文件里(比如我存在access.log日志文件里),
这样日积月累所有网站的访问记录就会把日志文件越积越大,当需要查看日志文件的时候一看就是一大串,不方便查找。现在,如果我把每天的日志文件分割开来用相应的日期标识出来这样就大大方便查找了。
我是建议打开日志记录,日志记录里面存放着很多有用的东西。比如:浏览器名称,可以方便你对网站的排版做出调整;IP地址,如果网站收到攻击,你就可以查到那个IP地址。
Linux下我们可以简单的把日志文件mv走,但是你会发现mv走后新的日志文件没有重新生成,一般linux下用的文件句柄,文件被打开情况下你mv走文件,但是原来操作这个文件的进程还是有这个文件的inode等信息,
原进程还是读写原来的文件,因此简单的mv是无法生效的。
因此建议过程如下
1. mv原文件到新文件目录中,这个时候 nginx还写这个文件(写入新位置文件中了)
2. 调用nginx -s reopen用来打开日志文件,这样nginx会把新日志信息写入这个新的文件中
这样完成了日志的切割工作, 同时切割过程中没有日志的丢失。
Ubuntu1604下安装nginx1.14.2——vmfusion_Securecrt_ssh
原文:https://www.cnblogs.com/killerwxl/p/10451259.html