ansibleでRaspberry Piをwordpress化

http://astel.xyz/Raspberry Piで動いています。 Raspberry Pi2じゃないから(?)重い…

OSはRaspbianです。

入れたものはこんな感じ - php - nginx - mysql - wordpress

特に詰まったところもなくできた。

phpとnginxは同じタスクに入れた。

[shell gutter="false"]

  • name: install php action: apt name={{ item }} state=present with_items:

    • php5
    • php5-fpm
    • php5-cgi
    • php5-cli
    • php5-common
    • php5-mysql
  • name: install nginx apt: name=nginx state=present

  • name: start nginx service: name=nginx state=started

  • name: mkdir /var/www/html/ file: path=/var/www/html/ owner=root group=root mode=755 state=directory recurse=yes

  • name: copy nginx.conf template: src=default dest=/etc/nginx/sites-available/default

  • name: restart nginx service: name=nginx state=restarted [/shell]

  • name: copy nginx.confの中味はこんなん

[shell gutter="false"] server { listen 80; server_name {{ server_name }};

 location / {
      root {{ root }};
      index index.html index.php;
 }

 location ~ \.php$ {
      fastcgi_pass unix:/var/run/php5-fpm.sock;
      fastcgi_index index.php;
      include fastcgi_params;
      fastcgi_param SCRIPT_FILENAME {{ root }}$fastcgi_script_name;
 }

} [/shell] 変数は適当にvarsにいれてる。

mysql

[shell gutter="false"]

  • name: install mysql-server apt: name=mysql-server

  • name: start mysql service: name=mysql state=started enabled=yes

  • name: set MySQL root password command: | mysql -e "set password for root@'{{ item }}' = PASSWORD('{{ mysql_root_passwd }}')" creates=/root/.my.cnf with_items:

  • name: Install setuptools apt: name=python-dev

  • name: Install setuptools apt: name=python-setuptools

  • name: Install pip easy_install: name=pip

  • name: Install python-apt pip: name=python-apt

  • name: Install libmysqlclient-dev apt: name=libmysqlclient-dev

  • name: pip install MySQL-python pip: name=MySQL-python [/shell] ああ これが一番面倒だったかもしれない

なぜかっていうとMySQL-pythonをいれないとmysqlモジュールが使えない MySQL-pythonを入れるためにpipが必要 みたいなことを知らなかったので勉強になった あとcentosでの設定をそのまま使った部分がありcreates=/root/.my.cnfとかはいらないかも (ただ初回意外エラーが多分でる

wordpress

[shell gutter="false"]

  • name: wget latest-wordpress.zip get_url: url=https://ja.wordpress.org/latest-ja.zip dest={{ tmp }}/wordpress.zip

  • name: unzip wordpress.zip shell: unzip -o -d /var/www/html/ {{ tmp }}/wordpress.zip && mv -f /var/www/html/wordpress/* /var/www/html/ && rm -rf /var/www/html/wordpress creates=/var/www/html/wp-login.php

  • name: Create wordpress databases mysql_db: > name={{ db_name }} state=present encoding=utf8 login_user=root login_password={{ mysql_root_passwd }}

  • name: Create wordpress database user mysql_user: > login_user=root login_password={{ mysql_root_passwd }} priv={{ db_name }}.*:ALL name={{ db_user }} password={{ db_password }}

  • name: cp wp-config.php command: cp /var/www/html/wp-config-sample.php /var/www/html/wp-config.php creates=/var/www/html/wp-config.php

  • name: wp-config.php db_name shell: sed -i -e "s/database_name_here/{{ db_name }}/" /var/www/html/wp-config.php

  • name: wp-config.php db_user shell: sed -i -e "s/username_here/{{ db_user }}/" /var/www/html/wp-config.php
  • name: wp-config.php db_password shell: sed -i -e "s/password_here/{{ db_password }}/" /var/www/html/wp-config.php [/shell]

パスワードとかはこれも変数にいれて設定。 最後はもう面倒でshellモジュール使ってしまった。 多分問題ないと思うけど。

あとは自分のipアドレスに入ってサイト名とか決めて完了。 簡単ですね。

もしlocalのipアドレスで設定するとmysqlの方でそのように登録されるため ドメインでアクセスした時CSSが壊れて表示されたりするかもしれません。 その時はmysqlに入ってwordpressのDBで [shell gutter="false"] mysql> update wp_options set option_value='http://astel.xyz' where option_name='siteurl'; Query OK, 1 row affected (0.02 sec) Rows matched: 1 Changed: 1 Warnings: 0

mysql> update wp_options set option_value='http://astel.xyz' where option_name='home'; Query OK, 1 row affected (0.02 sec) Rows matched: 1 Changed: 1 Warnings: 0 [/shell]

とかで変更しましょう。