最近在部署项目包括申请环境之类的东西,感触倒是也比较多,总想着记一记笔记。但是因为种种原因一拖再拖。今天终于下定决定从头整理。
几年前上家公司做过部署,但是因为规模小,所以所谓的服务器倒也是windows系统,当时也整理了线上环境搭建的简单过程。简单的线上环境搭建教程
不过这次部署是linux系统,并且用到了一直传说中的docker,差别蛮大的。这次是从一个空服务器开始的,整体分为三块:
- nginx下载安装使用
- docker私库创建
- docker启动
Nginx下载
下载地址是这个:
http://nginx.org/en/download.html
我这边下载的是linux系统的稳定版:
下载完之后我这边的安装是完全按照推荐路径来的,也就是/usr/local/nginx。第一次头铁想要自定义路径,后来发现和现有的各种教程有出入,改来改去贼麻烦,也就认输了。然后nginx需要一些依赖,我们在安装之前下载就行:
这里说个插曲,因为我们这个服务器是公司提供的,一开始下载依赖都会报错,后来发现是服务器设置的问题,找了安全团队解决的。之所以这里单独说下是因为一开始不敢确定是啥问题,自己鼓捣好久,总是怀疑是我命令或者操作有问题。浪费了一些时间,反正大家以后如果看到这个报错,可以第一时间往网络上想。
继续说nginx所需要的依赖:
- gcc环境:
yum install gcc-c++
- pere(解析正则的一个三方包)
yum install -y pcre pcre-devel
- zlib(压缩和解压的一个包)
yum install -y zlib zlib-devel
- openssl(如其名,用于支持https请求的一个三方包)
yum -y install pcre pcre-devel zlib zlib-devel openssl openssl-devel
nginx安装过程
解压
首先第一步下载的nginx包传到服务器上,解压到推荐目录下(这个目录其实是有点讲究的,属于约定俗成的一个东西,usr算是linux的系统级目录,一般用户自己安装的软件都建议放在/usr/local下。):
tar -xvf nginx-1.14.0.tar.gz -C /usr/local
创建makeFile文件
解压完成后,进入到/usr/local/nginx-xxx目录下(如果你的解压地址和我上面说的一样)然后执行下面这一串命令:
./configure
--prefix=/usr/local/nginx
--pid-path=/var/run/nginx/nginx.pid
--lock-path=/var/lock/nginx.lock
--error-log-path=/var/log/nginx/error.log
--http-log-path=/var/log/nginx/access.log
--with-http_gzip_static_module
--http-client-body-temp-path=/var/temp/nginx/client
--http-proxy-temp-path=/var/temp/nginx/proxy
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi
--http-scgi-temp-path=/var/temp/nginx/scgi
--with-http_stub_status_module
--with-http_ssl_module
--with-file-aio
--with-http_realip_module
需要注意的是如果报错:bash: ./configure: No such file or directory。
那我的建议是如下两步操作:
- 检查我们的nginx解压包里有没有configure,可以用如下命令:
find -name configure
- 在/usr/local/下创建nginx目录,命令如下:
mkdir nginx
这几步没啥难度,但是需要注意目录切换。
确定nginx源码目录下有makefile文件即可
创建临时文件目录
mkdir /var/temp/nginx -p
然后在nginx源码目录下编译和安装即可,命令如下(感觉执行第二个的时候没啥效果,不过因为我当时两个都执行了,所以无法验证第二个命令到底是不是必须的了):
make
make install
然后我们打开/usr/local/nginx的目录结构,如果包括cong,html,sbin。说明应该没问题。其中sbin中是执行文件,conf是配置文件。html是页面。
nginx命令
上面应该是安装完了,下面我们可以启动下试试,注意这个命令在sbin目录下执行:
./nginx
正常来讲这个时候nginx就可以启动了。然后这里如果报各种乱七八糟的问题,可以针对性百度或者排查。比如如果显示端口被占用,可以考虑是不是80端口被占用了,我们可以搜一下:
netstat -ntlp
我个人当时就遇到了这个问题,这里建议最开始用nginx默认的配置文件启动。因为默认的没啥配置,可以排除因为配置文件写的有问题启动不了。然后确定nginx启动没问题了,我们再去修改配置文件,一点点做成我们想要的配置。
下面列几个我们常用的命令:
- 启动nginx:
./nginx
- 刷新nginx配置文件:
./nginx -s reload
- 停止nginx:
./nginx -s stop
- nginx的启动/停止都要在sbin目录下执行
- nginx 的配置文件位于/usr/local/conf目录下的nginx.conf文件
至于nginx的配置,说简单也简单,说难也挺复杂。反正我是多次重启反复尝试才算是配置了一个勉强能用的配置文件。个人建议就是遇到问题百度吧,我这边把配置文件贴出来分享下:
worker_processes 4;
error_log logs/error.log debug;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
server_tokens on;
server_names_hash_bucket_size 64;
server_names_hash_max_size 2048;
sendfile on;
server {
listen 443 ssl;
server_name cnbu.xxx.com;
rewrite ^/$ https://cnbu.xxx.com/xxx-ui/ permanent;
root html;
index index.html index.htm;
ssl_certificate cnbu_xxx_com.crt;
ssl_certificate_key cnbu_xxx_com.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location /xxx-ui/ {
client_max_body_size 8M;
client_body_buffer_size 128k;
fastcgi_intercept_errors on;
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
proxy_pass http://10.96.178.81:81/xxx-ui/;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
}
}
server {
listen 80;
server_name localhost;
location / {
return 301 https://cnbu.xxx.com;
}
location /admin {
client_max_body_size 8M;
client_body_buffer_size 128k;
fastcgi_intercept_errors on;
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
proxy_pass http://10.96.178.81:1338;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
至此,这个nginx就搭建完成。本篇笔记就到这里,如果对你稍有帮助记得点个喜欢点个关注。大家工作愉快吧~!