本文最后更新于:August 29, 2019 pm
记录一下个人博客的web服务器从apache换成nginx的过程。
0、前言 关于apache和nginx的对比有很多,小七就不在这里赘述了,之前大一搭建博客的时候还没有接触过nginx就用了apache,后来考RHCE的时候也学习配置的是apache,最近开始学习nginx,考虑到对于小七自己的静态博客和渣渣服务器性能来说,nginx应该更合适一些,因此这里就把web服务器换成了nginx。
1、备份快照 在阿里云的官网控制台里面创建快照备份。如果不小心翻车了,还能用快照恢复。
2、停用apache服务 $ systemctl stop httpd.service $ systemctl disable httpd.service Removed symlink /etc/systemd/system/multi-user.target.wants/httpd.service.
3、安装nginx 3.1 导入yum源 cat >> /etc/yum.repo.d/nginx.repo << EOF [nginx] name=nginx repo baseurl=http://nginx.org/packages/mainline/centos/7/x86_64/ gpgcheck=0 enabled=1 EOF yum clean all yum repolist yum install nginx -y
这里小七使用的是nginx提供的yum源,因此版本可能会稍微新一点。
想要安装最新版的同学可以前往官网下载源码进行编译安装。
官网地址:http://nginx.org/en/download.html
3.2 启用nginx服务并设置开机启动 $ system ctl enable nginx.service Created symlink from /etc/system d/system /multi-user .target.wants/nginx.service to /usr/lib/system d/system /nginx.service. $ system ctl start nginx.service
访问服务器IP。可以看到nginx已经开始工作。
这里有可能会出现Failed to read PID from file /run/nginx.pid
的错误
原因是nginx
还没有完全启动,systemd
就去读取该进程的PID导致无法读取报错,解决方法是让systemd
晚一点读取。
mkdir /etc/systemd/system/nginx.service.dcat >> /etc/systemd/system/nginx.service.d/override.conf << EOF [Service] ExecStartPost=/bin/sleep 0.1 EOF systemctl daemon-reload systemctl restart nginx.service systemctl status nginx.service
4、配置nginx 由于小七安装的版本里面的配置文件默认并没有nginx的web的相关配置,所以我们一次把http
、https
和http
自动跳转https
配好。
4.1 查看版本
4.2 配置https 从申请ssl认证的供应商那里下载nginx服务器对应的https认证证书,并存放在/etc/pki/CA/certs
目录下。(如果没有就新建该目录)
如果不知道怎么申请的可以查看这篇博客:
阿里云轻量级应用服务器CentOS系统Apache配置Https
4.3 编辑配置文件: 这里小七直接放出整个配置文件给大家参考:
默认的配置文件位于/etc/nginx/nginx.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"' ; access_log /var/log/nginx/access.log main; sendfile on; keepalive_timeout 65; include /etc/nginx/conf.d/*.conf; server { listen 80 default_server; listen 443 ssl; listen [::]:443 ssl; server_name tiny777.com www.tiny777.com; if ($server_port = 80) { return 301 https://$host$request_uri ; } root /etc/nginx/html; index index.html index.htm; ssl_certificate "/etc/pki/CA/certs/tiny777.com.pem" ; ssl_certificate_key "/etc/pki/CA/certs/tiny777.com.key" ; ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_prefer_server_ciphers on; include /etc/nginx/default.d/*.conf; location / { root /etc/nginx/html; index index.html index.htm; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } }
最后我们重启nginx
服务,就能查看到博客已经可以正常工作了。