乘着双11的时候在阿里云买了一台vm,替换之前申请的AWS的机器。因此大陆访问AWS的机器实在是卡的不能用。。此次乘着重新迁移,把wordpress部署写成了一个salt的sls文件。
www-data:
user.present:
- shell: /bin/false
- createhome: False
group.present:
- addusers:
- www-data
blog-pkgs:
pkg.installed:
- pkgs:
- nginx
- mariadb-server
- php-fpm
- php-mysql
- php
- tcpdump
{% for d in ["log/mysql","run/mysqld" ]: %}
/var/{{d}}:
file.directory:
- user: mysql
- group: mysql
- recurse:
- user
- group
- makedirs: true
{% endfor %}
{% for d in [ "/var/log/nginx/","/var/cache/nginx","/var/lib/nginx/tmp/fastcgi"]: %}
{{d}}:
file.directory:
- user: www-data
- group: www-data
- makedirs: true
- require:
- user: www-data
{% endfor %}
{% for f in ["dhparam.pem","server.crt.2016","server.key.2016"]: %}
/etc/nginx/cert/{{f}}: file.managed: - source: salt://base/conf/nginx/{{f}} - makedirs: true {% endfor %} mariadb: service.running: - enable: True - reload: True - watch: - file: mysql-conf - require: - file: mysql-conf php-fpm: service.running: - enable: True - reload: True - watch: - file: php-conf - require: - file: php-conf nginx: service.running: - enable: True - reload: True - watch: - file: /etc/nginx/conf.d/443.conf - require: - user: www-data nginx_reload: cmd.wait: - name: systemctl reload nginx - watch: - file: /etc/nginx/conf.d/443.conf - file: /etc/nginx/nginx.conf - file: /etc/nginx/fastcgi_params php_reload: cmd.wait: - name: systemctl reload php-fpm - watch: - file: php-conf /etc/nginx/conf.d/443.conf: file.managed: - source: salt://base/conf/nginx/443.conf - template: jinja /etc/nginx/nginx.conf: file.managed: - source: salt://base/conf/nginx/nginx.conf - template: jinja /etc/nginx/fastcgi_params: file.managed:
- source: salt://base/conf/nginx/fastcgi_params
- template: jinja mysql-conf: file.managed: - name: /etc/my.cnf - source: salt://base/conf/mysql/my.cnf - template: jinja php-conf: file.managed: - name: /etc/php-fpm.d/www.conf - source: salt://base/conf/php/www.conf - template: jinja [root@CentOS base]# cat init.sls www-data: user.present: - shell: /bin/false - createhome: False group.present: - addusers: - www-data blog-pkgs: pkg.installed: - pkgs: - nginx - mariadb-server - php-fpm - php-mysql - php - tcpdump {% for d in [“log/mysql”,“run/mysqld” ]: %} /var/{{d}}: file.directory: - user: mysql - group: mysql - recurse: - user - group - makedirs: true {% endfor %} {% for d in [ “/var/log/nginx/”,"/var/cache/nginx","/var/lib/nginx/tmp/fastcgi"]: %} {{d}}: file.directory: - user: www-data - group: www-data - makedirs: true - require: - user: www-data {% endfor %}
{% for f in ["dhparam.pem","server.crt.2016","server.key.2016"]: %}
/etc/nginx/cert/{{f}}: file.managed: - source: salt://base/conf/nginx/{{f}} - makedirs: true {% endfor %} mariadb: service.running: - enable: True - reload: True - watch: - file: mysql-conf - require: - file: mysql-conf php-fpm: service.running: - enable: True - reload: True - watch: - file: php-conf - require: - file: php-conf nginx: service.running: - enable: True - reload: True - watch: - file: /etc/nginx/conf.d/443.conf - require: - user: www-data nginx_reload: cmd.wait: - name: systemctl reload nginx - watch: - file: /etc/nginx/conf.d/443.conf - file: /etc/nginx/nginx.conf - file: /etc/nginx/fastcgi_params php_reload: cmd.wait: - name: systemctl reload php-fpm - watch: - file: php-conf - file: /etc/php.ini /etc/nginx/conf.d/443.conf: file.managed: - source: salt://base/conf/nginx/443.conf - template: jinja /etc/nginx/nginx.conf: file.managed: - source: salt://base/conf/nginx/nginx.conf - template: jinja /etc/nginx/fastcgi_params: file.managed:
- source: salt://base/conf/nginx/fastcgi_params
- template: jinja mysql-conf: file.managed: - name: /etc/my.cnf - source: salt://base/conf/mysql/my.cnf - template: jinja php-conf: file.managed: - name: /etc/php-fpm.d/www.conf - source: salt://base/conf/php/www.conf - template: jinja /etc/php.ini: file.managed: - source: salt://base/conf/php/php.ini
迁移的过程中遇到几个问题:1. 迁移有后会造成首页白屏幕。查了很久才发现是nginx配置文件内默认参数的差异导致。centos默认的fastcgi_param内没带SCRIPT_FILENAME。解决方案,fastcgi_params内新增以下配置
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
1. 升级后我之前做的文章的缓存方案失效了。curl看了一下,返回的header内有Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0和Pragma: no-cache的配置,并且还发了Set-Cookie的配置。
$curl -I https://blog.gnuers.org HTTP/1.1 200 OK Server: nginx/1.10.1 Date: Tue, 22 Nov 2016 02:19:41 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive Vary: Accept-Encoding X-Powered-By: PHP/5.4.16 Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: PHPSESSID=p0r4lcqeqqa8fcog63esrq8686;
path=/
Link: <https://blog.gnuers.org/?rest_route=/>;
rel="https://api.w.org/"
Cache-status: MISS Cache-Control: max-age=241
Strict-Transport-Security: max-age=63072000;
includeSubdomains;
preload
网上搜了一下确认这个是php.ini内的2个问题修改配置后搞定。
session.use_cookies = 0 session.cache_limiter = none