linux下安装nginx

Linux安装nginx含ssl(https)配置(亲测)
选定源码目录
选定目录 /usr/local/
cd /usr/local/
安装PCRE库
yum install pcre-8.21
.安装zlib库
cd /usr/local/
wget http://www.zlib.net/zlib-1.2.11.tar.gz   
tar -xvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure
make
make install
安装ssl
cd /usr/local/
wget https://www.openssl.org/source/openssl-1.0.2t.tar.gz
tar -xvf openssl-1.0.2t.tar.gz
cd openssl-1.0.2t
./config
make
make install

yum -y install gcc pcre-devel zlib-devel openssl openssl-devel

安装nginx
cd /usr/local/
wget http://nginx.org/download/nginx-1.14.0.tar.gz
tar -xvf nginx-1.14.0.tar.gz 
 cd nginx-1.14.0/
./configure --prefix=/usr/local/nginx
make
make install
使用 /usr/local/nginx/sbin/nginx -t可查看应用nginx.conf的位置
ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
nginx -c /usr/local/nginx/conf/nginx.conf

the HTTP rewrite module requires the PCRE library报错
./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=<path> option.

解决办法:yum -y install pcre-devel
server {
        listen 443;
        server_name www.test.com; #填写绑定证书的域名
        ssl on;
        ssl_certificate ssl/5334682_www.test.com.pem; # hps文件夹下的.crt文件
        ssl_certificate_key ssl/5334682_www.test.com.key; #hps文件夹下的.key文件
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; #按照这个套件配置
        ssl_prefer_server_ciphers on;

            location /test-admin {
           proxy_pass http://127.0.0.1:6001/test-admin;                                             
        }

        location /test-file/ {
           alias  /home/test/test-file/;
        }
    }
由于我们未装SSL模块,启动时,会提示nginx:[emerg]unknown directive ssl错误
解决方案:
步骤一:我们先来到当初下载nginx的包压缩的解压目录,如果你是看小编写的教程安装的,解压目录应该在“/usr/loacl/nginx-1.14.0/”,绝大多数应该都是在这个目录下的。

步骤二:来到解压目录下后,按顺序执行一下命令: 
 命令1、./configure --with-http_ssl_module  //重新添加这个ssl模块

  注意如果没有出现错误,则直接看命令2即可 
   执行以上一条命令出现这个错误(./configure:错误:SSL模块需要OpenSSL库。),原因是因为缺少了OpenSSL,那我们再来安装一个即可执行:yum -y install openssl openssl-devel 
  等待OpenSSL的安装完成后,再执行./configure --with-http_ssl_module ,最后在执行” 命令1" 即可
 命令2、执行make命令,但是不要执行make install,因为make是用来编译的,而make install是安装,不然你整个nginx会重新覆盖的。
 命令3、在我们执行完做命令后,我们可以查看到在nginx解压目录下,objs文件夹中多了一个nginx的文件,这个就是新版本的程序了。首先我们把之前的nginx先备份一下,然后把新的程序复制过去覆盖之前的即可。
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
cp objs/nginx /usr/local/nginx/sbin/nginx
./sbin/nginx -V
Linux下生成https证书并且进行nginx配置
# 生成密钥server.key,需要输入密码pass
openssl genrsa -des3 -out server.key 2048
# 去除server.key中的密码,防止以后重复输入
openssl rsa -in server.key -out server.key
# 创建服务器证书的申请文件server.csr
openssl req -new -key server.key -out server.csr
# 创建CA证书 ca.crt
openssl req -new -x509 -key server.key -out ca.crt -days 3650
# 创建自当前日期起有效期为期十年的服务器证书server.crt
openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt

nginx开机启动
centos 7以上是用Systemd进行系统初始化的
Systemd服务文件以.service结尾,比如现在要建立nginx为开机启动,如果用yum install命令安装的,yum命令会自动创建nginx.service文件,直接用命令
#systemcel enable nginx.service

在这里我是用源码编译安装的,所以要手动创建nginx.service服务文件。
开机没有登陆情况下就能运行的程序,存在系统服务(system)里,即:
#cd /usr/lib/systemd/system
#vi nginx.service

内容如下:
[Unit]
Description=nginx
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx  -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target

[Unit]:服务的说明
Description:描述服务
After:描述服务类别

[Service]服务运行参数的设置
Type=forking是后台运行的形式
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间

注意:[Service]的启动、重启、停止命令全部要求使用绝对路径
[Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3

设置开机启动:
#systemctl enable nginx.service

停止开机自启动:
#systemctl disable nginx.service

posted @ 2022-03-16 16:56  四毛二(ت)  阅读(49)  评论(0编辑  收藏  举报
/* 鼠标点击求赞文字特效 */