centos7.7 環境構築
使用するツール
vagrant
virtualbox
使用するbox
bento/centos7.7
インストール準備
以下のコマンドを実行する。
実行後エラーが表示される場合があるのでkernelを最新版に更新する。
vagrant init bento/centos-7.7
起動準備
Vagrantfileのnetwork部分のコメントアウトを消す。
# config.vm.network "private_network", ip: "192.168.33.10"
↓
config.vm.network "private_network", ip: "192.168.33.10"
vagrantを起動する。
vagrant up
エラー内容
vagrantの共有フォルダがマウントできないというエラーが出るがssh接続はできるので
ターミナルからkernelのアップデートを行う。
No package kernel-devel-3.10.0-1127.el7.x86_64 available.
Error: Nothing to do
kernelアップデート
sudo yum -y update kernel
アップデート後再度vagrant upする。(もしかしたらvagrant upだけでも良いかも)
vagrant reload --provision
ターミナルでの作業
ここからはrootユーザーで諸々のセットアップをしていく。まずユーザー変更
sudo su -
まず日本語環境へ変更する。
localeコマンドで現在の状態を確認する。
usになっているはずなので↓を実行後、再起動してdateで確認をする。
localectl set-locale LANG=ja_JP.UTF-8
タイムゾーンの設定変更
確認後タイムゾーンをAsia/Tokyoへ変更 、変更後dateで状態を確認する。
timedatectl set-timezone Asia/Tokyo
selinuxの状態確認>停止まで
disabledになっていなければファイルを編集して停止する。
getenforce
↓のファイルを編集する。
vi /etc/selinux/config
SELINUX=enforcing → SELINUX=disabled
編集後に再起動してgetenforceで状態確認Disabledが出ればOK
bash-completion パッケージの導入
systemctlをtabで補完できるようにパッケージをインストールする。
yum -y install bash-completion
インストール後パッケージの確認
yum list installed | grep bash-completion
firewalldサービスの無効化
iptablesに入れ替える前に設定を確認して動いているようであれば止める。
systemctl list-unit-files | grep firewall
止める場合はこちら
systemctl disable firewalld.service
他初期インストールパッケージを最新にする。不要なsqlは削除
yum list installed | grep mariadb-libs
yum -y remove mariadb-libs mysql*
yum -y update
yum -y install git vim wget epel-release dkms httpd zip unzip
DKMSのインストール
VirtualBoxでLinuxを運用する際の推奨として、DKMS (Dynamic Kernel Module Support) のインストールしたらいいらしいので、インストール。
拡張リリースパッケージEPELをインストールし、そのリポジトリを使って導入。
EPELがあるか確認
yum repolist all | grep -i epel
できる限り標準のリポジトリからパッケージを使い、EPELを指定した時しか使用したくない方針とする場合
viコマンドで、enabled=1をenapled=0に書き換え
vi /etc/yum.repos.d/epel.repo
enabled=1 → enabled=0
Remiリポジトリをインストール
yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
念の為設定ファイルも確認(enabled=0になっていればOK)
vi /etc/yum.repos.d/remi.repo
Apache
起動と自動起動と起動チェック
systemctl start httpd.service
systemctl enable httpd.service
service httpd status
Apacheの文法チェック
apachectl configtest
Apacheの設定調整
- バックアップ
cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bk
- vimで編集(vimの方がわかりやすい)
vim /etc/httpd/conf/httpd.conf
- phpが使えるように以下2行を追加
※AddTypeタイプで検索(検索は「/〇〇」)
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
- cssが読み込めるようにする。
AllowOverride None → AllowOverride All
- バーチャルホストの設定
EnableSendfile on → EnableSendfile off
- 共有フォルダへのシンボリックリンク設定
初期のディレクトリを削除する。
rm -rf /var/www/html
共有のvagrantへシンボリックリンクを貼る。
ln -fs /vagrant /var/www/html
Laravelを作るときはnode.js使うときにエラーになるのでLaravel環境は別途構築する必要がある。
※Laravel環境はxamppを使った…
- バーチャルホストの設定
sudo vim /etc/httpd/conf.d/virtualhost-00.conf
<VirtualHost *:80>
ServerName 192.168.33.10
DocumentRoot /var/www/html/フォルダ名
</VirtualHost>
- 個別の設定ファイルを持っておく。(各ディレクトリごとのDNSはバーチャルホストとhostファイルで管理)
sudo vim /etc/httpd/conf.d/virtualhost-〇〇.conf
◆↓の設定を入れる※ServerNameに「_」(アンダースコア)は使用出来ないので注意
<VirtualHost *:80>
ServerName hoge.com
# !!! Be sure to point DocumentRoot to 'public'!
DocumentRoot /var/www/html/hoge
<Directory /var/www/html/hoge>
# This relaxes Apache security settings.
AllowOverride all
# MultiViews must be turned off.
Options Indexes ExecCGI FollowSymLinks MultiViews
Order allow,deny
Allow from all
AllowOverride all
# Uncomment this if you're on Apache >= 2.4:
#Require all granted
</Directory>
</VirtualHost>
各設定が完了してから
apachectl configtest
service httpd configtest
systemctl restart httpd.service
service httpd status
mysql8のインストール
- リポジトリを追加
yumリポジトリをインストール
yum -y localinstall http://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
- リポジトリの追加が終わったらインストール可能なバージョンを確認する。
yum info mysql-community-server
↓の結果出ればOK
------------------------------------------
利用可能なパッケージ
名前 : mysql-community-server
アーキテクチャー : x86_64
バージョン : 8.0.28
リリース : 1.el7
容量 : 451 M
------------------------------------------
- MySqlをインストール
yum -y install mysql-community-server
- 公開鍵がインストールされていません。と怒られてしまったら↓を実行して、もう一度インストールする「yum -y install mysql-community-server」
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
- バージョンの確認
mysqld --version
成功すると↓が出る。
/usr/sbin/mysqld Ver 8.0.28 for Linux on x86_64 (MySQL Community Server - GPL)
- 初期設定
設定をバックアップ
cp /etc/my.cnf /etc/my.cnf.org
- 認証プラグインの設定
vim /etc/my.cnfでcnfファイルを開いて以下を追加。
default_authentication_plugin=mysql_native_password
- MySQL起動
systemctl start mysqld
- 状態確認
systemctl status mysqld
以下のようになっていればOK
mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since 土 2022-04-02 09:09:46 JST; 30s ago
10.自動起動の設定
systemctl enable mysqld
11.初回のパスワードについて
mysqlを初回に起動すると一時パスワードがlogに吐き出されので以下のコマンドを打って出てきたパスをメモとして残しておく。
grep password /var/log/mysqld.log
12.パスワードの更新と初期設定
mysql_secure_installationで初期設定をする。先程吐き出されたlogから変更する。
13.ログインと状態確認をする。
(ログイン)mysql -u root -p
(状態確認)status
↓の結果が帰ってくればまぁ大丈夫。
mysql Ver 8.0.28 for Linux on x86_64 (MySQL Community Server - GPL)
Connection id: 11
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 8.0.28 MySQL Community Server - GPL
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: utf8mb4
Db characterset: utf8mb4
Client characterset: utf8mb4
Conn. characterset: utf8mb4
UNIX socket: /var/lib/mysql/mysql.sock
Binary data as: Hexadecimal
Uptime: 7 min 47 sec
Threads: 2 Questions: 16 Slow queries: 0 Opens: 133 Flush tables: 3 Open tables: 49 Queries per second avg: 0.034
文字コードの確認
show variables like '%char%';
↓の結果が帰ってくればまぁ大丈夫。
mysql> show variables like '%char%';
+--------------------------------------+--------------------------------+
| Variable_name | Value |
+--------------------------------------+--------------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8mb3 |
| character_sets_dir | /usr/share/mysql-8.0/charsets/ |
| validate_password.special_char_count | 1 |
+--------------------------------------+--------------------------------+
9 rows in set (0.01 sec)
万が一mysqlのパスワードを忘れてしまった場合
ALTER USER 'root'@'localhost' IDENTIFIED BY 'SxB&+ExpZ-(5';
この後必要なnode.jpをインストールする。(参考ページ執筆時点の最新版とのこと)
1.リポジトリ追加
curl -fsSL https://rpm.nodesource.com/setup_16.x | sudo bash -
2.インストール
yum install -y nodejs
3.確認
node -v
----------------
v16.14.2
----------------
npm -v
----------------
8.5.0
----------------
phpのインストール
1.必要なパッケージを落とす。
yum -y install --enablerepo=epel,remi,remi-php73 php php-mbstring php-xml php-xmlrpc php-gd php-pdo php-pecl-mcrypt php-mysqlnd php-pecl-mysql phpmyadmin
2.上記がダウンロードできたらバージョンの確認
php -v
3.php.iniファイルの編集
vim /etc/php.ini
4.変更点
memory_limit = 512M
post_max_size = 100M
upload_max_filesize = 100M
date.timezone = "Asia/Tokyo"
display_errors = On
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = UTF-8
mbstring.encoding_translation = On
mbstring.http_output = pass
mbstring.detect_order = auto
5.phpmyadminの設定
vim /etc/httpd/conf.d/phpMyAdmin.conf
6.phpmyadminconfの調整
★phpmyadmin設定ファイル
# phpMyAdmin - Web based MySQL browser written in php
#
# Allows only localhost by default
#
# But allowing phpMyAdmin to anyone other than localhost should be considered
# dangerous unless properly secured by SSL
Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin
<Directory /usr/share/phpMyAdmin/>
AddDefaultCharset UTF-8
<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
Require ip 127.0.0.1
Require ip ::1
Require ip 192.168.33.10
Require all granted
</RequireAny>
</IfModule>
</Directory>
<Directory /usr/share/phpMyAdmin/setup/>
<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
Require ip 127.0.0.1
Require ip ::1
Require ip 192.168.33.10
Require all granted
</RequireAny>
</IfModule>
</Directory>
# These directories do not require access over HTTP - taken from the original
# phpMyAdmin upstream tarball
#
<Directory /usr/share/phpMyAdmin/libraries/>
Require all denied
</Directory>
<Directory /usr/share/phpMyAdmin/templates/>
Require all denied
</Directory>
<Directory /usr/share/phpMyAdmin/setup/lib/>
Require all denied
</Directory>
<Directory /usr/share/phpMyAdmin/setup/frames/>
Require all denied
</Directory>
# This configuration prevents mod_security at phpMyAdmin directories from
# filtering SQL etc. This may break your mod_security implementation.
#
#<IfModule mod_security.c>
# <Directory /usr/share/phpMyAdmin/>
# SecRuleInheritance Off
# </Directory>
#</IfModule>
composerのインストール
1.composerをインストールする。
yum -y install --enablerepo=remi,remi-php73 php-pecl-zip composer
2.composerの配置とインストール確認
#CentOSのどこからでも使えるようにするために、/usr/local/binフォルダにcomposer.pharを移動させる
mv composer.phar /usr/local/bin/composer
boxのバックアップ
vagrant package --output laravelos7.box
●gitの初期設定
git config --global user.name "太一 石坂"
git config --global user.email "taiti048235921@gmail.com"
●ssh鍵作成
ssh-keygen -t rsa -C "taiti048235921@gmail.com"
●鍵登録
catコマンドで鍵の内容をコピーしてgitに登録する。
cat ~/.ssh/id_rsa.pub
★参考ページ
●CentOS 7のインストール後におこなうLinuxの基本設定 13ポイント
https://www.rem-system.com/linux-first-setting/
●EPELに関して
https://qiita.com/yamada-hakase/items/fdf9c276b9cae51b3633
●CentOS7 に最新版の Git をインストールする方法
https://qiita.com/tomy0610/items/66e292f80aa1adc1161d
●vagrantを用いたPHPの環境構築
https://qiita.com/tiwu_dev/items/f135e6b6fbbe3ec6aa54
●Apache 2.4.25 以降でホスト名のアンダースコアで 400 が出る場合の対処方法
https://gotohayato.com/content/148/
●【Apache】httpd.conf ファイルの設定の解説
https://go-journey.club/archives/14030
●CentOS7にMySQL8をインストールして初期パスワードを変更する
https://www.suzu6.net/posts/196-mysql/
●CentOS 7 に Node.js(npm, node) をインストールする手順
https://mekou.com/linux-magazine/centos-7-%E3%81%AB-node-jsnpm-node-%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%89%8B%E9%A0%86/