なんとデフォで、php5.4がインストールされてしまうので注意
今回は自宅用の開発サーバーの用意をするのでセキュリティ適当です。
本当ならsshのポートを変更したり、鍵用意したり、iptabale(firewall)の設定が必要。
ユーザーは
「dev-user」
で操作します。
OSのバージョン確認
> cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
sudoでroot操作できるようにする
> vi /etc/sudoers
↓コメントアウトをはずす
%wheel ALL=(ALL) NOPASSWD: ALL
dev-userをwheelグループに入れる
> usermod -G wheel dev-user
いったんログアウト後、ログインすると反映される。
インストール
最初はupdate
> yum update
apacheインストール
> yum -y install httpd httpd-tools httpd-devel httpd-manual open_ssl mod_ssl
mysqlインストール
> yum -y install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
php7.4 のインストール
> ls /etc/yum.repos.d/ | grep remi-php
remi-php54.repo
remi-php70.repo
remi-php71.repo
remi-php72.repo
remi-php73.repo
remi-php74.repo
remi-php80.repo
remi-php81.repo
remi-php82.repo
> yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
> yum install --disablerepo=* --enablerepo=epel,remi,remi-safe,remi-php74 php php-mbstring php-xml php-xmlrpc php-gd php-pdo php-pecl-mcrypt php-mysqlnd php-pecl-mysql php-pear composer
php.ini変更
cpコマンドなどで、バックアップを取っておくことをお勧めする
> vi /etc/php.ini
; phpのバージョンを非公開に
expose_php = Off
; アップロードできるファイルのサイズを大きくしておく
post_max_size = 20M
upload_max_filesize = 20M
; タイムゾーンの設定
date.timezone = "Asia/Tokyo"
; 日本語文字化け対策
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = UTF-8
mbstring.http_output = pass
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none
; ショートタグ
short_open_tag = On
; セッションパス(.htaccessで設定してもOK)
session.save_path = "/var/lib/php/session"
セッション用ディレクトリの権限を変更
何度か試したがapache2.4ではこのディレクトリ以外の
任意のディレクトリにはセッションを保存できなかった。
apache側で変更できるディレクトリの制限がかけられているようです。
> chown -R dev-user:dev-user /var/lib/php/session
ここまでは↓この方のサイトを参考にしました。
非常に説明が丁寧、操作も丁寧、ぜひこっちを見たほうがいい。
https://www.rem-system.com/centos-httpd-php73/
噂のSELinux
phpでセッションファイルが作られず
その原因がSELinuxと上記のディレクトリ指定でした。
SELINUX=disabledに変更しサーバーを再起動。
> vi /etc/selinux/config
↓に変更
SELINUX=disabled
Apacheの設定
今回はバーチャルドメインで設定します。
1つの開発サーバーで複数のサイトをテストすることが多いので。
> httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built: Mar 24 2022 14:57:57
設定ファイルを少し変更(変更箇所のみ記載しています)
> vi /etc/httpd/conf/httpd.conf
// User、Group を開発用のユーザーに変更
User dev-user
Group dev-user
// サーバーのIPを指定
Listen 192.168.1.45:80
// バーチャルドメインの設定
NameVirtualHost *:80
IncludeOptional conf.d/*.conf
サイトの設定
※アクセス制限の記述方法が変わっているので注意
> vi /etc/httpd/conf.d/testsite.conf
<VirtualHost *:80>
ServerName testsite.localhost
DocumentRoot /var/www/testsite
<Directory /var/www/testsite>
AllowOverride ALL
Order deny,allow
Allow from all
Options +ExecCGI -Indexes
Require all granted
</Directory>
</VirtualHost>
MySQL
設定ファイル
> vi /etc/my.cnf
[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
↓に変更
sql_mode=NO_ENGINE_SUBSTITUTION
// 検索文字
innodb_ft_min_token_size=2
ft_min_word_len=2
STRICT_TRANS_TABLESを外したのは
insert時に「xxx doesn’t have a default value」のエラーが出るから
DBを作る(MySQL5.6)
DB名:dbname
ユーザー名:username
パスワード:passwd
systemctl start mysqld
mysql
mysql> create database dbname;
mysql> GRANT ALL PRIVILEGES ON dbname.* TO username@localhost IDENTIFIED BY 'passwd' WITH GRANT OPTION;
mysql> flush privileges;
抜ける
Ctrl-C
(MySQL8.1)
systemctl start mysqld
mysql
mysql> create database dbname;
mysql> CREATE USER 'username'@'localhost' IDENTIFIED BY 'passwd';
mysql> GRANT all ON dbname.* TO 'username'@'localhost';
mysql> flush privileges;
抜ける
Ctrl-C
Webサイトの用意
まだFTPの設定をしていなかったので、ひとまずディレクトリとファイルを作る
> mkdir /var/www/testsite
何か文字を入れて保存してください
> vi /var/www/testsite/index.php
権限を変更(httpd.confで指定したユーザーにしてください)
> chown -R dev-user:dev-user /var/www/testsite
起動
> systemctl start httpd
アクセスしてみる
ローカル環境なのでwindowsの方は
C:\Windows\System32\drivers\etc\hosts
それ以外は大体/etc/hostsにあると思います。
そのファイルに下記を追加
192.168.1.45 testsite.localhost
「192.168.1.45」はこのサーバーのIPアドレスを入力
普通のWi-Fiルータでも、MACアドレスに対し固定IPを割り当てられるので、設定すると便利です。
サーバーのIPアドレスやMACアドレスは
ifconfigで調べられます。
> ifconfig
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 49010 bytes 4408956 (4.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 49010 bytes 4408956 (4.2 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
p3p1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.11.45 netmask 255.255.255.0 broadcast 192.168.11.255
inet6 fe80::e69c:22b8:b2c2:bc9d prefixlen 64 scopeid 0x20<link>
ether f2:4d:a2:fb:5c:76 txqueuelen 1000 (Ethernet)
RX packets 875505 bytes 848619646 (809.3 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 555773 bytes 51142199 (48.7 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:87:17:c9 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
p3p1の箇所にある
inet 192.168.11.45
がIPアドレス
ether f2:4d:a2:fb:5c:76
がMACアドレスになります。
ブラウザにこれを打ち込む
http://testsite.localhost/
以上
感想
本当に結構今まで何回か設定してきたし、そのメモのバックアップもとってきたつもり。
だったけど、PCが壊れたり引っ越ししたりでバックアップファイルやらもどこかへ行ってしまい
毎回1から調べてインストールっていう手間を行っていたので、今回まとめる事が出来て大満足。
修正や加筆は続けます。