プロジェクト

全般

プロフィール

構築手順 » 履歴 » バージョン 1

廣瀬 僚一, 2024/09/12 11:04

1 1 廣瀬 僚一
# 構築手順
2
3
## アップデート
4
```bash
5
yum update -y
6
```
7
8
## ユーザー作成
9
```bash
10
useradd webadmin
11
passwd webadmin
12
cld3831#
13
```
14
15
## 全体設定
16
SELinuxの無効化
17
```bash
18
vi /etc/selinux/config
19
```
20
```conf:config
21
#SELINUX=enforcing
22
```
23
24
## NGINX設定
25
### NGINXインストール
26
```bash
27
dnf install nginx -y
28
systemctl start nginx && systemctl enable nginx
29
```
30
### confファイル
31
公式を参考に記載
32
```conf:80.conf
33
server {
34
    listen 80;
35
    listen [::]:80;
36
    server_name sys.globalgenetics.jp;
37
    root /var/www/hmtl/sys.globalgenetics.jp/public;
38
 
39
    add_header X-Frame-Options "SAMEORIGIN";
40
    add_header X-Content-Type-Options "nosniff";
41
 
42
    index index.php;
43
 
44
    charset utf-8;
45
 
46
    location / {
47
        try_files $uri $uri/ /index.php?$query_string;
48
    }
49
 
50
    location = /favicon.ico { access_log off; log_not_found off; }
51
    location = /robots.txt  { access_log off; log_not_found off; }
52
 
53
    error_page 404 /index.php;
54
 
55
    location ~ \.php$ {
56
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
57
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
58
        include fastcgi_params;
59
    }
60
 
61
    location ~ /\.(?!well-known).* {
62
        deny all;
63
    }
64
}
65
```
66
67
## PHP設定
68
インストールできるphpを確認  
69
php8.1などをインストールする
70
```bash
71
dnf module list php #利用できるphpを検索
72
dnf module install php -y
73
dnf install php-bcmath php-pdo php-mysql php-gd -y
74
```
75
### confファイル
76
```bash:www.conf
77
user=nginx
78
group=nginx
79
80
pm = static
81
pm.max_children = 3
82
pm.max_requests = 1000
83
```
84
85
## php.ini設定
86
```bash:php.ini
87
max_execution_time = 300
88
memory_limit = 256M
89
upload_max_filesize = 20M
90
post_max_size = 128M
91
```
92
93
## データベース設定
94
### mysqlインストール
95
```bash
96
dnf install mysql -y
97
dnf install mysql-server -y
98
```
99
データベース名:globalgenetics
100
| User     | Pass       |
101
| -------- | ---------- |
102
| root     | Clear.3831 |
103
| db_admin | Cld3831#   |
104
105
```bash
106
mysql -u root -p{DB_ROOT_PASS} -h ${DB_HOST}
107
```
108
```sql
109
CREATE DATABASE [DB_NAME] DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
110
CREATE USER '[DB_USER]'@'[DB_HOST]' identified by '[DB_PASS]';
111
GRANT ALL ON [DB_NAME].*TO '[DB_USER]'@'[DB_HOST]';
112
FLUSH PRIVILEGES;
113
```
114
115
## composerインストール
116
```bash
117
cd ~
118
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
119
php -r "if (hash_file('sha384', 'composer-setup.php') === 'e21205b207c3ff031906575712edab6f13eb0b361f2085f1f1237b7126d785e826a450292b6cfd1d64d92e6563bbde02') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
120
php composer-setup.php
121
php -r "unlink('composer-setup.php');"
122
mv composer.phar /usr/local/bin/composer
123
composer -V
124
```
125
126
## Node.jsインストール
127
バージョン指定してインストール(16.x)
128
```bash
129
yum install https://rpm.nodesource.com/pub_16.x/nodistro/repo/nodesource-release-nodistro-1.noarch.rpm -y
130
yum install nodejs -y --setopt=nodesource-nodejs.module_hotfixes=1
131
132
node -v
133
npm -v
134
```
135
136
## サイトデータ配置
137
ディレクトリを作成
138
```bash
139
mkdir -p /var/www/html/sys.globalgenetics.jp/
140
141
cd /var/www/html/sys.globalgenetics.jp/
142
chmod -R 777 ./storage
143
```
144
envファイルの書き換え
145
- APP_URL
146
- DB_HOST
147
- DB_USERNAME
148
- DB_PASSWORD
149
150
```bash
151
chown -R nginx:nginx /var/www/html/sys.globalgenetics.jp/storage/app/public/uploads/
152
```
153
154
HTTPでアクセスして、アクセスできることを確認
155
156
## SSL設定
157
### epelリポジトリインストール
158
```bash
159
yum install epel-release.noarch -y
160
```
161
### certbotインストールとSSL化
162
```bash
163
dnf install certbot -y
164
certbot certonly --webroot -w /var/www/html/sys.globalgenetics.jp/public -d sys.globalgenetics.jp --email wp@clear-design.jp --debug
165
```
166
### nginx confファイルの作成と書き換え
167
```bash
168
vi /etc/nginx/conf.d/80.conf
169
```
170
```conf:80.conf
171
server {
172
    listen 80;
173
    listen [::]:80;
174
    server_name sys.globalgenetics.jp;
175
176
    return 301 https://$host$request_uri;    
177
}
178
```
179
180
```bash
181
vi /etc/nginx/conf.d/sys_global.conf
182
```
183
```conf:sys_global.conf
184
server {
185
    listen 443 ssl http2;
186
    listen [::]:443 ssl http2;
187
    server_name sys.globalgenetics.jp;
188
    root /var/www/html/sys.globalgenetics.jp/public;
189
 
190
    add_header X-Frame-Options "SAMEORIGIN";
191
    add_header X-Content-Type-Options "nosniff";
192
 
193
    ssl_certificate /etc/letsencrypt/live/sys.globalgenetics.jp/fullchain.pem;
194
    ssl_certificate_key /etc/letsencrypt/live/sys.globalgenetics.jp/privkey.pem;
195
196
    index index.php;
197
 
198
    charset utf-8;
199
 
200
    location / {
201
        try_files $uri $uri/ /index.php?$query_string;
202
    }
203
 
204
    location = /favicon.ico { access_log off; log_not_found off; }
205
    location = /robots.txt  { access_log off; log_not_found off; }
206
 
207
    error_page 404 /index.php;
208
 
209
    location ~ \.php$ {
210
        fastcgi_pass unix:/var/run/php-fpm/www.sock;
211
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
212
        include fastcgi_params;
213
    }
214
 
215
#    location ~ /\.(?!well-known).* {
216
#        deny all;
217
#    }
218
}
219
```
220
221
## メール設定
222
XSERVERにリレーし、メールを配信する
223
224
### メールアドレスの作成
225
XSERVER(cld01)で、グローバルジェネティクスドメインでメールアドレスを作成する。  
226
noreply@globalgenetics.jp  
227
パスワードも設定する
228
229
### postfixインストール
230
```bash
231
dnf install postfix -y
232
systemctl start postfix.service && systemctl enable postfix.service
233
```
234
その他、必要なものをインストール
235
```bash
236
dnf install cyrus-sasl-plain cyrus-sasl-lib cyrus-sasl-md5
237
```
238
239
### postfix設定(補足)
240
```bash
241
vi /etc/postfix/main.cf
242
```
243
以下を書き換え
244
```bash:main.cf
245
myhostname = globalgenetics.jp
246
mydomain = globalgenetics.jp
247
```
248
以下を末尾に追記
249
```bash:main.cf
250
milter_default_action = accept
251
non_smtpd_milters = $smtpd_milters
252
smtpd_milters = inet:127.0.0.1:8891
253
254
relayhost = [sv1116.xserver.jp]:587
255
smtp_sasl_auth_enable = yes
256
smtp_sasl_security_options = noanonymous
257
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
258
smtp_use_tls = yes
259
smtp_tls_note_starttls_offer = yes
260
```
261
```bash
262
vi /etc/postfix/sasl_passwd #メール認証情報の記載
263
```
264
```bash:sasl_passwd
265
[sv1116.xserver.jp]:587 作成したメールアドレス:パスワード
266
```
267
```bash
268
chmod 600 /etc/postfix/sasl_passwd
269
postmap /etc/postfix/sasl_passwd #認証情報のハッシュ化・登録
270
systemctl restart postfix.service
271
```
272
下記コマンドでテストメールの送信  
273
迷惑メールに入らずに受信できていれば完了
274
```bash
275
sendmail -t << EOL
276
From: 送信元メールアドレス
277
To: 送信先メールアドレス
278
Subject: メールタイトル
279
本文
280
EOL
281
```
282
283
## rootログイン禁止
284
```bash
285
PermitRootLogin no
286
```
287
288
---
289
## zabbix-agentインストール
290
```bash
291
dnf install zabbix-agent.x86_64 -y
292
```
293
294
## PHPキャッシュ
295
```bash
296
dnf install php-opcache php-pecl-apcu -y
297
```
298
負荷テスト
299
```bash
300
ab -n 100 -c 100 https://sys.globalgenetics.jp/
301
```
302
結果  
303
before
304
```
305
Total transferred:      162500 bytes
306
HTML transferred:       38600 bytes
307
Requests per second:    27.75 [#/sec] (mean)
308
Time per request:       3603.657 [ms] (mean)
309
Time per request:       36.037 [ms] (mean, across all concurrent requests)
310
Transfer rate:          44.04 [Kbytes/sec] received
311
```
312
after
313
```
314
Total transferred:      162500 bytes
315
HTML transferred:       38600 bytes
316
Requests per second:    128.77 [#/sec] (mean)
317
Time per request:       776.571 [ms] (mean)
318
Time per request:       7.766 [ms] (mean, across all concurrent requests)
319
Transfer rate:          204.35 [Kbytes/sec] received
320
```