我们在开发和测试环境,需要为yii2搭配环境,这里说的是安装nginx
1.安装脚本:
wget nginx.org/download/nginx-1.11.13.tar.gz tar zxvf nginx-1.11.13.tar.gz cd nginx-1.11.13 ./configure --with-http_ssl_module --with-http_v2_module make && make install
【 题外话:
–with-http_v2_module 配置代表开启http2模块,您可以通过下面的方式设置http2
listen 443 ssl http2;
可以通过下面的链接找到工具测试是否开启http2:https://www.kejianet.cn/open-http2/
题外话:】
2.启动脚本:
touch /etc/init.d/nginx vim /etc/init.d/nginx
加入代码,wq保存
#!/bin/bash
# nginx Startup script for the Nginx HTTP Server
# it is v.0.0.2 version.
# chkconfig: - 85 15
# description: Nginx is a high-performance web and proxy server.
# It has a lot of features, but it's not for everyone.
# processname: nginx
# pidfile: /var/run/nginx.pid
# config: /usr/local/nginx/conf/nginx.conf
nginxd=/usr/local/nginx/sbin/nginx
nginx_config=/usr/local/nginx/conf/nginx.conf
nginx_pid=/var/run/nginx.pid
RETVAL=0
prog="nginx"
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -x $nginxd ] || exit 0
# Start nginx daemons functions.
start() {
if [ -e $nginx_pid ];then
echo "nginx already running...."
exit 1
fi
echo -n $"Starting $prog: "
daemon $nginxd -c ${nginx_config}
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch /var/lock/subsys/nginx
return $RETVAL
}
# Stop nginx daemons functions.
stop() {
echo -n $"Stopping $prog: "
killproc $nginxd
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /var/run/nginx.pid
}
# reload nginx service functions.
reload() {
echo -n $"Reloading $prog: "
#kill -HUP `cat ${nginx_pid}`
killproc $nginxd -HUP
RETVAL=$?
echo
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
stop
start
;;
status)
status $prog
RETVAL=$?
;;
*)
echo $"Usage: $prog {start|stop|restart|reload|status|help}"
exit 1
esac
exit $RETVAL
3.添加自启动
vim /etc/rc.d/rc.local 添加: /etc/init.d/nginx start
添加nginx用户:
groupadd nginx useradd -g nginx nginx
然后设置权限:
chmod 755 /etc/init.d/nginx
4.启动nginx
/etc/init.d/nginx start
到这里就启动完成ngxin,我们需要配置nginx
5.配置nginx
添加文件地址/www/web
mkdir -p /www/web
添加log文件:
mkdir /var/log/nginx touch /var/log/nginx/error.log chmod 777 -R /var/log/nginx/error.log
添加nginx 文件access.log和error.log
mkdir /www/web_logs touch /www/web_logs/access.log chmod 777 /www/web_logs/access.log touch /www/web_logs/error.log chmod 777 /www/web_logs/error.log
nginx的配置如下:
/usr/local/nginx/conf/nginx.conf,代码如下:
user nginx nginx;
worker_processes 4;
error_log /var/log/nginx/error.log warn;
pid /usr/local/nginx/logs/nginx.pid;
worker_rlimit_nofile 65535;
events {
use epoll;
worker_connections 65535;
}
http {
include mime.types;
default_type application/octet-stream;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 8m;
# limit_conn_zone $binary_remote_addr zone=one:32k;
sendfile on;
tcp_nopush on;
keepalive_timeout 120;
tcp_nodelay on;
fastcgi_buffers 8 128k;
fastcgi_connect_timeout 9900s;
fastcgi_send_timeout 9900s;
fastcgi_read_timeout 9900s;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
log_format wwwlogs '$remote_addr - $remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for';
include conf.d/*.conf;
}
/usr/local/nginx/conf/none.conf,代码如下:
location / {
index index.html index.php; ## Allow a static html file to be shown first
try_files $uri $uri/ @handler; ## If missing pass the URI to Magento's front handler
expires 30d; ## Assume all files are cachable
# rewrite ^/$ /index.php last;
# rewrite ^/(?!index\.php|robots\.txt|static)(.*)$ /index.php/$1 last;
}
## These locations would be hidden by .htaccess normally
location /app/ { deny all; }
location /includes/ { deny all; }
location /lib/ { deny all; }
location /media/downloadable/ { deny all; }
location /pkginfo/ { deny all; }
location /report/config.xml { deny all; }
location /var/ { deny all; }
location /var/email/ {allow all;}
location /var/export/ { ## Allow admins only to view export folder
auth_basic "Restricted"; ## Message shown in login window
auth_basic_user_file htpasswd; ## See /etc/nginx/htpassword
autoindex on;
}
location /. { ## Disable .htaccess and other hidden files
return 404;
}
location @handler { ## Magento uses a common front handler
rewrite / /index.php;
}
location ~ .php/ { ## Forward paths like /js/index.php/x.js to relevant handler
rewrite ^(.*.php)/ $1 last;
}
/usr/local/nginx/conf/conf.d/default.conf 这个文件是网站内容的配置。譬如如下:
server {
listen 1000;
listen 443 ssl;
server_name 192.168.220.100;
root /www/web/datacenter/datacenter_1000/appadmin/web;
server_tokens off;
include none.conf;
index index.php;
access_log /www/web_logs/access.log wwwlogs;
error_log /www/web_logs/error.log notice;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fcgi.conf;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
expires 30d;
}
location ~ .*\.(js|css)?$ {
expires 12h;
}
location ~ /.svn/ {
deny all;
}
}
上面的意思为:
listen 代表监听的端口,线上都是填写80,80是默认端口,我们访问的网站,默认都是80端口
server_name 填写对应的IP,或者域名
root 代表上面访问IP或者域名,网站的根目录
填写完成上面的后,保存,退出。重启nginx
/etc/init.d/nginx restart
6.新建文件:
mkdir -p /www/web/datacenter/datacenter_1000/appadmin/web touch /www/web/datacenter/datacenter_1000/appadmin/web/index.php vim /www/web/datacenter/datacenter_1000/appadmin/web/index.php
添加代码
<?php echo phpinfo(); ?>
访问配置的nginx的域名或者IP就可以看到页面了。
7. nginx php 隐藏版本号
vi /usr/local/nginx/conf/nginx.conf
#在http{}中加入
server_tokens off;
第二歩:
vi /usr/local/nginx/conf/fastcgi_params #将里面的 #fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; #修改为: fastcgi_param SERVER_SOFTWARE nginx;
隐藏PHP版本号
vi php.ini #找到: #expose_php = On; #修改为: expose_php = Off;
8nginx日志切割
设置日志格式及路径:
全局格式设置 :nginx.conf
log_format wwwlogs '$remote_addr - $remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; access_log /www/web_logs/access.log wwwlogs; error_log /www/web_logs/error.log notice;
新建文件 /cron/nginx_spilit.sh
#!/bin/bash
log_files_path="/www/web_logs/"
log_files_dir=${log_files_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")
log_files_name=(access access error error)
nginx_sbin="$/usr.local/nginx/sbin/nginx "
save_days=60
mkdir -p $log_files_dir
log_files_num=${#log_files_name[@]}
for((i=0;i<$log_files_num;i++));do
mv ${log_files_path}${log_files_name[i]}.log ${log_files_dir}/${log_files_name[i]}_$(date -d "yesterday" +"%Y%m%d").log
done
find $log_files_path -mtime +$save_days -exec rm -rf {} \;
$nginx_sbin -s reload
crontab -e 00 00 * * * /bin/bash /cron/nginx_spilit.sh
博主你好,YII2.0生产环境配置,服务器配置能详细讲解一下吗
安全配置太琐碎了,而且要运维配合。
按第5步的提示配置nginx后,再启动nginx报错,缺fcgi.conf。网上搜了很长时间也没有解决办法。
[root@bogon ~]# /etc/init.d/nginx restart
Stopping nginx: [FAILED]
Starting nginx: nginx: [emerg] open() “/usr/local/nginx/conf/fcgi.conf” failed (2: No such file or directory) in /usr/local/nginx/conf/conf.d/default.conf:15
[FAILED]
请问如何解决?
nginx里面那个none.conf的作用是什么,这段代码可不可放在网站的/etc/nginx/conf/www.conf里面?debian
[root@localhost init.d]# systemctl status nginx.service
● nginx.service – SYSV: Nginx is a high-performance web and proxy server.
Loaded: loaded (/etc/rc.d/init.d/nginx; bad; vendor preset: disabled)
Active: failed (Result: exit-code) since 四 2019-01-31 17:38:18 CST; 16s ago
Docs: man:systemd-sysv-generator(8)
Process: 43279 ExecStart=/etc/rc.d/init.d/nginx start (code=exited, status=1/FAILURE)
CGroup: /system.slice/nginx.service
├─36368 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local…
└─36370 nginx: worker process
1月 31 17:38:18 localhost.localdomain systemd[1]: Starting SYSV: Nginx is a high….
1月 31 17:38:18 localhost.localdomain nginx[43279]: /etc/rc.d/init.d/nginx: 第 2…式
1月 31 17:38:18 localhost.localdomain nginx[43279]: Starting nginx: nginx: [emer…5
1月 31 17:38:18 localhost.localdomain nginx[43279]: [失败]
1月 31 17:38:18 localhost.localdomain systemd[1]: nginx.service: control process…1
1月 31 17:38:18 localhost.localdomain systemd[1]: Failed to start SYSV: Nginx is….
1月 31 17:38:18 localhost.localdomain systemd[1]: Unit nginx.service entered fai….
1月 31 17:38:18 localhost.localdomain systemd[1]: nginx.service failed.
Warning: nginx.service changed on disk. Run ‘systemctl daemon-reload’ to reload units.
Hint: Some lines were ellipsized, use -l to show in full.