centos7 php7.3 Postfixインストール

CentOS 7にphp7.3のインストール


暫く掛かるが 完了しました! がでればOK

読み込まれているモジュールの確認

phpを入れたあとでやる adminer でエラー

   None of the supported PHP extensions (MySQLi, MySQL, PDO_MySQL) are available.
   はこれを入れて解決↓
                

Apache 再起動

1. メール送信に必要なパッケージのインストール
メール転送エージェント (MTA)にPostfix、メールサーバにGmailを利用するため

必要なパッケージをインストールします。


2. MTAの確認
alternativesコマンドでデフォルトのMTAの確認をします。

デフォルトMTAにsendmailが設定されているときは、postfixに設定を変更します。

There is 1 program that provides 'mta'.

  Selection    Command
-----------------------------------------------
*+ 1           /usr/sbin/sendmail.postfix

Enter to keep the current selection[+], or type selection number:

3. Postfixの設定
メール配送に必要な設定をします。

Gmailアカウントが必要になるので、アカウントが未登録の場合は事前に登録を済ませてください。

============================
# メールサーバのホスト名を設定します。
myhostname = mail.localdomain.local

# ドメイン名を設定します。
mydomain = localdomain.local

# 差出人のメールアドレスに使用するドメイン名を設定します。
myorigin = $mydomain

# メール受信を許可するアドレスを設定します。
# ローカルから外部への配送のみを許可するため下記を指定します。(127.0.0.1でもOK)
inet_interfaces = localhost

# IPv4 のみを有効にします。
inet_protocols = ipv4

# メールサーバー自身に配送されたとみなすドメインのリストを設定します。
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

# メールのリレー(転送)を許可するネットワークを設定します。
# ローカルからのメールのみ転送を許可するため127.0.0.0/8 を指定します。
mynetworks = 127.0.0.0/8

# Gmailサーバにメールをリレーする設定をします。
relayhost = [smtp.gmail.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_mechanism_filter = plain
smtp_use_tls = yes
smtp_sasl_tls_security_options = noanonymous
smtp_tls_CApath = /etc/pki/tls/certs/ca-bundle.crt
============================

4. sasl_passwdの設定
Gmailサーバの認証に必要なユーザIDとパスワードを記述したファイルを作成します。

[smtp.gmail.com]:587 xxxxx@gmail.com:パスワード

postmapコマンドでデータベースを作成します。



また他のユーザにパスワードを読み取られないためにアクセス権を設定します。





5. Postfixの起動
Postfixを起動させます。

さらにサーバを再起動しても自動的にPostfixが起動するように設定します。


6. Gmail「安全性の低いアプリのアクセス」をON
Gmailの設定で、 『安全性の低いアプリのアクセス』 の設定を 「オンにする」 にします。

※セキュリティレベルをどうしても下げたくないなら2段階認証にしてアプリパスワードを作る記事

7. メール送信テスト
実際にメールが送信できるかコンソールからmailコマンドを使ってテストしてみます。

無事メールが届けば完了です。

2. centos7 インターネットへの接続確認


ipアドレスの確認


こんな感じに出る。

    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
            link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
            inet 127.0.0.1/8 scope host lo
                valid_lft forever preferred_lft forever
            inet6 ::1/128 scope host 
                valid_lft forever preferred_lft forever
        2: ens1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
            link/ether 00:1c:c4:cc:a7:16 brd ff:ff:ff:ff:ff:ff
            inet 192.168.0.4/24 brd 192.168.0.255 scope global dynamic ens1   ←これがv4のIP
                valid_lft 2763sec preferred_lft 2763sec
            inet 192.168.0.5/24 brd 192.168.0.255 scope global secondary ens1 ← これも
                valid_lft forever preferred_lft forever                     
            inet6 240f:51:16c8:1:21c:c4ff:fecc:a716/64 scope global noprefixroute dynamic 
                valid_lft 297sec preferred_lft 297sec
            inet6 fe80::21c:c4ff:fecc:a716/64 scope link 
                valid_lft forever preferred_lft forever
        
        

OSバーションチェック

rootユーザーへの切り替え

rootのパスワードを入れる
パスワードが認証されるとプロンプトが”$”から”#”に変わります。

一般ユーザーへの切り替えは”exit”コマンドを入力します

まず、selinuxを無効化します。selinuxはLinuxの監査やセキュリティを向上させる機能ですが、有効になっているとサービスの動作や、設定内容にかなりの制限が出てきます。そのため、基本的には無効にする場合が多いのが実

2-1. selinuxの状態を確認

selinuxが有効になっているかの確認はgetenforceコマンドで行います。(基本的にデフォルトで有効になっています。)以下のようにgetenforceコマンドを実行して「Enforcing」と表示された場合にはselinuxが有効になっています。

 
 $ getenforce
Enforcing

2-2. selinuxを無効に設定

selinuxを無効にするには/etc/selinux/configファイルを修正します。
修正はviなどのテキストエディターで行います。本記事ではファイルを修正する場合、基本的にviコマンドの利用を前提として記載しております。
設定ファイルをviコマンドで開きます。

configファイルの修正点は

 
     SELINUX=enforcing
                                

になります。このパラメーターを

 
     SELINUX=disabled
             

CentOSが起動しなくなった場合はインストールメディアを使ってリカバリモードで起動後、configファイルを修正することで起動できるようになります。

ファイルの修正後、サーバーを再起動して、ログインできる状態になったら、再度、getenforceコマンドでselinuxの設定状況を確認します。以下のように実行結果としてDisabledと表示されれば、selinuxは正常に無効化されています。

   $ getenforce
Disabled

これでselinuxの無効化は完了です。

一般ユーザー の作成

(ユーザー名 任意)

パスワードうんぬん 
	wert3333
	x2回

(ユーザーの確認)

今作ったユーザーに管理者コマンドを使える権限を与える

# visudo  エディタが開く
 %wheel  ALL=(ALL)  ALL の % を消す
 :wq 上書き終了

作ったユーザーを登録
ginzoのグループを確認
→ ginzo : ginzo wheel と出てればOK

ポートの開放状況を確認

:22 だけ開放されている

Linux firewalldでポート開放する方法(RHEL/CentOS7系)

開放するポートを追加

先頭の#はroot権限を表すプロンプトなので貼り付けないこと!

http 80番を開放

ftp 21番を開放

一応 sslの 443番を開放

設定の有効化

設定状態の確認


公開しているサーバーならここで rootログインの無効化、とパスワード認証の無効→鍵認証有効化を行うがローカル環境なので省略する

デフォルトゲートウェイの設定方法

ip固定にして DNS を変更する場合こやる

ens1はnicのハードウェアにつけられた管理上の名前

	
        TYPE="Ethernet"
        BOOTPROTO="dhcp"
        DEFROUTE="yes"
        IPV4_FAILURE_FATAL="no"
        IPV6INIT="yes"
        IPV6_AUTOCONF="yes"
        IPV6_DEFROUTE="yes"
        IPV6_FAILURE_FATAL="no"
        NAME="ens1"
        UUID="53056463-a9a4-438d-9b2c-20b5f3bfbd49"
        DEVICE="ens1"
        ONBOOT="yes"
        IPADDR=192.168.0.5
        PREFIX=24
        DNS1=8.8.8.8
        DNS2=8.8.4.4
        PEERDNS=yes
        PEERROUTES=yes
        IPV6_PEERDNS=yes
        IPV6_PEERROUTES=yes
        
    

インターネットへの接続確認

curlコマンドはweb上のURLを読み込んで文字列をコンソールに表示する

htmlのコードが見えればOK

Please upgrade your ACME client to a version that supports ACMEv2 / RFC 8555

Let’s encriptの導入でcertbotの実行時エラーを返すようになったのでその解決法

 
# certbot certonly --webroot --webroot-path /var/www/html/ -d domain -m email@yahoo.co.jp

An unexpected error occurred:
The client lacks sufficient authorization :: Account creation on ACMEv1 is disabled. Please upgrade your ACME client to a version that supports ACMEv2 / RFC 8555
 

certbotをここから入れ直す。単に上書きで入れていい。
https://certbot.eff.org/lets-encrypt/ubuntubionic-apache

Choose how you’d like to run Certbot
Either get and install your certificates…
Run this command to get a certificate and have Certbot edit your Apache configuration automatically to serve it, turning on HTTPS access in a single step.

 
$sudo certbot --apache

Enter email address (used for urgent renewal and security notices)
メールアドレスを入力してください(緊急の更新およびセキュリティ通知に使用)  入れてEnter
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: a   ← 承諾する

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: n	← その他メールはいらない

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2  ← 2 httpsを強制する

で終了

つづいてApacheのSSL設定

# vi /etc/apache2/sites-available/default-ssl.conf
以下はこちらの記事の通り
 

Failed authorization procedure

Failed authorization procedure. example.hopto.org (http-01): urn:ietf:params:acme:error:unauthorized :: The client lacks sufficient authorization :: Invalid response from
認証手順が失敗しました.クライアントの権限が足りない::無効な応答
Apacheのconfファイルで設定しているドキュメントルートとコマンドのドキュメントルートが違う場合にも起こるエラー

 
certbot certonly --webroot -w /var/www/laravel -d example.hopto.org
フレームワークの場合ドキュメントルートを変更するので,こうするのが正しい↓
certbot certonly --webroot -w /var/www/laravel/project-name/public -d example.hopto.org
 

ubuntu php curl install

phpinfo() モジュールの保存場所を確認
extension_dir /usr/lib/php/20170718 ←ここ

php 配置済みモジュールの確認

curl.so がなければインストール
まずはアップデート

インストール

php 配置済みモジュールの確認

curl.so ← ある

Apache再起動

phpinfo() で確認
cURL support enabled

mode rewriteと Mysqlユーザー権限 wordpress

WordPressインストール

移動 document rootへ


解凍

mode rewriteを有効にする (なってなかったら)

←こっちが本家

	
		  
		 
		     <Directory "/var/www/html">
		        Options Indexes FollowSymLinks
		        AllowOverride All
		        Require all granted
		     </Directory>
		 
		


ディレクトリの一覧表示を有効にする(なってなかったら)

対象ディレクトリに .htaccessを作ってこの一行を書く
		Options Indexes FollowSymLinks
		

ユーザ名はApacheではない www-dataだ


アップロードファイルの上限サイズを変更する

	info.php  phpinfo()でファイルの所在が確認できる
		
			 
			/filesizeで検索 Enter → Nで次の場所
			  20Mに
			display_errors On に変更(してなかったら)

		Esc 編集モードの終了
		/memory_limit  で検索
		Enter
		i 編集モード
		memory_limit = 512M 
		Esc
		:wq   保存終了

		

Apache 再起動

これで phpinfo() が実行できた
だめなら OS再起動 windows の再起動

MySQL バージョン確認

$ mysql --version  →5.7

MySQLでmysqld.sockのエラーが出た

rootユーザーじゃない場合マンドはすべて「sudo」で実行します。
mysqlコマンドをsudoをつけずに実行すると接続エラーになります。

	#   ←root権限ならこれ 

rootパスワードを設定する

ubuntu18 mysql5.7 root password 設定 の記事参照
 

rootパスワードを忘れた場合

>MySQLでユーザを作成し、権限を設定する方法

DBを作って,全権限を”既存”tanakaユーザーに追加

	
	   CREATE USER 'tanaka'@'localhost' IDENTIFIED BY 'wert';
	   create database press;
	   grant all on press.* to tanaka@localhost identified by  'wert';	

	ユーザー確認(したければ)
	   SELECT Host, User FROM mysql.user;
	tanakaの権限を確認(したければ)
	    SHOW GRANTS FOR tanaka@localhost;

	rootの全権限を既存tanakaユーザーに追加 ← localならやっておけ
	GRANT ALL PRIVILEGES ON *.* TO 'tanaka'@'localhost';

	

→ adminerでDB名が出てこない → Database – Refresh する

Apacheの実行ユーザの変更方法

/etc/apache2/apache2.conf を見てみると、

		# These need to be set in /etc/apache2/envvars
		User ${APACHE_RUN_USER}
		Group ${APACHE_RUN_GROUP}
	

とあるので、
/etc/apache2/envvars を開いて、

		export APACHE_RUN_USER=tanaka
		export APACHE_RUN_GROUP=tanaka
	

にかえる

imageMagic インストール

後回し

	sudo apt-get install php-imagick
		sudo php -m | grep imagick
		sudo service apache2 restart

		apt install libmariadb-dev-compat
		apt install libmariadbclient-dev

	

Apacheを入れ直さずにhttp/2対応する

SSLはすでに対応済みが条件

 
# httpd -v
Server version: Apache/2.4.39

yum -y install jansson-devel
yum -y install libev-devel
yum -y install c-ares-devel

yum -y install centos-release-scl
yum -y install devtoolset-7
scl enable devtoolset-7 bash

cd /usr/local/src/
wget https://github.com/nghttp2/nghttp2/releases/download/v1.37.0/nghttp2-1.37.0.tar.gz

tar xvzf nghttp2-1.37.0.tar.gz
cd nghttp2-1.37.0/
env OPENSSL_CFLAGS="-I/usr/local/openssl-1.1.1b/include" OPENSSL_LIBS="-L/usr/local/openssl-1.1.1b/lib -lssl -lcrypto" ./configure -enable-app
make
make install

yum -y install cmake
cd /usr/local/src/
wget https://github.com/google/brotli/archive/v1.0.7.tar.gz

tar xvzf v1.0.7.tar.gz
cd brotli-1.0.7/
mkdir out && cd out
../configure-cmake
make
make test
make install


echo /usr/local/lib > /etc/ld.so.conf.d/usr-local-lib.conf
ldconfig

vi /etc/httpd/conf.modules.d/00-base.conf
こいつらを読み込む
  LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
  LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
  LoadModule brotli_module modules/mod_brotli.so
  LoadModule ssl_module modules/mod_ssl.so
  LoadModule http2_module modules/mod_http2.so

vi /etc/httpd/conf.d/ssl.conf
これを書き足す
   
      Protocols h2 http/1.1


vi /etc/httpd/conf.modules.d/00-mpm.conf
これは読まない
   #LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
これを読む
   LoadModule mpm_event_module modules/mod_mpm_event.so