【tech】ubuntu18.04 Redmine4をNginxで動かす手順メモ



以前redmine4をインストールする手順のメモをblogに書き残していましたが、
最近nginxを触ってみたいと思っていたので、Nginxで動かしてみた手順のメモです!

動画作りました!

・環境


ubuntu18.04 (minimal) on VirtualBox
(IP:192.168.56.150)
WEB:Nginx
DB:MySQL
MySQLDB rootユーザPW:RootPW123!
Redmine用DB名:redmine
RedmineDB ユーザ:redmine
Redmineuser PW:Redmine123!


私が使っているPC(のメモリが8GBの物)です!
私は今このPCのメモリを現在では32GBにアップグレードして使っています!笑
安くなりましたよねメモリ。SSDも安くなってるので買い換えたいです!笑

それでは手順です!



・rootになる
sudo su

・アップデート
apt-get update

・Redmine関係のPKGインストール
apt-get install -y net-tools curl mysql-server mysql-client libmysqlclient-dev imagemagick libmagickwand-dev libcurl4-openssl-dev git-core subversion

・GPGキーのインポート
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

・rvmのダウンロード
curl -sSL https://get.rvm.io | bash -s stable

・rvmの展開
source /etc/profile.d/rvm.sh

・rvmのインストール
rvm install 2.6.0

・rvmのリロード
source /usr/local/rvm/scripts/rvm

・.bashrcへ追記
echo '[[ -s "/usr/local/rvm/scripts/rvm" ]] && source "/usr/local/rvm/scripts/rvm"' >> ~/.bashrc

・./bashrcのリロード
source ~/.bashrc



・ver確認
ruby -v
rvm -v

・MySQLモードへ以降
mysql -u root -p
 →PW:Root123!

・Redmine用データベースの作成
create database redmine;
create user redmine@localhost identified by 'Redmine123!';
grant all privileges on redmine.* to redmine@localhost identified by 'Redmine123!';
flush privileges;
exit

・Passengerのインストール
gem install passenger -N

・Nginxのインストール
passenger-install-nginx-module

・ディレクトリの移動
cd /opt/nginx/

・ディレクトリの移動
cd conf/

・configファイルの作成
vi nginx.conf
→23行目に下記設定追加


include vhost/*.conf;




・ディレクトリの作成
mkdir -p /opt/nginx/conf/vhost

・ディレクトリの移動
cd /opt/nginx/conf/vhost/

・redmine用のconfig作成
vi redmine.conf

→下記設定の記述

 server {
        listen       80;
        server_name  www.kusomemo.tokyo;

        root /var/www/redmine/public;
        passenger_enabled on;
        client_max_body_size      10m; # Max attachemnt size

        \# redirect server error pages to the static page /50x.html
        \#
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }




・ディレクトリ移動
cd /lib/systemd/system/

・サービスの定義
vi nginx.service
→下記設定を記述


[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/opt/nginx/logs/nginx.pid
ExecStartPre=/opt/nginx/sbin/nginx -t
ExecStart=/opt/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target


・systemdのリロード
systemctl daemon-reload

・Nginxの起動
systemctl start nginx

・Nginxの自動起動設定
systemctl enable nginx

・portの確認
netstat -plntu | grep nginx

Redmineのインストール




・ディレクトリの作成
mkdir -p /var/www/redmine

・ディレクトリの移動
cd /var/www

・Redmineのダウンロード
svn co https://svn.redmine.org/redmine/branches/4.0-stable redmine
→下記メッセージが表示されたら「T」→「Enter」
 ※まれにERRORになりましたが、もう一度同じコマンドを
  入力したら何故かダウンロードできました。


Error validating server certificate for 'https://svn.redmine.org:443':
- The certificate is not issued by a trusted authority. Use the
fingerprint to validate the certificate manually!
Certificate information:
- Hostname: svn.redmine.org
- Valid: from Sun, 08 Jan 2017 00:00:00 GMT until Wed, 08 Jan 2020 23:59:59 GMT
- Issuer: Gandi, Paris, Paris, FR
- Fingerprint: ab:f1:c8:b7:69:a6:99:bd:20:c1:59:a4:5f:60:9e:27:2d:81:82:b7
(R)eject, accept (t)emporarily or accept (p)ermanently?


・ディレクトリの移動
cd redmine

・サンプルファイルのコピー
cp config/configuration.yml.example config/configuration.yml
cp config/database.yml.example config/database.yml

・ymlファイルの編集
vi config/database.yml
→DB「redmine」のユーザ名・パスワードを編集

production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  password: "Redmine123!"
  encoding: utf8




・ディレクトリの作成
mkdir -p tmp tmp/pdf public/plugin_assets

sudo chown -R www-data:www-data files log tmp public/plugin_assets

sudo chmod -R 775 files log tmp public/plugin_assets

・bundlerのインストール
gem install bundler
bundle install --without development test

・トークンの作成
bundle exec rake generate_secret_token

・DBの作成
RAILS_ENV=production bundle exec rake db:migrate
RAILS_ENV=production bundle exec rake redmine:load_default_data

「en」→「Enter」
jaだとエラーになりました。。

・Nginxのリスタート
systemctl restart nginx

・firewallの許可
firewall-cmd --add-service=http --permanent

・firewallの再起動
firewall-cmd --reload

ブラウザを立ち上げ「192.168.56.150」へアクセス
画面右上の「ログイン」をクリック。

Login:admin
Password:admin



楽天トラベル

皆さん既にやってると思いますが、 AmazonPrimeだとAmazon Music Unlimitedが月額780円でできるんですね!
最近知ってapple musicから乗り換えました。(200円ですが安い方がいいに越したことはないです笑)

下のRedmineの本は kindle unlimitedで無料で読めますのでお勧めです!(30日無料期間に読んで解約もアリだと思います。笑)



【tech】WordPressをNginxで動かす手順メモ(CentOS7 PHP7.2 MariaDB)




公開:2019/04/14
更新:2020/06/03

このblogはGCP上のWordPressで動かしているのですが、いずれはサーバから構築して、Nginxで動かしてみたいと思いやり方を調べたのでメモして残しておきます。
もしわからないところがあればお問い合わせください!!

・環境


CentOS7.5 (minimal) on VirtualBox
(IP:192.168.56.150)
サイト名:kusomemo ※任意の値に置き換えてください
WEB:Nginx
DB:MariaDB
MariaDB rootユーザPW:Root123!!
WordPress用DB名:wordpressDB
WordPress ユーザ:wordpressDBuser
WordPressDBuser PW:Wordpress123!

それでは手順です!



・epelのインストール
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

・remiリポジトリの追加
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

・remiのインストール
yum install -y --enablerepo=epel,remi-php72 php php-mbstring php-pear php-fpm php-mcrypt php-mysql

・Nginxのインストール
rpm -Uvh https://nginx.org/packages/rhel/7/x86_64/RPMS/nginx-1.14.2-1.el7_4.ngx.x86_64.rpm



・MariaDBのインストール
yum install -y mariadb mariadb-server

・firewallの許可設定
firewall-cmd --add-service=http --permanent

・firewallの再起動
firewall-cmd --reload

・wordpress用ディレクトリ作成
mkdir -p /usr/share/nginx/wordpress

・wordpress用ディレクトリの所有者をnginxへ変更
chown nginx:nginx /usr/share/nginx/wordpress/

・wordpress用ディレクトリへ移動
cd /usr/share/nginx/wordpress

・最新版wordpressをDL
curl -O https://ja.wordpress.org/latest-ja.tar.gz

・DLしてきたWPを展開
tar xzfv latest-ja.tar.gz

・展開したWPの所有者を変更
chown -R nginx:nginx wordpress

・展開したWPをサイト名(任意)へリネーム
mv wordpress kusomemo

・Nginxのconfファイルディレクトリへ移動
cd /etc/nginx/conf.d

・デフォルトconfをリネーム(※残していると、このconfが優先されるようです)
mv default.conf default.conf.org

・サイト用のconfファイルを作成
vi kusomemo.conf
→下記設定を記述


server {
  listen 80;
  server_name kusomemo.tokyo;
  root /usr/share/nginx/wordpress/kusomemo;
  index index.php;

  charset utf-8;

# wordpress パーマネントリンク設定
  try_files $uri $uri/ /index.php?q=$uri&$args;

# wp-config.phpへのアクセス拒否設定
  location ~* /wp-config.php {
    deny all;
  }

# php-fpm用設定
  location ~ \.php$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_script_name;
    include fastcgi_params;
  }
}

・Nginxが使用するpidのファイルを作成
vi /var/run/nginx.pid
→ファイル作成のみで保存

・Nginxの自動起動設定
systemctl enable nginx

・Nginxの起動
systemctl start nginx
※ここで一度エラーが出る事がありますが、
 もう一度startかければ起動します。

・PHP-FPMのディレクトリへ移動
cd /etc/php-fpm.d/

・confファイルのバックアップ
cp -p www.conf www.conf.org

・confファイルの編集
vi www.conf
→apacheをnginxに変更します。
 :%s/apache/nginx/cg
 で対象を確認しながら置換できます



・約24行目
user = apache
→user = nginx
・約24行目
group = apache
→group = nginx


・php-fpmの自動起動
systemctl enable php-fpm

・php-fpmの起動
systemctl start php-fpm

・MariaDBの自動起動設定
systemctl enable mariadb

・MariaDBの起動
systemctl start mariadb

・MariaDBの初期設定
mysql_secure_installation
初期PWを変更して、rootPWも変更しておく。
そのほかはすべてyでOK

Enter current password for root (enter for none):
→enter

Change the root password? [Y/n] y
→rootのPW:Root123!
 以降は全て「y」でOKです

・MariaDBのconfファイルディレクトリへ移動
cd /etc/my.cnf.d/

・confファイルのバックアップ
cp -p server.cnf server.cnf.org
※CentOS8で構築したときは、server.cnfではなく、「mariadb-server.cnf」でした


・confファイルの編集
vi server.cnf
約16行目の[mysqld]に下記設定項目を追加


character-set-server = utf8


・MariaDBを再起動
systemctl restart mariadb

・MySQLモードへ移行
mysql -u root -p
→Root123!

・DBの作成
CREATE DATABASE wordpressDB;

・DBへユーザと権限、PWの設定
GRANT ALL PRIVILEGES ON wordpressDB.* TO "wordpressDBuser"@"localhost" IDENTIFIED BY "Wordpress123!";

・保存
FLUSH PRIVILEGES;

・exit
exit

・サイトのディレクトリへ移動
cd /usr/share/nginx/wordpress/kusomemo/


・サイトのconfファイルのバックアップ
cp -p wp-config-sample.php wp-config.php

https://api.wordpress.org/secret-key/1.1/salt/
にアクセスしてキーを作成しておきましょう

・サイトconfの編集
vi wp-config.php


各パラメータを置換
:%s/database_name_here/wordpressDB/g

:%s/username_here/wordpressDBuser/g

:%s/password_here/Wordpress123!/g

WEBで作成したキーを約55行目から62行目に貼り付けて保存

<?php
/**
 * WordPress の基本設定
 *
 * このファイルは、インストール時に wp-config.php 作成ウィザードが利用します。
 * ウィザードを介さずにこのファイルを "wp-config.php" という名前でコピーして
 * 直接編集して値を入力してもかまいません。
 *
 * このファイルは、以下の設定を含みます。
 *
 * * MySQL 設定
 * * 秘密鍵
 * * データベーステーブル接頭辞
 * * ABSPATH
 *
 * @link http://wpdocs.sourceforge.jp/wp-config.php_%E3%81%AE%E7%B7%A8%E9%9B%86
 *
 * @package WordPress
 */

// 注意:
// Windows の "メモ帳" でこのファイルを編集しないでください !
// 問題なく使えるテキストエディタ
// (http://wpdocs.sourceforge.jp/Codex:%E8%AB%87%E8%A9%B1%E5%AE%A4 参照)
// を使用し、必ず UTF-8 の BOM なし (UTF-8N) で保存してください。

// ** MySQL 設定 - この情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define('DB_NAME', 'wordpressDB');

/** MySQL データベースのユーザー名 */
define('DB_USER', 'wordpressDBuser');

/** MySQL データベースのパスワード */
define('DB_PASSWORD', 'Wordpress123!');

/** MySQL のホスト名 */
define('DB_HOST', 'localhost');

/** データベースのテーブルを作成する際のデータベースの文字セット */
define('DB_CHARSET', 'utf8');

/** データベースの照合順序 (ほとんどの場合変更する必要はありません) */
define('DB_COLLATE', '');

/**#@+
 * 認証用ユニークキー
 *
 * それぞれを異なるユニーク (一意) な文字列に変更してください。
 * {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org の秘密鍵サービス} で自動生成することもできます。
 * 後でいつでも変更して、既存のすべての cookie を無効にできます。これにより、すべてのユーザーを強制的に再ログインさせることになります。
 *
 * @since 2.6.0
 */
define('AUTH_KEY',         'L xv>t<S$6|a+OHwxq5`C8S.!2;z|P^T:&u^blaa|*uY5 a}x:Y>pWJVN!M$_wZ@');
define('SECURE_AUTH_KEY',  '4B!l[$Aiz zEGu(|=h6dYIDJR;eNeUgCaGoIy4i(.N@YO6A=P;^EIh|T!sCS9x1X');
define('LOGGED_IN_KEY',    ' z/1j8<l wE1eBZ(@+0`yr(BK0&&zPp8$3pyJn.-{W^qoj)Z+GG-0 r%^C65m8iY');
define('NONCE_KEY',        '*4-:5wjE9VL4JK=3GG/Dw:/VEl-vdnmHn[kJe{@X3AujV}rqXYjoIrVs-},|;_z|');
define('AUTH_SALT',        'Gh_YZrAIa<, +2P7jTVEisx4(@2#5pIw~X5+FiO^/q8=<4^%*wLkYBT#%l0b/y{g');
define('SECURE_AUTH_SALT', 'm$V1,lNWo<z] lAAm1mj6k*^P`;q^WVc76<I{E`WXlGgD8>Edo%d#qK9%8DxTzp[');
define('LOGGED_IN_SALT',   '-JS@,8_u0Qt}}+PZ1-v4]% [7(9|(2Mpw*{6)>BlQ+]|GOf8PwRxTJ)/P~R3u?Ve');
define('NONCE_SALT',       '+%*z+YyLHVQd!)Hg?^QL90|B?5c|Yx_dD~OwxZH!cg0OF[-NA4~rm) XPn+!{y^Y');
/**#@-*/

/**
 * WordPress データベーステーブルの接頭辞
 *
 * それぞれにユニーク (一意) な接頭辞を与えることで一つのデータベースに複数の WordPress を
 * インストールすることができます。半角英数字と下線のみを使用してください。
 */
$table_prefix  = 'wp_';

/**
 * 開発者へ: WordPress デバッグモード
 *
 * この値を true にすると、開発中に注意 (notice) を表示します。
 * テーマおよびプラグインの開発者には、その開発環境においてこの WP_DEBUG を使用することを強く推奨します。
 *
 * その他のデバッグに利用できる定数については Codex をご覧ください。
 *
 * @link http://wpdocs.osdn.jp/WordPress%E3%81%A7%E3%81%AE%E3%83%87%E3%83%90%E3%83%83%E3%82%B0
 */
define('WP_DEBUG', false);

/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */

/** Absolute path to the WordPress directory. */
if ( !defined('ABSPATH') )
        define('ABSPATH', dirname(__FILE__) . '/');

/** Sets up WordPress vars and included files. */
require_once(ABSPATH . 'wp-settings.php');



これで設定完了です。
ブラウザを立ち上げて下記ディレクトリにアクセスしてください。

・Nginxの再起動
systemctl restart nginx

http://192.168.56.150/wp-admin/install.php

以上でアクセスできると思いますが、できなかった時は
Nginxの再起動を試してみたりしてみてください。
→systemctl restart nginx

にアクセスして初期設定をする。
ユーザ・PWの設定後、改めて「192.168.56.150」にアクセスすると、nginxの画面が出ることがありますが、「更新」をすると、wordpressの画面が表示されると思います。

以上です!無事構築できましたか?
わからないところがあればコメントお願いいたします!



久しぶりにみてみると、モバイルバッテリーもずいぶん安くなってるんですね!

皆さん既にやってると思いますが、 AmazonPrimeだとAmazon Music Unlimitedが月額780円でできるんですね!
最近知ってapple musicから乗り換えました。(200円ですが安い方がいいに越したことはないです笑)

下のPythonの本は kindle unlimitedで無料で読めますのでお勧めです!(30日無料期間に読んで解約もアリだと思います。笑)



【tech】nginx起動時にエラーが出た時のメモ



最近F5に買収や日本に本格進出と話題の絶えないnginxを私も触ってみたいとおもっていまして、最近ようやく触りだしたのですが、apacheほど優しくなく苦戦しています。笑

今日はnginxを起動させようとしたときにエラーが出てしまって調査した結果と解決策をメモしておきます。

・環境
OS:CentOS7.5
Nginx:version: nginx/1.14.2

・エラー
[root@localhost run]# systemctl start nginx
Job for nginx.service failed because a configured resource limit was exceeded. See "systemctl status nginx.service" and "journalctl -xe" for details.
(よく出るやつですよね・・もう見飽きました。笑)


・解決策
vi /var/run/nginx.pid
でファイルをつくって適当に数値「1」でOKでした。
を入れて保存して終了。

もう一度「systemctl start nginx」を打ったら起動しました!

・トラブルシュート
→journalctl -ex
journalログ確認
Apr 13 09:14:27 localhost.localdomain nginx[17831]: nginx: [emerg] open() "/var/run/nginx.pid" failed (13: Permission denied)
Apr 13 09:14:27 localhost.localdomain systemd[1]: Failed to read PID from file /var/run/nginx.pid: Invalid argument
Apr 13 09:14:27 localhost.localdomain systemd[1]: Failed to start nginx - high performance web server.

permission deniedって出てるけど今rootで実行中だしな~と思って、とりあえずこの「/var/run/nginx.pid」にアクセスしてみました。


cd /var/run
ll | grep nginx

でない...ファイルそのものがなかったみたいだったので上記のファイルをつくってみたら解決できました!

以上です!!



久しぶりにみてみると、モバイルバッテリーもずいぶん安くなってるんですね!

皆さん既にやってると思いますが、 AmazonPrimeだとAmazon Music Unlimitedが月額780円でできるんですね!
最近知ってapple musicから乗り換えました。(200円ですが安い方がいいに越したことはないです笑)

下のPythonの本は kindle unlimitedで無料で読めますのでお勧めです!(30日無料期間に読んで解約もアリだと思います。笑)