構築手順 » 履歴 » バージョン 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 | ``` |