存档

‘ubuntu高手’ 分类的存档

ubuntu中nginx配置ssl证书使用https,外加阿里云cdn配置详解

2019年6月11日 没有评论

在ubuntu系统中nginx配置ssl证书使用https如何操作?

我的操作案例中将http://aaa.com和http://ww.aaa.com解析到了源服务器IP,在源服务器nginx里面http段增加了server如下代码:(代码标记①)

server{
        listen 80;
	#如果域名没使用阿里云cdn,那么此处应该增加一个www.aaa.com
	#不带www和ww解析到了本服务器的80端口,而www解析到了阿里云
	#阿里云ssl证书控制台要将证书部署到cdn
	#阿里云cdn控制台要将源站ip端口改为443,回源配置中的回源SNI要设置为www.aaa.com,https配置中开启强制跳转
	#等于80端口将server_name全部301到443端口
        server_name aaa.com ww.aaa.com;
	rewrite ^(.*) https://www.aaa.com$1 permanent;
}

主要用来将http:// aaa.com和http:// ww.aaa.com自动跳转至https://www.aaa.com(那么此处会遗留一个问题,就是http://www.aaa.com如何跳转至https://www.aaa.com呢?刚刚添加的代码中已经解释了,要开启阿里云cdn的https配置中开启强制跳转),由此就解决了http://aaa.com和http:// ww.aaa.com和http://www.aaa.com全部301跳转至https://www.aaa.com。

需要注意的是,阿里云的配置有几处需要修改:
1,阿里云ssl证书控制台要将证书部署到cdn
2,阿里云cdn控制台要将源站ip端口改为443
3,回源配置中的回源SNI要设置为www.aaa.com
4,https配置中开启强制跳转

好了,接下来就是本机服务器的配置ssl使用https来监听443端口了,到/etc/nginx/conf.d.my目录下(我自己新建的配置文件目录是conf.d.my,利于打理),新建ssl_cert用于存放证书目录,/etc/nginx/conf.d.my/ssl_cert,在nginx的http段中增加相应的server代码:(代码标记②)

server {
	#只监听443 ssl,需要单独加server listen 80
	listen 443 ssl;

	#80和443同时可以访问
	#listen 80;
	#listen 443 default ssl;		

	#nginx 1.15版本如果使用listen 443 ssl,删除ssl on就行了
	#ssl on;

	server_name www.aaa.com;

	ssl_certificate conf.d.my/ssl_cert/www.aaa.com.pem;
	ssl_certificate_key conf.d.my/ssl_cert/www.aaa.com.key;
	ssl_session_timeout 5m;
	ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
	ssl_prefer_server_ciphers on;

	root /www/webroot/aaa.com/;
	#下面的代码是我自己的配置,网友需要更改为自己的实际情况
	include /etc/nginx/conf.d.my/server/agent.deny.conf;
	include /www/webroot/aaa.com/.htaccess;
	location / {
		try_files $uri $uri/ =404;
		index index.html index.php index.htm;
	}
	location ~ \.php$ {
		include fastcgi_params;
		include /etc/nginx/conf.d.my/location/fastcgi_params;
		include /etc/nginx/conf.d.my/location/limit_req;
		fastcgi_param PHP_ADMIN_VALUE "open_basedir=/www/webroot/aaa.com/:/tmp/";
	}
	location ~ /\.htaccess {
		deny all;
	}
}

特别注意,上方的代码中:
ssl_certificate conf.d.my/ssl_cert/www.qibangkeji.com.pem;
ssl_certificate_key conf.d.my/ssl_cert/www.qibangkeji.com.key;
不能使用绝对路径,比如不能写成:/etc/nginx/conf.d.my/ ssl_cert/www.qibangkeji.com.pem; 否则会报错。

以上就是ubuntu中nginx配置ssl证书使用https,外加阿里云cdn配置详解。如有错误欢迎指正。

当然,如果不使用阿里云的cdn,就将www和不带www的和ww都解析到源服务器IP,然后修改代码片段①即可:

server{
        listen 80;
        server_name aaa.com ww.aaa.com www.aaa.com;
	rewrite ^(.*) https://www.aaa.com$1 permanent;
}

ubuntu 18.04以后如何修改固定ip和固定dns

2018年8月7日 没有评论

ubuntu 18.04以后如何修改固定ip和固定dns这个问题可能刚接触18.04系统的还不知道怎么修改,我们都知道老版本可能很简单,就是修改:

sudo vim /etc/network/interfaces

输入类似:

输入:
auto eth0
iface eth0 inet static
address 192.168.2.1
gateway 192.168.2.254
netmask 255.255.255.0

就可以搞定了

但是自ubuntu 18.04开始,这样就不行啦,/etc/network/interfaces文件已经忽略

如果你先在ubuntu 18.04系统中使用固定ip,包括固定dns,请参考如下修改:

sudo vim /etc/netplan/50-cloud-init.yaml

或者在/etc/netplan的目录下,其他.yaml文件

代码:##################

# This file is generated from information provided by
# the datasource. Changes to it will not persist across an instance.
# To disable cloud-init’s network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
ethernets:
enp4s0:
addresses: [61.191.56.18/24]
dhcp4: no
dhcp6: no
optional: true
gateway4: 61.191.56.1
nameservers:
addresses: [114.114.114.114,114.114.115.115]
version: 2

代码:##################

# This file is generated from information provided by
# the datasource.  Changes to it will not persist across an instance.
# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
    ethernets:
        enp4s0:
            addresses: [61.191.56.18/24]
            dhcp4: no
            dhcp6: no
            optional: true
            gateway4: 61.191.56.1
            nameservers:
                       addresses: [114.114.114.114,114.114.115.115]
    version: 2

保存,然后执行:sudo netplan apply

搞定。

分类: ubuntu高手 标签: , ,

php-fpm模式下间歇性无法获取不到$_SERVER或者$_REQUEST数据

2018年7月3日 没有评论

最近安装了一台新的服务器,nginx+php-fpm模式

使用过程中发现$_SERVER或者$_REQUEST(不排除$_POST或者$_GET)间歇性无法获取数据

但是只要重启php-fpm服务就可以解决,但是运行一段时间之后又会反复出现

由此分析应该为php-fpm问题(重启可以解决,个人推测为php-fpm进程问题),一开始以为是当前版本php的bug,后来降低php版本后依然存在,找了很多google资料,都没有遇到类似问题。

花了2天左右时间,对服务器软件配置文件参数逐一排查调试,都没有找到问题所在。

最后,只能从拓展插件上着手,暂时锁定了问题所在:

xcache拓展和opcache拓展建议只开启一个,似乎discuz里面用的是xcache,所以建议只安装xcache
在php-fpm模式下,如果同时安装xcache和opcache,会导致莫名其妙的$_SERVER或者$_REQUEST无法获取数据(间歇性)

所以个人推测:2个都用的话(双层cache)会导致php-fpm的部分进程假死,前段请求发送到假死的进程上后,则无法返回数据,当发送到没假死的进程就可以返回数据(当重启php-fpm服务又正常了)

关闭opcache拓展后,目前运行了近1.5天,已经没有发现此问题。

ubuntu配置rsync实现2台服务器数据同步功能

2018年5月29日 没有评论

源自服务器ip:192.168.1.100
备份服务器ip:192.168.1.101

源服务器需要备份的目录:/www/webroot
备份到备份服务器目录:/www/webroot/backup

=======================源自服务器配置========================

1.ubuntu 14.04默认已安装rsync,rsync服务默认不是启动的,开启rsync服务

sudo vim /etc/default/rsync
RSYNC_ENABLE=true #false改true

2.修改配置文件(配置文件/etc/rsync.conf默认不存在,需要手动创建;)

sudo cp -r /usr/share/doc/rsync/examples/rsyncd.conf /etc/rsyncd.conf
sudo vim /etc/rsyncd.conf

内容替换成下面内容,并改变相关参数

# sample rsyncd.conf configuration file

# GLOBAL OPTIONS

#motd file=/etc/motd
#log file=/var/log/rsyncd #根据需要是否开启
# for pid file, do not use /var/run/rsync.pid if
# you are going to run rsync out of the init.d script.
pid file=/var/run/rsyncd.pid
syslog facility=daemon
#socket options=

# MODULE OPTIONS

[my_rsync_bk] #名字可以任意命名,只要客户端的rsync命令一致

comment = public archive
path = /www/webroot #源服务器中要备份的路径(注意,如果这里面有文件是软连接的话是无法同步的)
use chroot = no #是否限定在该目录下,默认为true,当有软连接时,需要改为fasle,如果为true就限定为模块默认目录
# max connections=10 #单次最大连接数
lock file = /var/lock/rsyncd
# the default for read only is yes…
read only = yes #是否只读,源服务器建议设置为yes
list = yes
uid = root #以哪个用户的身份来传输
gid = root #以哪个组的身份来传输
# exclude =
# exclude from =
# include =
# include from =
auth users = user_rsync #rsync连接时的用户名,要和客户端rsync的命令一致
secrets file = /etc/rsyncd.secrets #需要使用的密码文件位置
strict modes = yes
hosts allow = 192.168.1.101 #运行的客户端ip
# hosts deny =
ignore errors = yes
ignore nonreadable = yes
transfer logging = yes
log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.
timeout = 600 #超时时间,秒
refuse options = checksum dry-run
dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz *.rar *.gzip

3.创建一个密码文件

sudo vim /etc/rsyncd.secrets
内容:user_rsync:123 #用户名:密码
sudo chmod 0600 /etc/rsyncd.secrets
sudo service rsync start

=======================备份服务器配置========================

sudo vim /etc/default/rsync
RSYNC_ENABLE=true #false改true

sudo service rsync start

配置定时任务:
sudo vim /etc/crontab
*/1 * * * * root /home/qibang/auto_rsync.sh #每分钟执行这个程序

配置密码文件
sudo vim /etc/rsync.pwd
内容:123 #与服务端密码要一致
sudo chmod 0600 /etc/rsync.pwd

auto_rsync.sh内容:

#!/bin/bash
ROOT_UID=0
E_NOTROOT=67
if [ “$UID” -ne “$ROOT_UID” ]
then
echo “Must be root to run this script”
exit $E_NOTROT
fi

rsync -a –password-file=/etc/rsync.pwd user_rsync@192.168.1.100::my_rsync_bk /www/webroot/backup
rsync -a –delete –password-file=/etc/rsync.pwd user_rsync@192.168.1.100::my_rsync_bk /www/webroot/backup

sh权限:
sudo chmod +x auto_rsync.sh

sudo service cron restart

=======================其他说明========================

如果只是单次调试,可以不用设置:

sudo vim /etc/default/rsync
RSYNC_ENABLE=true #false改true

直接使用:sudo service rsync start

具体遇到问题可以在实践中调试:文本

分类: ubuntu高手 标签: , ,

ubuntu使用tzselect修改时区无效的解决办法

2018年5月22日 没有评论

最近安装了ubuntu 18.04,使用tzselect修改时区不知为何总是无效,最后用了下面的命令:

运行命令dpkg-reconfigure tzdata,选择Asia–>Shanghai,确定,问题解决!

附带tzselect的方法:

sudo tzselect

sudo cp -r /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

同步时间:

sudo apt-get install ntpdate

sudo ntpdate time.windows.com

sudo ntpdate pool.ntp.org

sudo ntpdate cn.pool.ntp.org

sudo ntpdate ntp.ubuntu.com

在修改时间以后,修改硬件CMOS的时间

sudo hwclock --systohc //非常重要,如果没有这一步的话,后面时间还是不准
css.php