个人随笔记录 仅为个人笔记。
1. Linux上安装nginx
依赖安装
yum -y install gcc gcc-c++ autoconf pcre-devel make automake
yum -y install wget httpd-tools vim
在root下创建文件管理
cd /root
mkdir app
mkdir backup
mkdir download
mkdir logs
mkdir work
基于Yum的方式安装Nginx
查看系统支持版本 。不看的话直接装也行yum install nginx
yum list | grep nginx
自己配置.进入编辑模式
vim /etc/yum.repos.d/nginx.repo
复制进去 记得baseurl 7 对应centos对应版本
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
esc 后:wq 保存退出
1.安装nginx
- 安装
yum install nginx - 查看nginx版本号
nginx -v - 查看nginx安装在哪
rpm -ql nginx
2.文件功能介绍
- 全局配置文件 /etc/nginx/nginx.conf
- 默认配置文件/etc/nginx/conf.d/default.conf
- 网站根目录 /usr/share/nginx/html 这个文件下就是页面。在这个文件夹下输入nginx也是可以启动的,然后就能访问页面。直接访问你服务器就行
3.nginx的启动 停止
- 停止
nginx -s quit - 停止
nginx -s stop - 杀死nginx进程
killall nginx暴力停止.好用 - 启动
systemctl start nginx.service - 启动 直接
nginx可能没有反应,但是在centos7是可以起来的。可以用查看命令 - 重启
systemctl restart nginx.service - 重载配置文件
nginx -s reload - 查看nginx进程
ps aux | grep nginx - 查看端口号开启情况
netstat -tlnp
3.配置错误页面
多错误指向一个页面。在子配置文件 /etc/nginx/conf.d/default.conf 这个文件中加上一行404错误页面
error_page 500 502 503 504 /50x.html;
error_page 404 /404_error.html;+
如果不出现。看看你的浏览器是不是ie。我的ie就一直不出来。万恶的ie。
3.1配置外部错误页面
还是那个文件夹 vim /etc/nginx/conf.d/default.conf
error_page 500 502 503 504 /50x.html;
error_page 404 https://juejin.im/timeline;+
然后重启systemctl restart nginx.service
3.2配置固定ip访问,限制ip
vim /etc/nginx/conf.d/default.conf这个默认配置中
location / {
root /usr/share/nginx/html;
index index.html index.htm;
deny 127.0.0.1;
allow 127.0.0.1;
}
上面的deny就是限制,allow就是允许。403 Forbidden,nginx服务端配置禁止ip白名单
3.3 配置精确的目录权限
vim /etc/nginx/conf.d/default.conf这个默认配置中
location =/img {
allow all;
}
location =/admin {
deny all;
}
还可以使用正则。禁止访问.php结尾
location ~\.php$ {
deny all;
}
3.4 配置虚拟主机 (基于端口号)
/etc/nginx/conf.d 在这个文件下。第一个default.conf 是默认的虚拟主机80端口 每一个server 就是一个虚拟主机 多建立一个3000.conf文件.就是多一个server
3000.conf
server{
listen 3000;
server_name localhost;
root /usr/share/nginx/html/html3000;
index index.html;
}
在/usr/share/nginx/html 建立一个html3000文件夹,文件夹下面放一个html即可 root 就是映射到目标文件夹下 index就是映射的目标文件 基于ip的就是修改server_name 对应IP
3.5 Nginx使用域名设置虚拟主机
继续修改那个default.conf文件
server_name baidu.com;
3.6 Nginx反向代理
所谓正向代理:我们一般科学上网。就是靠一个能访问目标服务的代理服务器发出我们想要的请求。很多我们用户->一个代理->一个目标服务 (目标服务不知道我们是谁)保护的IP不被服务器知道
反向代理:相反。我们1个用户访问->一个代理->代理到不知道哪个服务器上。保护服务器IP不被我们知道
反向代理好处:
- 安全性:正向代理的客户端能够在隐藏自身信息的同时访问任意网站,这个给网络安全代理了极大的威胁。因此,我们必须把服务器保护起来,使用反向代理客户端用户只能通过外来网来访问代理服务器,并且用户并不知道自己访问的真实服务器是那一台,可以很好的提供安全保护。
- 功能性:反向代理的主要用途是为多个服务器提供负债均衡、缓存等功能。负载均衡就是一个网站的内容被部署在若干服务器上,可以把这些机子看成一个集群,那Nginx可以将接收到的客户端请求“均匀地”分配到这个集群中所有的服务器上,从而实现服务器压力的平均分配,也叫负载均衡。
配置: 找到default.conf 文件
server{
listen 80;
server_name nginx2.jspang.com;
location / {
proxy_pass http://jspang.com;
}
}
其它指令:
-
proxy_set_header :在将客户端请求发送给后端服务器之前,更改来自客户端的请求头信息。
-
proxy_connect_timeout:配置Nginx与后端代理服务器尝试建立连接的超时时间。
-
proxy_read_timeout : 配置Nginx向后端服务器组发出read请求后,等待相应的超时时间。
-
proxy_send_timeout:配置Nginx向后端服务器组发出write请求后,等待相应的超时时间。
-
proxy_redirect :用于修改后端服务器返回的响应头中的Location和Refresh。
3.7 Nginx适配PC或移动设配
适配两种:
- 1.服务端有配置。2个站点对应两套代码。H5移动和PC端。H5移动使用rem自适应。在手机上流畅无比,在电脑上调试时必须手动刷新一下。适用于商城。
- 2.响应式布局。动态根据浏览器大小。调整布局。这种问题:有很多限制,还有性能问题。因为毕竟PC和移动端布局差别很大。响应式布局做这么大的改动,代码量不是1+1=2而是大于2。代码很容易臃肿。这种常见的就是做一下简单的博客。还有文章展示类页面。只能做到响应式,尺寸的变化一般是xs sm md lg 四个。不能像rem自适应那样动态变化大小。
配置:
/usr/share/nginx/html文件夹下建立两个文件夹pc和mobile,对应PC端和H5移动端
$http_user_agent 内置变量
etc/nginx/conf.d default.conf 进入配置文件修改
server{
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/pc;
if ($http_user_agent ~* '(Android|webOS|iPhone|iPod|BlackBerry)') {
root /usr/share/nginx/mobile;
}
index index.html;
}
}
3.8 Gzip压缩配置
简单配置/etc/nginx/nginx.conf 文件中。 打开配置。gizp已经默认有,但是被#注释了。放开就行。还有一点自定义的配置
http {
.....
gzip on;
gzip_types text/plain application/javascript text/css;
.....
}
指令:
- gzip : 该指令用于开启或 关闭gzip模块。
- gzip_buffers : 设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。
- gzip_comp_level : gzip压缩比,压缩级别是1-9,1的压缩级别最低,9的压缩级别最高。压缩级别越高压缩率越大,压缩时间越长。
- gzip_disable : 可以通过该指令对一些特定的User-Agent不使用压缩功能。
- gzip_min_length:设置允许压缩的页面最小字节数,页面字节数从相应消息头的Content-length中进行获取。
- gzip_http_version:识别HTTP协议版本,其值可以是1.1.或1.0.
- gzip_proxied : 用于设置启用或禁用从代理服务器上收到相应内容gzip压缩。
- gzip_vary : 用于在响应消息头中添加Vary:Accept-Encoding,使代理服务器根据请求头中的Accept-Encoding识别是否启用gzip压缩。
如果你是windows操作系统,你可以按F12键打开开发者工具,单机当前的请求,在标签中选择Headers,查看HTTP响应头信息。你可以清楚的看见Content-Encoding为gzip类型。
2. Linux上安装node
centos上只能源码安装。所以先去nodejs.org/en/官网下载吧。 node-v12.14.1-linux-x64.tar.xz
将下载包放到服务器上,你自己选择或者你创建也行
/root/tangjian/app/node-v12.14.1-linux-x64.tar.xz我的扔在这了```
解压:
# cd /root/tangjian/app
# tar -xf node-v12.14.1-linux-x64.tar.xz
安装后。包的同级会出现一个文件夹 node-v12.14.1-linux-x64文件夹更改压缩包的名字为node 。便于操作 建立软连接即可.在linux上的设置软连接相当于是windows下的配制环境变量一个道理
ln -s /root/tangjian/app/node/bin/npm /usr/local/bin/
ln -s /root/tangjian/app/node/bin/node /usr/local/bin/
3.Linux上安装pm2
前提:先安装node
全局安装pm2 npm install pm2 -g
在指令后面就是安装在在哪。一般是在node/bin/pm2下面
执行软连接 ln -s /root/tangjian/app/node/bin/pm2 /usr/local/bin/
其他指令
- 查看状态
pm2 list - 关闭所有pm2进程
pm2 stop all - 杀死所有pm2进程
pm2 delete all - 启动
pm2 start app.js
3.1部署nextjs
---------如何部署一个nextjs项目----- nextjs本身就是一个服务端。目标就是上到服务器,然后用pm2启动 先删除node_module->打包->上去->解压->npm i>启动 可以在package.json中指定端口号,到时候服务端启动时也是这个端口号访问
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start -p 3000 "
},
在window下打一个tar包
tar -zcvf ../blog.tgz .上一层找到那个blog.taz
xftp传递到服务器
解压。方法很多种,解压出来就行.然后进入目标项目目录 然后使用pm2 启动```pm2 start npm -- run start``.
如果启动失败,先杀死所以pm2 pm2 delete all ,再启动一次即可
3.2部署eggjs
这里部署一个eggjs的项目 在你的项目中。
npm install --production
tar -zcvf ../release.tgz .
然后上级目录会有一个 release.tgz包。放到linux上 然后解压出来
tar -zxvf release.tgz -C ./server/
tar -zxvf 目标包 -C 目标文件夹
然后进入文件夹。npm i 一下。然后npm start 启动 你会发现权限不足。保证你是root身份,删除node_module. 设置npm 镜像源
npm config set registry http://registry.npm.taobao.org
npm i
npm start
停止就是npm stop
参考:
翻阅issuegithub.com/eggjs/egg/i…我太难了...
参考胖哥教程jspang.com/detailed?id…