- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章linux服务器下LNMP安装与配置方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
Nginx与apache、lighttp性能综合对比,如下图
注意:关闭rpm默认安装的apache和mysql 。
1.准备php函数的rpm包 。
yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers 2.准备lnmp其他的源代码包 。
wget http://blog.s135.com/soft/linux/nginx_php/nginx/nginx-0.8.46.tar.gz wget http://blog.s135.com/soft/linux/nginx_php/php/php-5.2.14.tar.gz wget http://blog.s135.com/soft/linux/nginx_php/phpfpm/php-5.2.14-fpm-0.5.14.diff.gz wget http://blog.s135.com/soft/linux/nginx_php/mysql/mysql-5.5.3-m3.tar.gz wget http://blog.s135.com/soft/linux/nginx_php/libiconv/libiconv-1.13.1.tar.gz wget http://blog.s135.com/soft/linux/nginx_php/mcrypt/libmcrypt-2.5.8.tar.gz wget http://blog.s135.com/soft/linux/nginx_php/mcrypt/mcrypt-2.6.8.tar.gz wget http://blog.s135.com/soft/linux/nginx_php/memcache/memcache-2.2.5.tgz wget http://blog.s135.com/soft/linux/nginx_php/mhash/mhash-0.9.9.9.tar.gz wget http://blog.s135.com/soft/linux/nginx_php/pcre/pcre-8.10.tar.gz wget http://blog.s135.com/soft/linux/nginx_php/eaccelerator/eaccelerator-0.9.6.1.tar.bz2 wget http://blog.s135.com/soft/linux/nginx_php/pdo/PDO_MYSQL-1.0.2.tgz wget http://blog.s135.com/soft/linux/nginx_php/imagick/ImageMagick.tar.gz wget http://blog.s135.com/soft/linux/nginx_php/imagick/imagick-2.3.0.tgz 3.安装php-5.2.14源代码包所需要的函数支持包 。
。
复制代码 代码如下
tar zxvf libiconv-1.13.1.tar.gz cd libiconv-1.13.1/ ./configure --prefix=/usr/local make make install cd ../ 。
。
(libiconv库为需要做转换的应用提供了一个iconv()的函数,以实现一个字符编码到另一个字符编码的转换) 。
。
复制代码 代码如下
tar zxvf libmcrypt-2.5.8.tar.gz cd libmcrypt-2.5.8/ ./configure make make install cd libltdl/ ./configure --enable-ltdl-install make make install cd ../../ 。
。
(libmcrypt是加密算法扩展库。支持DES, 3DES, RIJNDAEL, Twofish, IDEA, GOST, CAST-256, ARCFOUR, SERPENT, SAFER+等算法。) 。
。
复制代码 代码如下
tar zxvf mhash-0.9.9.9.tar.gz cd mhash-0.9.9.9/ ./configure make make install cd ../ (加密算法支持) ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4 ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8 ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2 ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1 ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config tar zxvf mcrypt-2.6.8.tar.gz cd mcrypt-2.6.8/ ./configure make make install cd ../ 。
。
4. 编译安装MySQL 5.5.3-m3 。
。
复制代码 代码如下
groupadd mysql useradd -g mysql mysql tar zxvf mysql-5.5.3-m3.tar.gz cd mysql-5.5.3-m3 ./configure --prefix=/usr/local/mysql --without-debug --enable-thread-safe-client --with-pthread --enable-assembler --enable-profiling --with-mysqld-ldflags=-all-static --with-client-ldflags=-all-static --with-extra-charsets=all --with-plugins=all --with-mysqld-user=mysql --without-embedded-server --with-server-suffix=-community --with-unix-socket-path=/tmp/mysql.sock Make #编译 Make install #安装 Cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf #准备mysql配置文件 Vi /etc/my.cnf [client] default-character-set=utf8 #修改客户端和连接字符集 [mysqld] character-set-server=utf8 #修改服务器和数据库字符集 collation-server = utf8_general_ci #修改服务器校验字符集 登陆mysql后可以\s查看字符集 Setfacl -m u:mysql:rwx -R /usr/local/mysql Setfacl -m d:u:mysql:rwx -R /usr/local/mysql #设置权限 /usr/local/mysql/bin/mysql_install_db --user=mysql #安装mysql和test数据库 /usr/local/mysql/bin/mysqld_safe --user=mysql & #启动mysql服务 /usr/local/mysql/bin/mysqladmin -uroot password 123 #修改mysql登录密码为123 /usr/local/mysql/bin/mysql -uroot -p123 #用mysql登录 。
。
5. 编译安装PHP(FastCGI模式。使用fastCGI管理php,加快php解析速度) 。
。
复制代码 代码如下
tar zxvf php-5.2.14.tar.gz gzip -cd php-5.2.14-fpm-0.5.14.diff.gz | patch -d php-5.2.14 -p1 #-p 1 是数字 #解压并打补丁,让php支持fpm来方便管理php-cgi进程(使用php-fpm管理fastCGI) # gzip -c 保留源文件 -d 解压 cd php-5.2.14/ ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap make ZEND_EXTRA_LIBS='-liconv' #编译过程设定变量(编译过程需要) make install cp /lnmp/php-5.2.14/php.ini-dist /usr/local/php/etc/php.ini cd ../ 。
。
6.准备编译安装PHP5扩展模块 。
。
复制代码 代码如下
tar zxvf memcache-2.2.5.tgz cd memcache-2.2.5/ /usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config make make install cd ../ tar jxvf eaccelerator-0.9.6.1.tar.bz2 cd eaccelerator-0.9.6.1/ /usr/local/php/bin/phpize ./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php/bin/php-config make make install cd ../ (eAccelerator是一个自由开放源码php加速器,优化和动态内容缓存,提高了php脚本的缓存性能,使得PHP脚本在编译的状态下,对服务器的开销几乎完全消除。 它还有对脚本起优化作用,以加快其执行效率。使您的PHP程序代码执效率能提高1-10倍) tar zxvf PDO_MYSQL-1.0.2.tgz cd PDO_MYSQL-1.0.2/ /usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysql make make install cd ../ tar zxvf ImageMagick.tar.gz cd ImageMagick-6.5.1-2/ ./configure make make install cd ../ (ImageMagick是一套功能强大、稳定而且免费的工具集和开发包,可以用来读、写和处理超过89种基本格式的图片文件,包括流行的TIFF、JPEG、GIF、 PNG、PDF以及PhotoCD等格式) tar zxvf imagick-2.3.0.tgz cd imagick-2.3.0/ /usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config make make install cd ../ 。
。
7. 修改php.ini文件,让php模块生效 。
。
复制代码 代码如下
vi /usr/local/php/etc/php.ini extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/" 手工添加 extension = "memcache.so" extension = "pdo_mysql.so" extension = "imagick.so" 再查找output_buffering = Off 修改为output_buffering = On 再查找 ; cgi.fix_pathinfo=0 修改为cgi.fix_pathinfo=0,防止Nginx文件类型错误解析漏洞 。
。
8. 在php.ini中配置eAccelerator加速PHP 。
。
复制代码 代码如下
mkdir -p /usr/local/eaccelerator_cache #准备eaccelerator缓存目录 vi /usr/local/php/etc/php.ini [eaccelerator] zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so" eaccelerator.shm_size="64" eaccelerator.cache_dir="/usr/local/eaccelerator_cache" eaccelerator.enable="1" eaccelerator.optimizer="1" eaccelerator.check_mtime="1" eaccelerator.debug="0" eaccelerator.filter="" eaccelerator.shm_max="0" eaccelerator.shm_ttl="3600" eaccelerator.shm_prune_period="3600" eaccelerator.shm_only="0" eaccelerator.compress="1" eaccelerator.compress_level="9" 。
。
9.准备php-cgi和nginx进程执行者用户 。
useradd nginx 10. 创建php-fpm配置文件- php-fpm.conf 。
vi /usr/local/php/etc/php-fpm.conf <value name="display_errors">0</value> #0改成1,页面上会输出错误日志. 取消注释 unix user of processes <value name="user">nginx</value> Unix group of processes <value name="group">nginx</value> 取消注释 。
<value name="max_children">128</value> #最大子进程数128,如果内存小于2G,则64个最佳 <value name="rlimit_files">65535</value> # Set open file desc rlimit,同时打开的文件数,linux系统允许同时打开的文件数为1024,修改linux系统中允许同时打开的文件,ulimit -SHn 65535,而且这个参数重启后还能生效,加到 /etc/profile全局配置文件的最后,开机就会生效,ulimit -a查看open files 65535 ulimit 用户控制shell启动进程所占用的资源 -H 设定硬性资源限制,也就是管理员设定的限制 -S 设定软性资源限制,弹性限制 -n 设定可同时打开的最大文件个数 -f 设定单个文件最大大小 -a 查看目前的限制 <value name="max_requests">1024</value> #最大请求数, How much requests each process should execute before respawn.一个子进程能够回应1042个请求 11. 启动php-cgi(fastcgi)进程,监听127.0.0.1的9000端口,进程数为128(如果服务器内存小于3GB,可以只开启64个进程),用户为nginx:
。
复制代码 代码如下
/usr/local/php/sbin/php-fpm start #启动php-cgi /usr/local/php/sbin/php-fpm reload #重新加载配置文件 /usr/local/php/sbin/php-fpm stop #关闭php-fpm,此时nginx肯定连不上php 。
。
12. 安装Nginx所需的pcre库 。
。
复制代码 代码如下
tar zxvf pcre-8.10.tar.gz cd pcre-8.10/ ./configure make && make install cd ../ 。
。
13. 安装Nginx 。
。
复制代码 代码如下
tar zxvf nginx-0.8.46.tar.gz cd nginx-0.8.46/ ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module make && make install cd ../ 。
。
14. 修改Nginx配置文件 。
。
复制代码 代码如下
vi /usr/local/nginx/conf/nginx.conf user nginx nginx; worker_processes 1; #相当于cpu个数 error_log logs/nginx_error.log; #错误日志 pid /usr/local/nginx/nginx.pid; #主进程PID保存文件 #Specifies the value for maximum file descriptors that can be opened by this process. worker_rlimit_nofile 65535; #文件描述符数量 events { use epoll; #网络I/O模型,建议linux使用epoll,FreeBSD使用kqueue worker_connections 65535; #最大允许连接数 } http { include 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 logs/access.log main; #调用格式的日志 sendfile on; tcp_nopush on; #tcp延迟 keepalive_timeout 65; #保持连接时间 。
。
fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; fastcgi_buffer_size 64k; fastcgi_buffers 4 64k; fastcgi_busy_buffers_size 128k; fastcgi_temp_file_write_size 128k; #fastcgi设置 gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_http_version 1.0; gzip_comp_level 2; gzip_types text/plain application/x-javascript text/css application/xml; gzip_vary on; #网络压缩设置 #limit_zone crawler $binary_remote_addr 10m; server { listen 80; #监听端口 server_name 192.168.150.253; #主机名,或IP。如果是主机名,要能够DNS解析 location / { root html; #网站主目录。/usr/local/nginx/html/ index index.html index.htm index.php; #默认网页顺序 } #limit_conn crawler 20; location ~ .*\.(php|php5)?$ #~:匹配 后面正则表达式:.*任意字符 \.点 php或php5结尾。碰到网页文 件名是.php或.php5结尾 { root html; #fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_pass 127.0.0.1:9000; #连接fastcgi,用来解析php语句 fastcgi_index index.php; #首页为index.php #fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #启动fast-cgi,可以在每个服务中启动,也可以放入/usr/local/nginx/conf/fastcgi_params,每个server都可以享用 include fastcgi_params; #包括fastcgi_params中参数 } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; #图片格式缓存30天 } location ~ .*\.(js|css)?$ { expires 1h; #js/css缓存2小时 } log_format access '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" $http_x_forwarded_for'; access_log /data1/logs/access.log access; } } 。
。
15. 在/usr/local/nginx/conf/目录中创建fastcgi_params文件 。
。
复制代码 代码如下
Vi /usr/local/nginx/conf/fastcgi_params (与配置文件中,只写一个就好) fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name,
#建议把fastcgi_param写到nginx.conf中而不是把它写到fastcgi_params配置文件中,否则配置不够灵活,比如后面默认php设置和alias php设置中,他们的php页面的系统地址是不同的,比如: 默认php文件->/usr/local/nginx/html/index.php Alias php文件->/mnt/bbs/index.php 这个时候你会发现fastcgi_params中的SCRIPT_FILENAME的值是相同的,这样会导致alias php的页面出不来,而配置在nginx.conf中各自配置各自的php系统地址,这样比较灵活. #如果你觉得每个连接php的配置中都要加这一句话有点冗余,那就把它加入到fastcgi_params文件中,这样只需要加一次,其他所有的nginx.conf中的有关连接fastcgi的一块就不用加fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name这一句话了. 。
。
16.配置开机启动nginx,php-fpm,ulimit 。
1)nginx Vi /etc/rc.local /usr/local/nginx/sbin/nginx 2)php-fpm Vi /etc/rc.local /usr/local/php/sbin/php-fpm start 3)ulimit Vi /etc/profile ulimit -SHn 65535 4)mysql Vi /etc/rc.local /usr/local/mysql/bin/mysqld_safe --user=mysql & 17.检查nginx配置文件语句错误 /usr/local/nginx/sbin/nginx -t 18.平滑重启nginx进程 1)Pkill -HUP nginx 2)kill -HUP `pgrep -uroot nginx` Pgrep -uroot nginx 取出nginx主进程PID 3)/usr/local/nginx/sbin/nginx -s reload 19. 编写每天定时切割Nginx日志的脚本 。
1、创建脚本/usr/local/nginx/sbin/cut_nginx_log.sh vi /usr/local/nginx/sbin/cut_nginx_log.sh #!/bin/bash # This script run at 00:00 # The Nginx logs path logs_path="/usr/local/nginx/logs/" mkdir -p ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/ mv ${logs_path}access.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/access_$(date -d "yesterday" +"%Y%m%d").log kill -USR1 `cat /usr/local/nginx/nginx.pid` 。
2、设置crontab,每天凌晨00:00切割nginx访问日志 crontab -e 00 00 * * * /bin/bash /usr/local/nginx/sbin/cut_nginx_log.sh 。
20.配置nginx虚拟主机 Sina和sohu域名事先解析 。
。
复制代码 代码如下
Vi /usr/local/nginx/conf/nginx.conf ==èwww.sina.com公司网站 server { listen 80; server_name www.sina.com; access_log logs/sina.access.log main; location / { root /web/sina; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location ~ \.php$ { root /web/sina; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } ==èwww.sohu.com公司网站 server { listen 80; server_name www.sohu.com; access_log logs/sohu.access.log main; location / { root /web/sohu; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location ~ \.php$ { root /web/sohu; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } 。
最后在客户端测试虚拟主机www.baidu.com和www.sina.com两家公司网站 21.列表页显示 location / { autoindex on; #打开列表页 root html; index index.html index.php index.htm; } 22.虚拟目录设置 location /bbs{ alias /mnt/bbs/; } #这样配置html静态文件是可以出来的,但是php动态页面出不来,而且会浏览器的页面上会显示" No input file specified. "的报错,其实是php系统文件地址( SCRIPT_FILENAME)找不到,也就是说fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;中的$document_root$fastcgi_script_name不是真正的/mnt/bbs/index.php的地址,这可怎么解决: location /bbs { alias /mnt/bbs/; index bbs.php index.html index.php; } location ~ ^/bbs/ { root /mnt/; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; log_format bbs '$document_root$fastcgi_script_name '; access_log logs/bbs.access.log bbs; } #后面两行是关于日志的,就是为了更好的观察由nginx提交给fastcgi的php的系统地址SCRIPT_FILENAME,在这里我用$request_filename来给SCRIPT_FILENAME赋值,在日志中的结果为/mnt/bbs/index.php,在这里我发现一个问题就是$request_filename中的root设置为/mnt,否则$request_filename的值为:/mnt/bbs/bbs/index.php. 由以上可以得到一个结论,就是默认php设置也可以这样设置关于SCRIPT_FILENAME: location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; log_format php '$document_root$fastcgi_script_name '; access_log logs/php.access.log php; } #此时从日志中可以看到,$request_filename的值为/usr/local/nginx/html/index.php,而以前默认的/scripts$fastcgi_script_name显然是错的php系统地址,日志中显示为/scripts/index.php 23.nginx状态监控 location /nginxstatus{ stub_status on; access_log off; } #客户端访问网址:http://www.baidu.com/nginxstatus 24.rewrite正则过滤 location ~ \.php$ { proxy_pass http://127.0.0.1; } Rewrite指令最后一项参数为flag标记,支持的flag标记如下: Last 标示完成rewrite规则 Break 不再匹配后面的规则 Redirect 302临时重定向 Permanent 301永久重定向 Last和break用来实现uri重写,浏览器地址栏的url地址不变,但在服务器访问的路径发生了变化,redirect和permanent用来实现url跳转,浏览器地址栏会显示跳转后的url地址,使用alias指令时必须使用last标记,使用proxy_pass指令时要使用break标记,last标记在本条rewrite规则执行完毕后,会对其所在的server{}标签重新发起请求,而break标记则在本条规则匹配完成后,终止匹配,不再匹配后面的规则. 在匹配的过程中,nginx将首先匹配字符串,然后再匹配正则表达式,匹配到第一个正则表达式后,会停止搜索,如果匹配到正则表达式,则使用正则表达式的搜索结果,如果没有匹配到正则表达式,则使用字符串的搜索结果. 可以使用前缀"^~"来禁止匹配到字符串后,再去检查正则表达式,匹配到url后,将停止查询. 使用前缀"="可以进行精确的url匹配,如果找到匹配的uri,则停止查询,例如"location=/",只能匹配到"/",而"/test.html"则不能被匹配. 正则表达式的匹配,按照它们在配置文件中的顺序进行,写在前面的优先. Location = / { #仅仅匹配 / [configuration A] } Location / { #匹配任何以/开头的查询,但是正则表达式及较长的字符串(/bbs/)将被优先匹配. [configuration B] } Location ^~ /images/ { #匹配任何以/images/开头的字符串,并且停止搜索,所以正则表达式将不会被检查. [configuration C] } Location ~* \.(gif|jpg|jpeg)$ { #匹配以.gif、.jpg、.jpeg结尾的任何请求,但是,/images/内的请求将使用configuration c的配置 [configuratoin D] } 请求处理匹配结果示例: / -> configuration A; /documents/document.html -> configuration B; /images/1.gif -> configuration c; /documents/1.jpg -> configuration D; 例1:域名跳转 输入www.sina.com,跳转到www.sohu.com server { listen 80; server_name www.sina.com; access_log logs/sina.access.log main; location / { root /web/sina; index index.html index.htm; if (-e $request_filename){ # -e 是否存在 rewrite ^/ http://www.sohu.com/ permanent; # ^/ 域名以/开头。//www.sina.com ,也可以写为.* 任意都跳转 } } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } server { listen 80; server_name www.sohu.com; access_log logs/sohu.access.log main; location / { root /web/sohu; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } 例2:静态index.html跳转到动态index.php文件 cd /web/sina/ vi index.php <? print_r ($_GET); ?> Vi nginx.conf server { listen 80; server_name www.sina.com; access_log logs/sina.access.log main; location / { root /web/sina; index index.html index.htm; rewrite ^/index(\d+).html /index.php?id=$1 last; # ^/ 以/开头。\d+ 多个数字。()第一个变量。 /index.php?id=$1 把第一个变量赋予id变量,传入index.php文件 } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location ~ \.php$ { root /web/sina; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } 在客户端输入:http://www.sina.com/index2.html 会跳转到index.php,把2当变量传入index.php程序 25.代理负载均衡技术(反向代理) upstream myweb1 { #定义地址池 192.168.190.190 反向代理 upstream myweb1 { server 192.168.190.190:80; server 192.168.190.191:80; } server { listen 80; server_name www.sohu.com; location / { proxy_pass http://myweb1; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; } } server 192.168.244.10:80; server 192.168.244.11:80; } server { listen 80; server_name www.sohu.com; 192.168.190.191 #使用www.sohu.com访问 location / { proxy_pass http://myweb1; #使用地址池 proxy_set_header Host $host; #利用HOST变量向后端服务器传递需要解析的客户端访问的域名(传递域名) proxy_set_header X-Forwarded-For $remote_addr; #$remote_addr 把客户端真实IP赋予X-Forwarded-For。后端服务器才能获取真实的客户端IP。以便记录日志,要不日志中记录的访问信息都是负载服务器,而不是客户端(传递IP) } } 26.模块设置 Error_log #错误日志 Include #包含子配置文件,0.6版本以后子配置文件放在nginx.conf所在的路径下 Pid #主进程id号 User #nginx nginx表明nginx进程的执行者和组 Worker_processes #与cpu个数相同,4核cpu为4 Worker_rlimit_nofile 65535 #打开的文件描述符,不过提前得设置ulimit -SHn 65535,即linux允许的打开文件个数 Worker_connectiones 65535 #客户端最大连接数65535 Alias #虚拟目录 Error_page #404,500错误跳转页面 Index #index index.html,设置默认首页 Keepalive_timeout #即tcp持续连接超时时间 Limit_rate #limit _rate 100k,即限速为100KB/s Limit_rate_after #limit_rate_after 1m,即下载文件超过1m,则进入limit_rate限速阶段 Listen #listen 192.168.100.1:80,即设置ip和端口 Location #该指令允许对不同的uri进行不同的配置,可以是字符串、正则表达式 Resolver #resolver 8.8.8.8,为nginx设置dns域名指向 Root #设置网站根目录 Send_timeout #超时时间是指进行了两次tcp握手,还没有转为established状态的时间,如果超过这个时间,客户没有响应,nginx则关闭连接,可以用来防止ddos攻击 Sendfile #启用或禁用sendfile()函数,作用于拷贝两个文件描述符之间的操作函数,这个拷贝是在内核中操作的,比read和write拷贝高效得多 Server #普通web配置或虚拟主机的配置的区域 Server_name #根据客户端请求header头信息中的host域名,来匹配该请求应该由哪个虚拟主机配置或服务器的ip Tcp_nodelay #封装tcp/ip数据包的等待时间,也叫纳格算法,在keepalive开启才有用 Tcp_nopush #要求sendfile开启的时候才起作用,设置该选择的原因是nginx在linux上,试图在一个包中发送它的httpd应答头 Allow #allow 192.168.100.254,只允许192.168.100.254访问 Deny #deny all,拒绝其他任何人访问 Autoindex #autoindex on,即开启列表页功能 Charset #charset utf8;source_charset gbk,把服务器上的gbk网页编码转换成utf8输出给客户端 Fastcgi_pass #fastcgi_pass 127.0.0.1:9000; #fastcgi_index index.php; #fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; #include fastcgi_params; #fastcgi_pass后跟的是php-cgi进程的ip和端口 Access_log #正确日志 Proxy_pass # proxy_pass http://myweb1,即后跟的是nginx代理负载池upstream中的服务器 Proxy_set_header # proxy_set_header Host $host,设置把$host带给后端的nginx服务器 Proxy_temp_path #用户指定一个本地目录缓冲较大的代理请求,类似于client_body_temp_path Stub_status # stub_status on,即开户状态监控 Image_filter #它指定适用于图片的转换类型 。
最后此篇关于linux服务器下LNMP安装与配置方法的文章就讲到这里了,如果你想了解更多关于linux服务器下LNMP安装与配置方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我想了解 Ruby 方法 methods() 是如何工作的。 我尝试使用“ruby 方法”在 Google 上搜索,但这不是我需要的。 我也看过 ruby-doc.org,但我没有找到这种方法。
Test 方法 对指定的字符串执行一个正则表达式搜索,并返回一个 Boolean 值指示是否找到匹配的模式。 object.Test(string) 参数 object 必选项。总是一个
Replace 方法 替换在正则表达式查找中找到的文本。 object.Replace(string1, string2) 参数 object 必选项。总是一个 RegExp 对象的名称。
Raise 方法 生成运行时错误 object.Raise(number, source, description, helpfile, helpcontext) 参数 object 应为
Execute 方法 对指定的字符串执行正则表达式搜索。 object.Execute(string) 参数 object 必选项。总是一个 RegExp 对象的名称。 string
Clear 方法 清除 Err 对象的所有属性设置。 object.Clear object 应为 Err 对象的名称。 说明 在错误处理后,使用 Clear 显式地清除 Err 对象。此
CopyFile 方法 将一个或多个文件从某位置复制到另一位置。 object.CopyFile source, destination[, overwrite] 参数 object 必选
Copy 方法 将指定的文件或文件夹从某位置复制到另一位置。 object.Copy destination[, overwrite] 参数 object 必选项。应为 File 或 F
Close 方法 关闭打开的 TextStream 文件。 object.Close object 应为 TextStream 对象的名称。 说明 下面例子举例说明如何使用 Close 方
BuildPath 方法 向现有路径后添加名称。 object.BuildPath(path, name) 参数 object 必选项。应为 FileSystemObject 对象的名称
GetFolder 方法 返回与指定的路径中某文件夹相应的 Folder 对象。 object.GetFolder(folderspec) 参数 object 必选项。应为 FileSy
GetFileName 方法 返回指定路径(不是指定驱动器路径部分)的最后一个文件或文件夹。 object.GetFileName(pathspec) 参数 object 必选项。应为
GetFile 方法 返回与指定路径中某文件相应的 File 对象。 object.GetFile(filespec) 参数 object 必选项。应为 FileSystemObject
GetExtensionName 方法 返回字符串,该字符串包含路径最后一个组成部分的扩展名。 object.GetExtensionName(path) 参数 object 必选项。应
GetDriveName 方法 返回包含指定路径中驱动器名的字符串。 object.GetDriveName(path) 参数 object 必选项。应为 FileSystemObjec
GetDrive 方法 返回与指定的路径中驱动器相对应的 Drive 对象。 object.GetDrive drivespec 参数 object 必选项。应为 FileSystemO
GetBaseName 方法 返回字符串,其中包含文件的基本名 (不带扩展名), 或者提供的路径说明中的文件夹。 object.GetBaseName(path) 参数 object 必
GetAbsolutePathName 方法 从提供的指定路径中返回完整且含义明确的路径。 object.GetAbsolutePathName(pathspec) 参数 object
FolderExists 方法 如果指定的文件夹存在,则返回 True;否则返回 False。 object.FolderExists(folderspec) 参数 object 必选项
FileExists 方法 如果指定的文件存在返回 True;否则返回 False。 object.FileExists(filespec) 参数 object 必选项。应为 FileS
我是一名优秀的程序员,十分优秀!