Laravel을 사쿠라의 렌탈 서버로 움직여 보았다 [환경 구축]

소개



안녕하세요 mako 입니다.

Laravel을 사쿠라의 렌탈 서버로 외부에 공개한 방법을 간단하게 소개합니다!!

언제나 로컬 환경(MAMP)에서 움직이고 있어 외부에 공개할 때에 데이터베이스의 설정에 넘어졌으므로, 거기에 대해서도 소개해 갑니다.

계층 목록


home/
 ├ bin/
 │ └ composer
 ├ www/
 │ └ {'projectname'}/
 │   └ config/
 │      └ database.php
 │   └ public/
 │   └ など...
 │   └ .env
 └ など...

사쿠라에서 하위 도메인 만들기



사쿠라 렌탈 서버에 새 도메인을 추가합니다.
원하는 도메인 이름과 폴더의 계층 경로를 설정합니다.



도메인 이름
좋아하는 도메인 결정
경로
지정 폴더의 개소에 「/home/{'계정명'}/www/{'프로젝트 루트'}/public」로 설정한다



ssh 연결 및 laravel 설정



절차
1. ssh 연결
2. composer 설치
3. 프로젝트를 clone
4. .htaccess 설정
5. 데이터베이스 설정
6. 애플리케이션 키 생성
7. 마이그레이션

①ssh 연결



먼저 ssh 클라이언트로 대여 서버에 로그인합니다.
ssh (username)@(hostname).sakura.ne.jp
password : 'password'

②composer 설치



라이브러리 종속성을 해결하기 위해 넣어.
이번에는 「home/bin」에 composer를 인스톨 한다.
mkdir bin
curl -sS https://getcomposer.org/installer | php -- --install-dir=bin --filename=composer
composer self-update

③ 프로젝트를 clone



이번은 www폴더의 부하에 직접 배치합니다만, 시큐리티등의 관계상 심볼릭 링크를 만들어 다른 곳에 배치하는 것이 좋다고 합니다.
개인적으로 github에서 clone하는 것이 쉽다고 생각합니다.
cd ~/www/
git clone 'repository'

% composer install
% composer dump-autoload --optimize

④.htaccess 설정



"{'project_root'}/public/.htaccess"를 설정해야 한다.
참고 사이트: htps : // 코데지네. jp / arc c / / 싶은 l / 11370
<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

+   RewriteBase /

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

⑤ 데이터베이스 설정



Laravel의 home 디렉토리에 있는 ".env"를 편집합니다.
cd ~/{'projectname'}
vi .env



".env"의 다음 위치 변경
DB_CONNECTION=mysql
DB_HOST=dbhost.db.sakura.ne.jp
DB_PORT=3306
DB_DATABASE=dbname
DB_USERNAME=dbysername
DB_PASSWORD=dbpassword

⑥ 어플리케이션 키 생성



APP_KEY가 디폴트치인 채이므로 변경한다.
php artisan key:generate

⑦ 마이그레이션하기


php artisan migrate

여기서 에러를 하지 않았기 때문에 사쿠라의 MySQL 쪽에 데이터베이스가 정상적으로 작성되고 있을 것입니다.
삼나무도 여기에서 할 수 있습니다.

마이그레이션이 잘되지 않았다 (필자의 경우)



데이터베이스를 찾을 수 없으면 오류가 발생했습니다.
In Connection.php line 664:
SQLSTATE[HY000] [2002] No such file or directory (SQL: select * from information_schema.tables where table_schema = database and table_name = migrations)  

데이터베이스의 호스트명, 유저명, 데이타베이스명, 패스워드 몇번이나 확인해도 틀리지 않고 조사해 버리면 아무래도 「database.php」의 것이 영향을 주는 것을 알았다.

그래서 조사한 후 수정하면 마이그레이션을 실행할 수 있었다.
원인으로 ''unix_socket''이 아무래도 다른 것 같다.
사쿠라 쪽으로 데이타베이스에 로그인해 소켓 조사했다고 해서 입력했을 것이다. . .
(※수정 부분 「'unix_socket'」 부분을 공란으로 하면 할 수 있었다.)
        'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'dbname'),
            'username' => env('DB_USERNAME', 'dbysername'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => null,
        ],

요약



사쿠라의 렌탈 서버로 작성한 Laravel을 외부에 공개할 수 있었다.
렌탈 서버의 구조나 vim의 사용법 등 공부가 되어 좋은 경험이 되었다.

이번에 넘어진 원인으로서 아직 제대로 Laravel과 MySQL의 접속의 구조를 이해하지 않았기 때문에 제대로 공부해 나가려고 생각합니다.
「.env」 「config/database.php」에 대해 참고가 된 사이트
여기 데이터베이스 환경 설정

좋은 웹페이지 즐겨찾기