nginx编译调试(编辑nginx配置文件)
编辑nginx配置文件
想要搭建个人网站,就需要有单独的服务器,就在阿里云购买了台服务器,选择系统为“Ubuntu 14.04.5 LTS”,并在阿里云买了个域名(域名是为了方便记忆,否则输入ip地址访问网站很不方便),下面就使用Ubuntu系统搭建WordPress个人网站。
安装WordPress运行环境
1.安装Mysql数据库
apt update
apt upgrade
apt install mysql-server
查看mysql是否安装成功:
root@iZ2zeeg42qkecbhciml4pcZ:~# mysql --version
mysql Ver 14.14 Distrib 5.5.62, for debian-linux-gnu (x86_64) using readline 6.3
2.安装PHP
apt-get install software-properties-common
add-apt-repository ppa:ondrej/php
apt update
apt install php7.2
apt install libapache2-mod-php7.2
apt install php7.2-mysql
apt install php7.2-fpm
查看php是否安装成功:
root@iZ2zeeg42qkecbhciml4pcZ:~# php -v
PHP 7.2.16-1+ubuntu14.04.1+deb.sury.org+1 (cli) (built: Mar 7 2019 20:42:24) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.16-1+ubuntu14.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies
3.安装Nginx
install nginx
查看Nginx是否安装成功:
root@iZ2zeeg42qkecbhciml4pcZ:~# nginx -v
nginx version: nginx/1.4.6 (Ubuntu)
重启Nginx后,在浏览器中输入http://阿里云服务器外网IP地址/
service nginx stop
service nginx start
如果图片显示为下图,说明阿里云服务器自动启动了apache2的服务,apache2和nginx都使用80端口,80端口冲突。
关闭apache2的服务
重启php7.2-fpm服务和Nginx服务:
在浏览器中输入http://阿里云服务器外网IP地址/
安装WordPress及其配置
1.Mysql创建数据库和用户:
root@iZ2zeeg42qkecbhciml4pcZ:~# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 44
Server version: 5.5.62-0ubuntu0.14.04.1 (Ubuntu)
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> create database 数据库名称 character set utf8 collate utf8_general_ci;
Query OK, 1 row affected (0.00 sec)
mysql> grant all on 数据库名称.* to '用户名'@localhost identified by '用户密码';
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql> quit
Bye
root@iZ2zeeg42qkecbhciml4pcZ:~#
2.下载WordPress并安装:
获取WordPress软件:点击此处
将下载的wordpress-5.0.3-
zh_CN.tar.gz
上传到云服务器上安装wordPress:
root@iZ2zeeg42qkecbhciml4pcZ:~# ls
wordpress-5.0.3-zh_CN.tar.gz
root@iZ2zeeg42qkecbhciml4pcZ:~# mv wordpress-5.0.3-zh_CN.tar.gz /var/www/
root@iZ2zeeg42qkecbhciml4pcZ:~# cd /var/www/
root@iZ2zeeg42qkecbhciml4pcZ:/var/www# ls
html wordpress-5.0.3-zh_CN.tar.gz
root@iZ2zeeg42qkecbhciml4pcZ:/var/www# tar -zxvf wordpress-5.0.3-zh_CN.tar.gz
......
root@iZ2zeeg42qkecbhciml4pcZ:/var/www# ls
html wordpress wordpress-5.0.3-zh_CN.tar.gz
root@iZ2zeeg42qkecbhciml4pcZ:/var/www# cd wordpress/
root@iZ2zeeg42qkecbhciml4pcZ:/var/www/wordpress# ls
index.php readme.html wp-admin wp-comments-post.php wp-content wp-includes wp-load.php wp-
mail.php
wp-signup.php xmlrpc.phplicense.txt
wp-activate.php wp-blog-header.php wp-config-sample.php wp-cron.php wp-links-opml.php wp-login.php wp-settings.php wp-trackback.phproot@iZ2zeeg42qkecbhciml4pcZ:/var/www/wordpress# mv wp-config-sample.php wp-
config.php
使用vim命令编辑wp-config.php:
vim wp-config.php
修改文件中的数据库配置信息,填写刚才创建的数据库信息:
/** WordPress数据库的名称 */
define('DB_NAME', '数据库名称');
/** MySQL数据库用户名 */
define('DB_USER', '用户名');
/** MySQL数据库密码 */
define('DB_PASSWORD', '数据库密码');
/**
* WordPress数据表前缀。
*
* 如果您有在同一数据库内安装多个WordPress的需求,请为每个WordPress设置
* 不同的数据表前缀。前缀名只能为数字、字母加下划线。
*/
$table_prefix = 'wp_';
在阿里云控制台将域名解析到指定的服务器上:
控制台->域名->解析->添加纪录
配置服务安全组策略,将80(http)端口和443(https)端口开放:
控制台->云服务器ECS->网络和安全->安全组->配置规则
配置80端口:
配置443端口:
配置后查看内容:
编辑Nginx配置文件:/etc/nginx/sites-available/default
client_max_body_size 10m;
server {
listen 80;
listen [::]:80;
server_name localhost; #你的域名
root /var/www/wordpress;
index index.php index.html index.htm index.nginx-debian.html;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
#try_files $uri $uri/ =404;
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
# include fastcgi.conf;
include fastcgi_params;
fastcgi_buffer_size 128k;
fastcgi_buffers 32 32k;
#fastcgi_intercept_errors on;
# With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
# With php-cgi (or other tcp sockets):
#fastcgi_pass 127.0.0.1:9000;
}
}
重启Nginx后,在浏览器中输入http://阿里云服务器外网IP地址/
service nginx stop
service nginx start
在浏览器中访问自己的域名,查看是否成功:
到此WordPress就安装成功了,你可以自行配制您的网站信息。
nginx编译ssl
一旦在阿里云购买并上传了SSL证书,就需要将其部署到网站上,才能通过HTTPS协议访问网站。下面是简单的部署步骤:
1. 登录阿里云控制台,进入SSL证书管理页面,在该服务下,选择证书操作-下载CA证书、下载证书和下载密钥等三个按钮,下载三个文件。
2. 登录到你的服务器,并复制下载的证书和密钥文件到服务器中。可以将它们放在 /etc/ssl/certs 和 /etc/ssl/private 目录下。
3. 打开网站的httpd.conf文件,找到包含443端口的SSL虚拟主机条目。如果没有,添加一个。
4. 为虚拟主机启用SSL,并将证书和密钥文件的路径指向正确的文件。例如:
```
<VirtualHost *:443>
ServerName www.example.com
SSLEngine On
SSLCertificateFile /etc/ssl/certs/example.com.pem
SSLCertificateKeyFile /etc/ssl/private/example.com.key
...
</VirtualHost>
```
5. 检查配置文件并重启服务器。如果一切正常,现在应该可以通过HTTPS协议访问网站了。
需要注意的是,由于不同的服务器和操作系统可能有不同的配置方法,因此请始终查阅特定于你的服务器和操作系统的SSL部署文档,并遵循最佳实践。错误的配置可能导致网站无法访问或存在安全风险。
nginx 编译
1、Nginx基本工作原理
NGINX以高性能的负载均衡器,缓存,和web服务器闻名。Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,当它接到一个HTTP请求时,仅仅通过查找配置文件将客户端请求映射到一个location block(location是Nginx配置中的一个指令,用于URL匹配),而在这个location中所配置的每个指令将会启动不同的模块去完成相应的工作。
因此模块可以看做Nginx真正的劳动工作者。通常一个location中的指令会涉及一个handler模块和多个filter模块(当然,多个location可以复用同一个模块)。handler模块负责处理请求,完成响应内容的生成,而filter模块对响应内容进行处理。
Nginx的模块直接被编译进Nginx,因此属于静态编译方式。启动Nginx后,Nginx的模块被自动加载,不像Apache,首先将模块编译为一个so文件,然后在配置文件中指定是否进行加载。在解析配置文件时,Nginx的每个模块都有可能去处理某个请求,但是同一个处理请求只能由一个模块来完成。
nginx编译后放到其他环境路径有问题
1,下载PHP
php下载版本比较多,其中,
vc9=vs2008编译,推荐使用IIS+php搭配模式,
vc6=vs6编译,推荐使用apache+php方式搭配,
Thread Safe,线程安全,执行时会进行线程(Thread)安全检查,以防止有新要求就启动新线程的CGI执行方式而耗尽系统资源。Non Thread Safe是非线程安全,在执行时不进行线程(Thread)安全检查。
Non Thread Safe,
再来看PHP的两种执行方式:ISAPI和FastCGI。
ISAPI执行方式是以DLL动态库的形式使用,可以在被用户请求后执行,在处理完一个用户请求后不会马上消失,所以需要进行线程安全检查,这样来提高程序的执行效率,所以如果是以ISAPI来执行PHP,建议选择Thread Safe版本;
而FastCGI执行方式是以单一线程来执行操作,所以不需要进行线程的安全检查,除去线程安全检查的防护反而可以提高执行效率,所以,如果是以FastCGI来执行PHP,建议选择Non Thread Safe版本。
官方并不建议你将Non Thread Safe 应用于生产环境,所以我们选择Thread Safe 版本的PHP来使用。
2,配置php
解压到某个目录,如c:/php345
将php.ini-development重命名为php.ini
fastcgi.impersonate=1 默认为0,如果使用IIS,你需要开启:cgi.fix_pathinfo=1
cgi.force_redirect=0 默认开启,如果你使用IIS,可以将其关闭
其次指定extension_dir目录和date.timezone目录
extension_dir = "C:/php53iis/ext"
date.timezone= Asia/Shanghai
修改PHP.INI配置文件中的cgi.fix_pathinfo = 1,PHP 会修正 SCRIPT_FILENAME 为真实的文件地址,否则 PHP 将无法找到需要处理的 PHP 文件。
3,配置nginx
解压nginx,如c:/nginx
设定error.log的存放目录,将#error_log logs/error.log;的#去处,默认error.log是存放在Nginx安装目录中logs目录下。
nginx 调试
可以设置upstream_response_time的时间来控制多个服务器的切换时间 另外,max_fails=3 fail_timeout=30s,可以通过设置失败次数和超时时间来控制失败时间,默认是3*30=90秒
nginx 编程
Nginx 是一个高性能的 Web 服务器,能够同时处理大量的并发请求。它结合多进程机制和异步机制 ,异步机制使用的是异步非阻塞方式 。
Nginx 的多线程机制和异步非阻塞机制 。
1、多进程机制
服务器每当收到一个客户端时,就有 服务器主进程 ( master process )生成一个 子进程( worker process )出来和客户端建立连接进行交互,直到连接断开,该子进程就结束了。
使用进程的好处是各个进程之间相互独立,不需要加锁,减少了使用锁对性能造成的影响,同时降低了编程的复杂度和开发成本。
2、异步非阻塞机制
每个工作进程 使用 异步非阻塞方式 ,可以处理多个客户端请求 。
当某个 工作进程 接收到客户端的请求以后,调用 IO 进行处理,如果不能立即得到结果,就去 处理其他请求 (即为 非阻塞 );而 客户端 在此期间也 无需等待响应 ,可以去处理其他事情(即为 异步 )。
nginx编译安装如何启动
可以,压缩当前部署的Nginx的目录,拷贝到指定的路径解压部署。
nginx编程语言
我负责过QQ秀和Qzone的运维,也在QQ秀做过开发,当时我所在的部门,如果用java作为开发语言的话以当时服务器的数量是不足以支撑数亿用户的服务的。
要知道,与淘宝不同,腾讯许多业务是免费使用的,例如qzone的许多功能都可以免费使用包括心情,日志,相册,服务器要承担这些亿级的有大量高密集的碎片化请求,如果用java来支撑,经济上是不划算是一方面,响应速度方面用户体验也非常不好。
再来看淘宝,与qzone发个心情,日志相比淘宝用户在淘宝上的行为最终要触发商品交易的,说通俗点就是淘宝用户的行为大都是跟钱相关,而且淘宝要不断迭代更新的同时确保程序逻辑的严谨,Java综合来说是个非常好的选择。
对于高效处理这些高密集的用户请求,c是一个非常好方案,非常适合腾讯的用户场景;淘宝也不是不用c,像淘宝的图片服务器,也是属于海量的高密集用户请求服务,淘宝在这里使用淘宝技术团队修改过的nginx,我们都知道nginx就是c开发的,类似的场景在淘宝的服务架构里应该还有很多这样的例子,阿里也雇佣了不少c的工程师,Linux内核工程师。
nginx编译openssl
chrome版本不支持意思是当前所使用版本太低不受系统支持,下载chrome新版本即可。chrome版本不支持的几种解决办法1、换浏览器Chrome 51+ 不支持带 NPN 的 HTTP/2 网站,作为浏览者,可以使用其它的浏览器,比如 Safari、Edge 之类。这样就可以用新的协议来访问世界上那 10% 支持 HTTP/2 的 Web 服务器了。
2、换服务器Ubuntu 16.04 LTS 是目前唯一官方支持 openssl-1.0.2 的 Linux 发行版,如果一直采用 Ubuntu 做服务器,可用考虑一下升级,LTS 版本的支持期长达五年。
3、重新编译使用新的 openssl-1.0.2 源代码重新编译你的 Web 服务器,比如 nginx。
4、容器除了自己编译之外,如果你的系统环境中已经有了容器支持,你还可以在容器中运行一个 Ubuntu 16.04 LTS,并将 Web 服务器运行在其中。
本网站文章仅供交流学习 ,不作为商用, 版权归属原作者,部分文章推送时未能及时与原作者取得联系,若来源标注错误或侵犯到您的权益烦请告知,我们将立即删除.