-
Subversion導入
apt-get install subversion subversion-tools libapache2-svn
subversion:Subversion本体
subversion-tools:バックアップコマンドが利用できたりするツール
libapache2-svn:Apache2とSubversionの連携用Subversionの設定を変更します。
vi /etc/subversion/config
下記内容を変更 # クライアントの改行コードをサーバで統一 # enable-auto-props = yes ↓ enable-auto-props = yes
Subversionのリポジトリを作成します。
mkdir /var/www/svn svnadmin create /var/www/svn/z-test chown -R www-data.www-data /var/www/svn/z-test
外部から接続するため、ユーザIDとパスワードを設定します。
htpasswd -c /etc/apache2/dav_svn.passwd ユーザー名 New password:パスワード Re-type new password:パスワード Adding password for user ユーザー名
Apache2とSubversionを繋ぐための設定をします。
また、Subersionには直接アクセス、WebDAV、SVNの3つのプロトコルのうち、
WebDAVでBasic認証で試します。vi /etc/apache2/mods-enabled/dav_svn.conf
# 下記内容を最終行に追加 <Location /svn> DAV svn SVNParentPath /var/www/svn AuthType Basic AuthName "Subversion Repository" AuthUserFile /etc/apache2/dav_svn.passwd AuthzSVNAccessFile /etc/apache2/dav_svn.authz Require valid-user </Location>
権限ファイルにユーザを追加します。
vi /etc/apache2/dav_svn.authz
# 下記内容を追加 # z-testより下は追加ユーザであればRead、Write可能 # それ以外はRead、Write不可 [z-test:/] manager = ユーザー名 [/] * = @manager = rw
モジュールを有効化します。
a2enmod authz_svn
Considering dependency dav_svn for authz_svn: Considering dependency dav for dav_svn: Module dav already enabled Module dav_svn already enabled Enabling module authz_svn. To activate the new configuration, you need to run: service apache2 restart
記載の通り、Apache2を再起動します。
service apache2 restart
最後にSubversionにはhttpsで強制的に接続するため、「.htaccess」を追加します。
vi /var/www/svn/.htaccess
# 下記内容を追加 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] </IfModule>
chown -R www-data.www-data /var/www/svn/.htaccess
「https://z-area.net/svn/z-test/」で接続し、ログインすればリポジトリを参照可能。
【WordPress】WordPressSSL導入
-
WordPressSSL導入
vi /var/www/z-blog/wp-config.php
# 下記内容を「編集が必要なのはここまで(略)」より上に追加 /* ログイン・管理画面SSL強制 */ define('FORCE_SSL_LOGIN', true); define('FORCE_SSL_ADMIN', true);
自身でURLをhttpsに変更すればログインはできましたが、
上記を設定しただけではログイン画面を表示しても強制的にhttpsに切り替わりませんでした。
そこで「.htaccess」にリダイレクトを記載してみます。vi /var/www/z-blog/.htaccess
# BEGIN WordPressの上に下記内容を追加 RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /(.*) HTTP/ [NC] RewriteCond %{HTTPS} !=on [NC] RewriteRule ^/?(wp-admin/|wp-login.php) https://z-area.net%{REQUEST_URI}%{QUERY_STRING} [R=301,QSA,L]
設定後にログイン画面を表示したら、強制的にhttpsに切り替わりました。
不思議なのは「.htaccess」の内容を消しても強制的にhttpsに切り替わり続けるようになったこと。
不都合ないので気にしないことにしました。
【WEBサーバ】Apache2SSL導入
Apache2にSSLを導入し、httpsで接続できるようにします。
-
OpenSSL設定
「/etc/ssl/openssl.cnf」が存在していたので
OpenSSLはインストール済のようなので、設定だけ行います。vi /etc/ssl/openssl.cnf
# [ usr_cert ] 付近を下記内容に変更 #nsCertType = server ↓ nsCertType = server # [ v3_ca ]付近を下記内容に変更 #nsCertType = sslCA, emailCA ↓ nsCertType = sslCA, emailCA
-
オレオレ認証局作成
cd /usr/local/ mkdir certs cd certs /usr/lib/ssl/misc/CA.pl -newca
#Enterすれば作成されると書いてあるので、何も入力せずEnter CA certificate filename (or enter to create) ...................................+++ .............+++ writing new private key to './demoCA/private/cakey.pem' # パスワード入力 Enter PEM pass phrase: # パスワード再入力 Verifying - Enter PEM pass phrase: ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- # JPを入力 Country Name (2 letter code) [AU]: # Tokyoを入力 State or Province Name (full name) [Some-State]: # Akihabaraを入力 Locality Name (eg, city) []: # Praicate_CAを入力 Organization Name (eg, company) [Internet Widgits Pty Ltd]: # 何も入力せずEnter Organizational Unit Name (eg, section) []: # z-area.net Common Name (e.g. server FQDN or YOUR name) []: # 何も入力せずEnter Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request # 何も入力せずEnter A challenge password []: # 何も入力せずEnter An optional company name []: Using configuration from /usr/lib/ssl/openssl.cnf # パスワード再々入力 Enter pass phrase for ./demoCA/private/cakey.pem: Check that the request matches the signature Signature ok Certificate Details: ~(略)~ Certificate is to be certified until Sep 3 14:39:36 2017 GMT (1095 days) Write out database with 1 new entries Data Base Updated
オレオレ認証局が出来たので、次に秘密鍵を作成します。
-
秘密鍵作成
openssl genrsa -out server.key 1024
Generating RSA private key, 1024 bit long modulus ...................................+++ .............+++ e is 65537 (0x10001)
秘密鍵が作成できたので、次に公開鍵を作成します。
-
公開鍵作成
openssl req -new -key server.key -out server.csr
先ほどオレオレ認証局を作成したときと同じ値を入力する。
You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- # JPを入力 Country Name (2 letter code) [AU]: # Tokyoを入力 State or Province Name (full name) [Some-State]: # Akihabaraを入力 Locality Name (eg, city) []: # Pravate_CAを入力 Organization Name (eg, company) [Internet Widgits Pty Ltd]: # 何も入力せずEnter Organizational Unit Name (eg, section) []: # z-area.net Common Name (e.g. server FQDN or YOUR name) []: # 何も入力せずEnter Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request # 何も入力せずEnter A challenge password []: # 何も入力せずEnter An optional company name []:
公開鍵が作成できたので、最後にオレオレ証明書を作成する。
-
オレオレ証明書作成
証明書のシリアルナンバーを発行する。# シリアルナンバー01で発行 echo 01 > demoCA/ca-cert.srl # -days 3650 は有効日数なので10年 openssl x509 -CA ./demoCA/cacert.pem -CAkey ./demoCA/private/cakey.pem -CAserial ./demoCA/ca-cert.srl -req -days 3650 -in server.csr -out server.crt
Signature ok subject=/C=JP/ST=Tokyo/L=Akihabara/O=Private_CA/CN=z-area.net Getting CA Private Key # パスワード再々々入力 Enter pass phrase for ./demoCA/private/cakey.pem:
ls demoCA server.crt server.csr server.key
demoCA:オレオレ認証局
server.crt:オレオレ証明書
server.csr:公開鍵
server.key:秘密鍵
-
Apache2SSL設定
Apache2のSSL設定とSSLモジュールを有効にする。/etc/apache2/a2ensite default-ssl
Enabling site default-ssl. To activate the new configuration, you need to run: service apache2 reload
/etc/apache2/a2enmod ssl
Enabling module ssl. See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates. To activate the new configuration, you need to run: service apache2 restart
vi /etc/apache2/sites-enabled/default-ssl
# ServerAdminの上に下記内容を追加 ServerName z-area.net # 下記内容を変更 SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem ↓ SSLCertificateFile /usr/local/certs/server.crt SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key ↓ SSLCertificateKeyFile /usr/local/certs/server.key # 下記内容を変更(「/var/www/」の子要素) Options Indexes FollowSymLinks MultiViews ↓ Options -Indexes FollowSymLinks -MultiViews # .hatcessファイル制御(単純にAllで良いのかは要検討) AllowOverride None ↓ AllowOverride All
service apache2 restart
-
ファイアウォール設定
ufw allow 443 # yを入力 Command may disrupt existing ssh connections. Proceed with operation (y|n)? Firewall is active and enabled on system startup ufw status
To Action From 20 LIMIT Anywhere 21 LIMIT Anywhere 22 LIMIT Anywhere 80 ALLOW Anywhere 8080 ALLOW Anywhere 443 ALLOW Anywhere
「https://z-area.net/」でHTTPS接続でIt Works!が表示されれば成功。
ルータでもポート443を開放後に外からも接続確認。
【Raspbian】Raspberry Pi性能向上
Raspberry Piに無理をさせているので、
ちょっとでもパフォーマンスをアップさせます。
-
GPUメモリ割り当て変更
raspi-config
「8. Advanced Option」を選択。
「A3 Memory Split」を選択。
GPUメモリ割り当てを16に変更。
-
仮想端末無効化
6つも仮想端末が立ち上がるようになっていますが、
ログインする人はSSHで本人のみなので、5つをコメントアウトします。vi /etc/inittab
1:2345:respawn:/sbin/getty noclear 38400 tty1 #2:23:respawn:/sbin/getty 38400 tty2 #3:23:respawn:/sbin/getty 38400 tty3 #4:23:respawn:/sbin/getty 38400 tty4 #5:23:respawn:/sbin/getty 38400 tty5 #6:23:respawn:/sbin/getty 38400 tty6
【FTPサーバ】FTP導入
ポートは空けないので外からは接続できませんが、
ローカルではFTPでも問題ないので導入してみます。
-
FTP導入
apt-get install vsftpd service vsftpd stop vi /etc/vsftpd.conf
# 下記内容を変更 # 匿名ユーザ拒否 anonymous_enable=YES ↓ anonymous_enable=NO # ローカルユーザ許可 #local_enable=YES ↓ local_enable=YES # 書き込み許可 #write_enable=YES ↓ write_enable=YES # ファイル作成時のパーミッション755 #local_umask=022 ↓ local_umask=022 # アスキーでアップロード許可 #ascii_upload_enable=YES ↓ ascii_upload_enable=YES # アスキーでダウンロード許可 #ascii_download_enable=YES ↓ ascii_download_enable=YES # ホームディレクトリより上へのアクセス制御にchrootリストファイルを利用 #chroot_local_user=YES ↓ chroot_local_user=YES # chrootリストファイルを有効 #chroot_list_enable=YES ↓ chroot_list_enable=YES # chrootリストファイル配置場所 #chroot_list_file=/etc/vsftpd.chroot_list ↓ chroot_list_file=/etc/vsftpd.chroot_list # 下記内容を最終行に追加 # FTP接続制御リストファイル有効 userlist_enable=YES # FTP接続制御リストファイルに追加されていないユーザ拒否 userlist_deny=NO # FTP接続制御リストファイル配置場所 userlist_file=/etc/vsftpd.user_list
chrootリストファイルとFTP接続制御リストファイルに
自身のユーザ名を追加し、FTP再起動。vi /etc/vsftpd.chroot_list vi /etc/vsftpd.user_list service vsftpd start
【WordPress】WordPress設定
Raspberry Piはいつ壊れるか不安なので、
再インストールを見越してWordPressの設定メモ。
-
外観-テーマ
Paramentを入れました。 -
外観-ウィジェット
最近のコメントと最近の投稿を使用停止。 -
外観-テーマ編集
style.cssの編集で最終行に下記内容を追加.form-allowed-tags { display:none !important; }
-
プラグイン-インストール済のプラグイン
TablePressを導入。
TablePressのプラグインのオプションでテーマにあうようにカスタムCSSを設定。.tablepress thead th { font-size: 10pt !important; color: #989eae !important; text-align: center !important; background-color: #202228 !important; padding: 5px !important; border-width: 1px !important; border-style: solid !important; border-color: #444855 !important; } .tablepress tbody td { font-size: 10pt !important; color: #989eae !important; text-align: left !important; background-color: #202228 !important; padding: 5px !important; border-width: 1px !important; border-style: solid !important; border-color: #444855 !important; }
-
プラグイン-インストール済のプラグイン
SyntaxHighlighter Evolvedを導入。
SyntaxHighlighterのバージョンは2.xを選択。
テーマはEmacsを選択。
-
ユーザー-あなたのプロフィール
「ビジュアルリッチエディターを使用しない」にチェック。
-
設定-一般設定
新規ユーザーのデフォルト権限グループを「投稿者」に設定。
日付のフォーマットを「YYYY/MM/DD」に設定。
時刻フォーマットを「HH24:MI」に設定。 -
設定-表示設定
1ページに表示する最大投稿数を「5」に設定。
RSS/Atom フィードで表示する最新の投稿数を「5」に設定。 -
設定-ディスカッション
投稿のデフォルト設定のチェックを全て外す。
自分宛のメール通知のチェックを全て外す。 -
設定-パーマリンク設定
日付と投稿名を選択。
カスタム構造で「/%year%/%monthnum%/%day%/」を設定したところ、
この内容では記事が一意に特定できないため、プレビュー機能が利用できませんでした。
1日に何回も記事投稿しないから全く気付かず、だいぶ迷走しました。パーマリンク設定を行うと自動で「.htaccess」が作成され、
中身を見てみると「mod_rewrite.c」というモジュールが呼ばれいるので、
モジュールを有効化します。# モジュール有効 a2enmod rewrite service apache2 restart
既に有効になっている場合は「Module rewrite already enabled」と表示されます。
【WordPress】WordPress導入
WorldPressを初期ディレクトリ(wordpress)以外に
リビジョン機能を無効にした状態でインストールします。
-
WordPress導入
cd /var/www wget http://ja.wordpress.org/latest-ja.zip unzip latest-ja.zip # wordpressというディレクトリで展開されますが、気分で変更 mv wordpress/ 任意ディレクトリ名 # ディレクトリに権限付与 chown -R www-data.www-data 任意ディレクトリ名/ cd 任意ディレクトリ名 # wp-config.phpをサンプルからコピーして作成 cp -pi wp-config-sample.php wp-config.php vi wp-config.php
# 下記内容を変更 define('DB_NAME', 'database_name_here'); ↓ define('DB_NAME', 'DB名'); define('DB_USER', 'username_here'); ↓ define('DB_USER', 'DBユーザ名'); define('DB_PASSWORD', 'password_here'); ↓ define('DB_PASSWORD', 'DBパス'); # 下記内容を「編集が必要なのはここまで(略)」より上に追加 /* リビジョン無効 */ define('WP_POST_REVISIONS', false);
下記URLにアクセスする。
http://z-area.net/任意ディレクトリ名/wp-admin/install.php
初期設定後にログインすると記事を投稿できるようになります。
初期設定画面が出てこない場合、下記設定を一時的に変更する。
vi /etc/apache2/sites-available/default
# 下記内容を変更(「/var/www/」の子要素) Options -Indexes FollowSymLinks -MultiViews ↓ Options Indexes FollowSymLinks -MultiViews
service apache2 restart
WordPress導入後は設定を元に戻しておきます。
【DBサーバ】MySQL導入
-
MySQL導入
apt-get install mysql-server
rootのパス入力を求められるので2回入力。
インストール後に文字コードの設定を行う。vi /etc/mysql/my.cnf
# 下記内容を追加([mysqld]に) # クライアントの文字コードに依存しない skip-character-set-client-handshake # 文字コード character-set-server=utf8
MySQL導入が完了したらWordPress用にDBとDBユーザを作成する。
mysql -u root -pパスワード
mysql> create database DB名; mysql> grant all privileges on DB名.* to DBユーザ名@localhost identified by "DBパス"; mysql> flush privileges;
-
MySQLの文字コード
DBはUTF-8を基本とした方が良いようです。
UTF-8の設定をせずにDBを作成している場合、alter文で強制的に変更。mysql> alter database DB名 character set utf8;
文字コードの確認を行う場合、下記SQL文で確認。
mysql> show variables like 'char%';
character_set_filesystemとcharacter_sets_dir以外がUTF-8になっていれば問題なし。
【PHP】php5導入
WordPressを公開するためにphp5とMySQLを導入します。
-
php5導入
# php本体 apt-get install php5 # php高速化:気持ち的に apt-get install php-apc # phpライブラリ(cURL):本当に必要か謎 apt-get install php5-curl # phpライブラリ(gd):本当に必要か謎 apt-get install php5-gd # phpライブラリ(mysql):必須 apt-get install php5-mysql
-
MySQL導入
apt-get install mysql-server
rootのパス入力を求められるので2回入力。
インストール後に文字コードの設定を行う。vi /etc/mysql/my.cnf
# 下記内容を追加([mysqld]に) # クライアントの文字コードに依存しない skip-character-set-client-handshake # 文字コード character-set-server=utf8
MySQL導入が完了したらWordPress用にDBとDBユーザを作成する。
mysql -u root -pパスワード
mysql> create database DB名; mysql> grant all privileges on DB名.* to DBユーザ名@localhost identified by "DBパス"; mysql> flush privileges;
-
MySQLの文字コード
DBはUTF-8を基本とした方が良いようです。
UTF-8の設定をせずにDBを作成している場合、alter文で強制的に変更。mysql> alter database DB名 character set utf8;
文字コードの確認を行う場合、下記SQL文で確認。
mysql> show variables like 'char%';
character_set_filesystemとcharacter_sets_dir以外がUTF-8になっていれば問題なし。
【WEBサーバ】Apache2ログ設定
現場ではログはデイリーなのでどうやってるのかということで設定お試しです。
さらにログ解析した際、エクセルでやらされた覚えがありますが、
やはりツールがあるようなのでお試しです。
-
Apache2ログローテーション
vi /etc/apache2/sites-available/default
# 下記内容を変更 CustomLog ${APACHE_LOG_DIR}/access.log combined ↓ #CustomLog ${APACHE_LOG_DIR}/access.log combined # 下記内容を追加 # XXは固定化したいIPによって変更 # ownlog:自身のアクセスログ ⇒ access_own.log に出力 # robotlog:検索ロボットのアクセスログ ⇒ access_robot.log に出力 # nolog:自身と検索ロボット以外のアクセスログ ⇒ access.log に出力 SetEnvIf Remote_Addr "192.168.XX." ownlog nolog SetEnvIf Remote_Addr "127.0.0.1" ownlog nolog SetEnvIf User-Agent "Googlebot" robotlog nolog SetEnvIf User-Agent "bingbot" robotlog nolog SetEnvIf User-Agent "MJ12bot" robotlog nolog SetEnvIf User-Agent "YahooFeedSeeker" robotlog nolog SetEnvIf User-Agent "ichiro/mobile goo" robotlog nolog SetEnvIf User-Agent "360Spider" robotlog nolog SetEnvIf User-Agent "SurveyBot" robotlog nolog SetEnvIf User-Agent "ia_archiver" robotlog nolog SetEnvIf Remote_Addr "208.43.225.84" robotlog nolog SetEnvIf Remote_Addr "208.43.225.85" robotlog nolog SetEnvIf User-Agent "crowler" robotlog nolog CustomLog ${APACHE_LOG_DIR}/access_own.log common env=ownlog CustomLog ${APACHE_LOG_DIR}/access_robot.log combined env=robotlog CustomLog ${APACHE_LOG_DIR}/access.log combined env=!nolog
vi /etc/logrotate.d/apache2
# 下記内容を変更 weekly ↓ daily rotate 52 ↓ rotate 90
1日単位でログをローテーションするよう変更したため、
新規ファイルをログフォルダで作成できるようログ権限を変更する。chmod 605 /var/log/apache2
-
webalizer導入
webalizerによるアクセスログの解析を行います。
解析対象は下記の通り。
1.自身と検索ロボット以外のアクセスログ
2.検索ロボットのアクセスログapt-get install webalizer # インストール時に自動作成された「/var/www/webalizer」は1のアクセスログ用 # 2のアクセスログ用フォルダを作成 mkdir /var/www/webalizer/robot # 1のアクセスログ解析ファイルを編集 vi /etc/webalizer/webalizer.conf
# 下記内容を変更 # Incremental no ↓ Incremental yes # 下記内容を追加 HTMLHead <META HTTP-EQUIV="content-Type" CONTENT="text/html; charset=UTF-8">
# 1のアクセスログ解析ファイルをコピーして2のアクセスログ解析ファイルを作成 cp -pi /etc/webalizer/webalizer.conf /etc/webalizer/robot.conf vi /etc/webalizer/robot.conf
# 下記内容を変更 LogFile /var/log/apache2/access.log.1 ↓ LogFile /var/log/apache2/access_robot.log.1 OutputDir /var/www/webalizer ↓ OutputDir /var/www/webalizer/robot
既に出力済のアクセスログがあれば、過去分を解析する。
webalizer -c /etc/webalizer/webalizer.conf /var/log/apache2/access.log webalizer -c /etc/webalizer/robot.conf /var/log/apache2/access_robot.log
アクセスログ解析結果はHTMLで参照する。
1.http://z-area.net/webalizer/
2.http://z-area.net/webalizer/robot/現状のままでは、誰でもアクセスログ解析結果を参照できてしまうので制御する。
vi /var/www/webalizer/.htaccess
# 下記内容を追加 # XXは固定化したいIPによって変更 order deny,allow deny from all allow from 192.168.XX. allow from 127.0.0.1 allow from localhost
vi /var/www/webalizer/robot/.htaccess
# 下記内容を追加 # XXは固定化したいIPによって変更 order deny,allow deny from all allow from 192.168.XX. allow from 127.0.0.1 allow from localhost