Linux iptables

firewalld

無効

# systemctl stop firewalld.service
# systemctl mask firewalld.service
# systemctl list-unit-files | grep firewalld

iptables

インストール

# yum install iptables-services
# systemctl start iptables-services
# systemctl enable iptables-services

設定

※/etc/sysconfig/iptables

# SSH, HTTP, HTTPS
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 443 -j ACCEPT

Git Git/SourceTree使用方法

個人での利用

ステージング
作業コピーの変更をインデックスに登録

全てインデックスに追加
git add .

指定ファイルをインデックスに追加
git add test.txt

コミット
ステージングされた作業コピーの変更をローカルブランチに登録

コミット
git commit -m “コメント”

ブランチ
現在のコミットからブランチを作成
ローカルブランチを複製

現在のコミットからTESTブランチを作成
git branch test

beforeブランチからafterブランチを作成
git branch after before

チェックアウト

過去/未来のコミットに移動
別ブランチのコミットに移動
→ 作業コピーのファイル状態は移動先のコミット状態に変更される

別ブランチのコミットに移動
git checkout paypal_sandbox

マージ
チェックアウトしているブランチへ別ブランチの変更を取り込む

更新されたリモート追跡ブランチを、現在のローカルブランチにマージする
git merge FETCH_HEAD

リセット
コミット状態を戻す
git reset (オプション) (戻す位置)

戻す対象

オプション HEAD インデックス 作業ツリー
–hard
–mixed
–soft

戻す位置

位置 機能
HEAD^ 直前のコミット
HEAD 現在のコミット

HEAD、インデックス、作業ツリーを戻す
git reset –hard ~

HEAD、インデックスを戻す
git reset –mixed ~

HEADを戻す
git reset –soft ~

HEAD^(直前のコミット)を戻す
git reset –hard HEAD^

コミット後の変更を戻す
git reset –hard HEAD

スタッシュ
作業コピーの変更を退避

チームでの利用

クローン
リモートブランチをローカルブランチとしてコピー

【手順】
「ファイル」メニュー > 「新規/クローンを作成する」

git clone https://github.com/ユーザ名/レポジトリ.git

フェッチ
リモートブランチの変更をリモート追跡ブランチに更新(1)
その後、リモート追跡ブランチの変更を作業コピーにマージ(2)する必要がある
PULLは(1)~(2)を同時実行する
リポジトリ:originのmasterブランチのコミットをリモート追跡ブランチに更新
git fetch origin master

プル
リモートブランチのコミットをローカルブランチに更新
リポジトリ名:originのmasterブランチのコミットをローカルブランチに更新
git pull origin master

レポジトリ名設定
git remote add 別名 https://github.com/ユーザ名/レポジトリ.git

【強制pull】
コンフリクトを無視してリモートに合わせる

フェッチ
git fetch origin master

②リモート追跡ブランチのorigin/masterまで戻す
git reset –hard origin/master

プッシュ
ローカルブランチのコミットをリモートブランチに更新
リポジトリ名:originへローカルのmasterブランチのコミットを更新
git push origin master

リポジトリ名:originのmasterブランチへ、ローカルのtestブランチのコミットを更新
git push origin test:master

XAMPP ドメイン・SSL設定

httpd.conf

Apache起動時に読み込まれる設定ファイル
更に以下の設定ファイルを読み込む

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

# Secure (SSL/TLS) connections
Include conf/extra/httpd-ssl.conf

httpd-vhosts.conf

※C:\xampp\apache\conf\extra\httpd-vhosts.conf

バーチャルホスト有効設定

この設定は新し目のapatche、xamppでは不要

##NameVirtualHost *:80

NameVirtualHost *:80
NameVirtualHost *:443

デフォルト設定

<VirtualHost *:80>
 DocumentRoot "C:/xampp/htdocs"
 ServerName localhost
</VirtualHost>

バーチャルホスト設定

<VirtualHost *:80>
<VirtualHost *:443>
 DocumentRoot C:/xampp/htdocs/test/
 ServerName test
 ServerNameはURLに含まれるドメイン名とは関係無し
 サーバ証明書の対象サーバを指す
 SSLEngine on
 SSLCertificateFile "conf/ssl.crt/test.crt"
 SSLCertificateKeyFile "conf/ssl.key/test.key"
</VirtualHost>

<Directory "C:/xampp/htdocs/test/">
 order deny,allow
 allow from ALL
</Directory>

httpd-ssl.conf

※C:\xampp\apache\conf\extra\httpd-ssl.conf

バーチャルホスト設定

以下をhttpd-vhosts.confに書くのか、
httpd-ssl.confの末尾に書くのか、
両方に必要なのか不明。xammpのバージョンによる?


<VirtualHost *:443>
DocumentRoot "C:/xampp/htdocs/test/"
ServerName test:443
SSLEngine on
SSLCertificateFile "conf/ssl.crt/test.crt"
SSLCertificateKeyFile "conf/ssl.key/test.key"
</VirtualHost>

内容はhttpd-vhosts.confと同じ

サーバー証明書

サーバー証明書参照

hosts

管理者権限で書き込む
※C:\Windows\System32\drivers\etc\hosts

# localhost name resolution is handled within DNS itself.
# 127.0.0.1    localhost
# ::1       localhost
127.0.0.1 localhost
127.0.0.1 test.local
URL「test.local」を127.0.0.1に変換

SendMail

php.ini

※C:\xampp\php\php.ini
[mail function]
GMail利用時
SMTP=smtp.gmail.com
smtp_port=587
sendmail_from = XXXXXXX@gmail.com
sendmail_path =C:\xampp\sendmail\sendmail.exe
mail.add_x_header=Off

sendmail.ini

※C:\xampp\sendmail\sendmail.ini
[sendmail]
GMail利用時
smtp_server=smtp.gmail.com
smtp_port=587
smtp_ssl=auto
error_logfile=error.log
auth_username=XXXXXXX@gmail.com
auth_password=XXXXXXX

XAMPP インストール・設定

XAMPPとは?

発音:ザンプ
Webサーバーソフトウェア:Apache
JAVAプラットフォーム:Tomcat
DB:MySQL
開発言語(PHP、Perl)
等をまとめたパッケージ
Windows等のローカル環境でサーバーの動作を実現できる。

インストール・設定

インストール方法(windows,mac,linux共通)
公式サイトからインストールファイルをダウンロード

管理画面

http://localhost/dashboard/jp/

Apache

起動

XAMPP起動後
XAMPP2

Webサーバーソフトウェア:「Apache」起動後
XAMPP3

DocumentRoot

Apache表示対象ディレクトリ
XAMPP4
インストール先+htdocs

Apache表示対象フォルダのhtmlファイルをブラウザで表示
XAMPP5
http://localhost/index.html
【~\xampp\htdocs\index.html】
<html>
  <head>
    <title></title>
  </head>
  <body>
    <h1>It works!</h1>
  </body>
</html>

Apache表示対象フォルダのphpファイルをブラウザで表示
XAMPP6
※php拡張子のファイルがブラウザで表示されるという事は、phpのインタプリタが動作する事を示している。
【~\xampp\htdocs\test.php】
<?php phpinfo();?>

ポート番号

\xampp\apache\conf\httpd.conf
Listen 80
他のアプリと競合する場合

Listen 8080

MySQL

バージョン

コマンドプロンプト(Windowsの場合)にて、
cd (xamppインストールフォルダ)\mysql\bin
C:\xampp\mysql\bin
mysql --version

起動

コントロールパネルの「MySQL」> 「Start」

操作

ログイン
コマンドプロンプト(Windowsの場合)にて、
cd (xamppインストールフォルダ)\mysql\bin
C:\xampp\mysql\bin
mysql -u root
(インストール状態ではrootのパスワードは無し)

MySQL操作に関しては「データベースサーバー:MySQL」参照
XamppにおけるMySQL操作は実サーバーにおける操作と同じ

WordPress

(1) 公式サイトからWordPress実行ファイルをダウンロード&解凍
(2) (インストール先)/htdocsへ移動
例 C:/xampp/htdocs/wordpress
(3) http://localhost/wordpress/ へアクセス
XAMPP/Apacheを起動しておく事
XAMPP/MySQLを起動しておく事
XAMPP/phpMyAdminにてデータベース(データは空でOK)
(4) インストール開始
※(3)で作成したDB名、ユーザー名:root、パスワード:(空) を入力

SendMail

※C:\xampp\php\php.ini
[mail function]

;sendmail_path =

sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"
「sendmail」のパスを指定

Gメールサーバを利用する場合
※C:\xampp\sendmail\sendmail.ini
[sendmail]
smtp_server=smtp.gmail.com
smtp_port=587
auth_username=~@gmail.com
auth_password=XXXXXXXX
force_sender=~@gmail.com

2018年6月現在の設定
https://myaccount.google.com/にアクセス
[ログインとセキュリティ]を選択
安全性の低いアプリの許可を「有効」※下の方

データベースサーバー:PostgreSQL

インストール

リポジトリ登録

# wget https://download.postgresql.org/pub/repos/yum/9.X/redhat/rhel-7-x86_64/pgdg-centos96-9.X.noarch.rpm
# yum install pgdg-centos9X-9.X.noarch.rpm -y

PostgreSQLインストール

yum install postgresql9X-server -y

設定

PHPからのモジュール読み込み

※php.ini
;extension=php_pgsql.dll

extension=php_pgsql.dll

データベース操作

PostgreSQL バックアップ/リストア
PostgreSQL コマンド

データベースサーバー:MySQL

MySQL

インストール

MySQLインストール
# yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
# yum install mysql mysql-devel mysql-server mysql-utilities

初期化
mysqld –user=mysql –initialize

初期パスワード確認
grep password /var/log/mysqld.log

MySQL初期設定
# mysql_secure_installation
パスワードを設定します。

MySQL自動起動設定
# chkconfig –level 3 mysqld on

MySQLバージョン確認
# mysql –version

設定

CakePHP3/非集約カラムをSELECTできる様にする
※my.cnf
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

操作

MySQLログイン
mysql -u root -p
管理者:rootでログイン

既存データベース一覧表示
show databases;

データベース作成
create database (データベース名);

MySQLログアウト
exit
WEBサーバーへ戻ります。

操作対象データベース指定
use (データベース名)

phpMyAdmin

ブラウザから遠隔操作できるデータベースソフト
CentOSで自宅サーバー構築」参照

インストール
https://www.phpmyadmin.net/downloads/
のファイル一覧からから最新バージョンのURLをコピー

# wget https://files.phpmyadmin.net/phpMyAdmin/4.8.4/phpMyAdmin-4.8.4-all-languages.tar.gz
# tar xzvf phpMyAdmin-4.8.4-all-languages.tar.gz
# mv phpMyAdmin-4.8.4-all-languages /var/www/~/phpMyAdmin

yumでインストールすると古いバージョンがインストールされる(2018/12/16現在)
# yum –enablerepo=epel install -y phpMyAdmin
/etc/phpMyAdmin
/usr/share/phpMyAdmin
が作成される

php-mysqlインストール確認
# rpm -q php-mysql

設定

設定ファイル
/etc/phpMyAdmin/config.inc.php

設定ファイル作成(初回)
# cp config.sample.inc.php config.inc.php
インストール時のデフォルト設定ファイルをコピー

パーミッション変更
# chmod 660 config.inc.php

所有者変更
# chown apache:apache config.inc.php

設定ファイル変更内容
$cfg[‘blowfish_secret’] = ”;

$cfg[‘blowfish_secret’] = ‘(パスワード)’;
追加(日本語化)
$cfg[‘Lang’] = ‘ja-utf-8’;

phpMyAdmin用Apache設定ファイル作成
# vi /etc/httpd/conf.d/phpmyadmin.conf

設定内容
<Location /phpmyadmin>
Order deny,allow
Deny from all
Allow from 127.0.0.1
Allow from 192.168.X
</Location>

暗号化機能拡張
$ yum install php-mcrypt

Git GitHub Pages利用方法

リモートリポジトリ作成

https://github.com/office-yone/office-yone.github.io.git
末尾がgithub.io

リモートリポジトリと同期

git clone https://github.com/office-yone/office-yone.github.io.git targetdir

html作成

cd targetdir
echo "hello world" > index.html

ステージにアップロード、コミット

git add index.html
git commit -m "index.html"

リモートリポジトリにアップロード

リモートリポジトリをブックマーク登録
git remote add origin https://office-yone@github.com/office-yone/office-yone.github.io.git

プッシュ
git push origin master

htmlをブラウザで表示

http://office-yone.github.io/index.html

intlモジュールインストール

参考

さくらのレンタルサーバPHP7環境でintlモジュール有効化

ディレクトリ作成

% mkdir -p ~/usr/local/src
% mkdir -p ~/usr/local/php/extension

ICUのビルド

% cd ~/usr/local/src
% wget http://download.icu-project.org/files/icu4c/58.1/icu4c-58_1-src.tgz
% tar zxvf icu4c-58_1-src.tgz
% cd icu/source
% ./configure –prefix=$HOME/usr/local
% gmake
% gmake install

intlのビルド

php-7.1.7に同梱されているintlをビルド
% cd ~/usr/local/src
% wget https://github.com/php/php-src/archive/php-7.1.7.zip
% unzip php-7.1.7.zip
% mv php-src-php-7.1.7/ext/intl ./intl-php-7.1.7
% rm -rf php-src-php-7.1.7
% cd intl-php-7.1.7
% phpize
% ./configure –with-icu-dir=$HOME/usr/local –with-php-config=/usr/local/php/7.1/bin/php-config
% make

実行ファイルを拡張モジュールディレクトリへ移動

modulesフォルダにできたintl.soを、拡張モジュール指定用のフォルダへコピー
% cp ~/usr/local/src/intl-php-7.1.7/modules/intl.so ~/usr/local/php/extension/

php.ini編集

extension_dir = /home/さくらのユーザー名/usr/local/php/extension
extension=intl.so

Linux 大量のファイルを削除する方法

通常の削除

rm -rf *

ls結果を削除

ファイル数が多すぎる等、rmコマンドが実行できなくなる場合
ls | xargs rm
表示したファイルリストからファイルを削除

ファイル名一覧を読み込んで削除

しかしsakuraの場合ディスクI/Oに制限がある為、lsに失敗する。
ls | head -n 10
数件のみ表示
さえダメな場合

1) ファイルリストをテキストへ出力
ls | head -n 1000 > list.txt

2) ファイルリストを読み込んで削除
cat list.txt | xargs rm

1)~2)を繰り返す

Linux CRON

インストール

yum install crontabs

設定

設定確認

croptab -l

設定ファイル

/etc/crontab

設定コマンド

crontab -e

曜日 コマンド 機能
00 10 * * 4 test.sh 00 10 *
* 4 /~/test.sh
毎週水曜日10:00
*/10 * * * * test.sh */10 * *
* * /~/test.sh
10分毎に実行
0 2 * * * test.sh 0 2 *
* * /~/test.sh
2時に実行
0 2 01 * * test.sh 0 2 01
* * /~/test.sh
毎月1日2時に実行

設定消去

crontab -r

実行ログ

tail -f /var/log/cron