0%

centos安装nginx

记录centos中安装nginx的过程。

准备

安装依赖的包:

1
$ yum -y install gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel

我们去nginx的官网看看目前稳定的包是什么,http://nginx.org/en/download.html,目前为止,稳定的包是nginx-1.20.1,点击会下载当前nginx-1.20.1.tar.gz。我们下载下来后可以直接通过scp上传到服务器,这样免得在服务器下载浪费时间。

当然也可以直接在服务器中下载:

1
$ wget http://nginx.org/download/nginx-1.20.1.tar.gz

在服务器中解压缩:

1
$ tar -zxvf nginx-1.20.1.tar.gz

安装

进入解压的目录:

1
$ cd nginx-1.20.1

配置:

1
$ ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre

安装:

1
$ make && make install

一路跑下来没问题,那么就安装成功了。

nginx相关命令

启动nginx

1
$ /usr/local/nginx/sbin/nginx

停止nginx

1
$ /usr/local/nginx/sbin/nginx -s stop

重新载入配置

1
$ /usr/local/nginx/sbin/nginx -s reload

nginx配置

nginx默认配置文件路径为:/usr/local/nginx/conf/nginx.conf

默认的资源路径为:/usr/lcoal/nginx/html

设置Systemctl

centos7以上使用systemed进行系统初始化的。systemd服务文件以.service结尾,如果是用yum安装的nginx,yum命令会自动创建nginx.service,可以直接使用命令:

1
$ systemctl enable nginx.service

这样就设置为了开机启动。

但是我们用源码安装的方式是没有自动创建nginx.service文件的,需要手动创建:

1
$ vim /lib/systemd/system/nginx.service

放入内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
[Unit]
Description=nginx
After=network.target

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

[Install]
WantedBy=multi-user.target

这里/usr/local/nginx/sbin/nginx是安装nginx的路径,注意如果有变更的话这里也要变化。

说明nginx.service内容的各项参数:

  • [Unit] 服务的说明
    • Description 描述服务
    • After 描述服务类别
  • [Service] 服务运行参数的设置
    • Type=forking 是后台运行的形式
    • ExecStart 服务的具体运行命令
    • ExecReload为重启命令
    • ExecStop 停止命令
    • PrivateTmp=True 表示给服务分配独立的临时空间
  • [Install] 运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3

设置开机启动

1
$ systemctl enable nginx

停止开机启动

1
$ systemctl disable nginx

启动nginx服务

1
$ systemctl start nginx

重启nginx服务

1
$ systemctl restart nginx

重新加载nginx配置

1
$ systemctl reload nginx

nginx加入到全局环境变量中

上面虽然可以使用systemctl来控制nginx,但还是很不方便,我们希望可以直接使用nginx来操作。

要想加入到全局变量中,只需要创建个软链即可:

1
$ ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/

这样就可以在任何地方直接使用nginx命令:

1
$ nginx -s reload

配置网站

我们现在需要配置https://tcs-y.com这个域名到这个服务器的nginx.

前提准备:

  1. 申请号免费的域名ssl证书.
  2. 将域名的cert文件上传到服务器,总共两个文件tcs-y.key, tcs-y.pem
  3. 将域名解析到当前服务器的ip.

nginx的配置入口是/usr/local/nginx/conf/nginx.conf文件,我们选择单独的部署网站的方式,不要在这个默认配置里面直接加.

首先创建tcs-y站点相关的配置文件:

  1. /usr/local/nginx/conf下面创建文件:/usr/local/nginx/conf/sites/tcs-y.
  2. 准备好对应的ssl证书,放在/usr/local/nginx/conf/cert/tcs-y/tcs-y.key/usr/local/nginx/conf/cert/tcs-y/tcs-y.pem.

然后准备好站点对应的html文件,方便我们在配置好后确认:
站点的文件放在/var/www/tcs-y/index.html,先可以随便写点html:

1
<h2>hello, world!</h2>

然后编辑sites/tcs-y文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server {
listen 443 ssl;
server_name tcs-y.com;
ssl_certificate /usr/local/nginx/conf/cert/tcs-y/tcs-y.com.pem;
ssl_certificate_key /usr/local/nginx/conf/cert/tcs-y/tcs-y.com.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_prefer_server_ciphers on;

location / {
root /var/www/tcs-y;
index index.html index.htm;
try_files $uri $uri/ = 404;
}

}

然后将这个文件通过include的方式包含在nginx/conf/nginx.conf文件中:

1
2
3
4
5
6
http {
include mime.types;
include /usr/local/nginx/conf/sites/tcs-y;
default_type application/octet-stream;
....other
}

注意将这个文件include语句放到http区块里面.

然后重载nginx配置:nginx -s reload.

然后我们访问https://tcs-y,就可以正确的看到我们的页面.


记录

码字辛苦,打赏个咖啡☕️可好?💘