CVM + Nginx 搭建记录
- 学生优惠
10 元*6 月 + 域名
1C + 2G + ubuntu 16.04 - CVM + 域名 + CDN
配置 CDN 时,域名要解析到 cname - 问题:修改了
/var/www/html
下的index.html
,现在按 ip 访问能展示这个页面,按域名访问还是 nginx 页面。 -
搭建流程和结果
安装:$ apt install nginx
启动:$ nginx
重启:$ nginx -s reload
访问域名看到:
1.png 访问公网 IP:
2.png
-
配置文件修改
- 如果启动了防火墙,则添加规则,允许nginx http:
sudo ufw allow "Nginx HTTP"
确认ufw状态:
sudo ufw status
ifconfig
获取IP地址,curl
看是否调出Nginx欢迎页面
-
查看配置信息:
$ nginx -t
返回配置信息的目录
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
-
打开上面的文件:
$ cd /etc/nginx
$ cd sites-enabled
进入此文件夹
$ vim default
编辑 default 文件
将 root /var/www/html; 改为自己的域名,如 root /root/my.com;
nginx默认启用一个nginx配置,配置为从目录/var/www/html中提供文档。 -
若网站的文件放在了root目录下,或者访问出现了403错误,还要做下面一步:
进入/etc/nginx
,编辑nginx.conf文件:$ vi nginx.conf
把第一行user www-data
改成user root
-
改完配置后重启:$ nginx -s reload
至此http服务器就跑起来了
- 如果启动了防火墙,则添加规则,允许nginx http:
-
一些依赖库
-
安装 gcc g++ 依赖
$ apt-get install build-essential
$ apt-get install libtool
-
安装 pcre 依赖库 http://www.pcre.org
$ apt-get install libpcre3 libpcre3-dev
-
安装 zlib依赖库 http://www.zlib.net
$ apt-get install zlib1g-dev
-
安装 ssl依赖库
$ apt-get install openssl
-
-
nginx 常用操作
- 查看 nginx 进程
$ ps -ef | grep nginx
- 查看 nginx 状态
$ systemctl status nginx
- 启动
$ systemctl start nginx
- 停止
$ systemctl stop nginx
- 重启
$ systemctl restart nginx
- 只是进行配置更改,可在不影响运行的情况下重新载入Nginx配置文件:
systemctl reload nginx
- 禁止开机启动:
$ sudo systemctl disable nginx
- 恢复开机启动:
$ sudo systemctl enable nginx
- 查看 nginx 进程
-
遇到的问题
问题一
- 错误:nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed
- 问题描述:
$ /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf $ nginx.service: Failed at step EXEC spawning /usr/local/nginx/conf/nginx: No such file or director
使用nginx -c的参数指定nginx.conf文件的位置,提示:nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
-
问题原因:
上述命令指定了/etc/nginx/nginx.conf作为nginx的配置文件,不过这个文件存放目录并不是这里,所以执行出错 -
解决方法:
step1: 查看自己的 nginx.conf 所在位置
(/usr/local/nginx/conf/nginx.conf)
step2:
$ vi /lib/systemd/system/nginx.service
修改 /lib/systemd/system/nginx.service,把 /etc/nginx/nginx 部分都改为 /usr/local/nginx/conf/nginx
然后执行:
$ systemctl daemon-reload
$ systemctl start nginx
其中,ExecStartPre是systemd启动服务前预执行的命令,通常用来检查配置或者设置环境变量
问题二
- 和上述相似的配置文件冲突,nginx 启动不了
- apt get install 了一个 nginx,又自行安装了一个,两者冲突
- 卸载干净,或者重装
- 备注
- 管理 nginx 时,service nginx reload 经常失效,建议使用 systemctl
- 参考文章:
https://cloud.tencent.com/developer/article/1160474
https://segmentfault.com/a/1190000009514737
https://segmentfault.com/q/1010000009685710/a-1020000009685928
https://www.cnblogs.com/piscesLoveCc/p/5794926.html
- 设置 nginx
- 参考https://linghucong.js.org/2016/08/18/ubuntu_1604_web_server_config_LEMP/
nginx的默认配置文件为/etc/nginx/sites-available/default
新建的站点,对应下面的配置文件:
/etc/nginx/sites-available/example.com
- 参考https://linghucong.js.org/2016/08/18/ubuntu_1604_web_server_config_LEMP/
没有意义:
/var/www/example.com/html/index.html
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
/etc/nginx/sites-enabled$ sudo vi example.com
server {
listen 80;
listen [::]:80;
root /var/www/example.com/html;
index index.html index.htm index.nginx-debian.html;
server_name example.com www.example.com;
location / {
try_files $uri $uri/ =404;
}
}