Composerでrequire-devに任意のパッケージをコマンドで追加する
はじめに
しょっちゅうやり方忘れるのでメモ程度に残しておく
require-devへ1ライナーで追加する方法
composer require アカウント名/パッケージ名 --dev
require と require-devのちがい
種類 | 目的 |
---|---|
require | 本番環境と開発環境で共に利用 |
require-dev | 開発環境のみ利用 |
さいごに
- バージョンとか色々罠あるのでなんかそのへんいつかまとめたい
yumコマンドで環境を破壊した話と教訓
結論
- 思考停止して以下のコマンドを叩くと環境が壊れた
yum install -y パッケージ名 yum update -y パッケージ名
経緯
- 必要なパッケージがあった
- パッケージを導入した
- 環境が壊れた(依存するパッケージのVersionを確認していない為)
教訓
- 現環境でパッケージを変更する際は必ず依存しているパッケージのVersionの確認しておくこと
最近プライベートで活動していたこと
はじめに
最近ブログ書いてなかったので最近プライベートでやっていたことを晒しておく
某スタートアップの手伝い
- 社長が技術の話が分からずサポートしてほしいと言われたので以下のことをしていた(声をかけられた時にはすでに炎上していた)
- エンジニアと非エンジニアのパイプ役
- エンジニアのタスク管理と進捗管理
- 技術的質問に関するケア(主にgitと環境周り)
個人的に問題だと感じた点
- 開発環境(動作環境)を持っているのが一人のエンジニアだけ
- コードが会社の資産のはずなのに一人のエンジニアのPCの中にしかない
- エンジニアが飛んだ時のリスクヘッジなどが一切できていなかった
- コードをVersion管理していない
- 共通で動作確認する環境がない
- タスクが属人化していた
- 挙げだすときりがないのでetc...
個人的によかった点
- gitを導入するとどうよくなるのかわかってもらえた
- gitのワークショップ的なことを行い実際に開発していくフローをしってもらった
- コードレビューの文化を取り込むようにしてみた
- 非エンジニアとエンジニアをちゃんと繋げれたらお互いハッピーになれることを知った
- リリースまでに色々な調整をやってた
- 無事リリースできた
懸念点
- 環境もコードもひとまず動けばおk的なかんじでやっていたので今後つらい思いしそうだなーとおもいました。
感想
- スタートアップってこんなかんじなんだなーというのが体験できました。
instantSpaceCentOS72をつくってみた
instantSpaceCentOS72の情報
作った理由
- 環境を自由に切り替えながら開発がしたかった(今後このへんも対応予定)
- 毎回初回のセットアップがめんどくさかったので自動化した
なんでシェルスクリプトなの?
ちょっとした変更で利用者に学習コストを要求しないため
今後追加する機能
- rbenb
- bundler
- phpenv
- nvm
- apache
- jenkins
- java
今後の課題
- 鍵の扱いをもっといいかんじにしたい
- nginxをrpmで管理できるようにする
- windowsOSへの対応
- オプションで実行するシェルスクリプトの切り替え
最後に
- アプリケーションの開発がしたいからひとまずこのあたりでリリースしてみた
2016年前半の振り返り
前置き
- なんだかんだ2016年も半分終わってしまった
- この半年何を学んできて仕事で何してるのか振り返っておく
- 具体的なことはかけないのでざっくり
- 半年ぐらい何を独学したのかもざっくり
この半年何してたの?仕事編
去年から変わった点
- 今の部長になって業務でもコードを書かせてもらえてるので今度ちゃんとお礼を言わなきゃ
- ユーザに対してどうすればサービスの価値を当たり前のように提供できるか評価してもらえるかという考え
- 言えばだいたい何でもやらせてもらえてるので何やっても楽しい
プロジェクトの開発環境の構築
- 仮想環境で開発環境を作ったけどもっとよく出来る気がする
- コードだけではなくて環境も変化に強くあるべきだと痛感
- このへんはもう少し学習してよりよい環境を目指していきたい
プロジェクトの開発
- 仕事でコードかけるの最高に楽しい
- レビューで色々な知見を授けてもらえてるので幸せすぎて死にそう
既存サービス
- 色々書けないことが多い
- 改修するためのルール作りや仕組み作りなどをしていた
- 今後もサービスとして当たり前の価値をユーザに届けるだけではなくて、付加価値を評価してもらえるように改善しまくる予定
- 結局、僕達エンジニアが辛くないようにすればするほど要望に答えやすくなるし早く動けるので現在はその期間だとおもってる
- チーム文化を新しく作り直してる
今年の残りはなにするの?仕事編
- 従来の業務と平行してどんどん改善を続けていく
- 現チーム及びサービスで溜まった知見等は社内で共有
- 最終的には既存サービス全ての品質向上を目指したい(その為にまずは今見ているサービスから)
- 要望には早く対応できるようにする
- 過去の遺産や技術的負債を潰して今までよりも早く動けるようにしたい
この半年なにしてたの?プライベート
webアプリつくってた
- TwitterのAPIが実はもうなくなってるやつとしらなくて頓挫
Laravel5.1独学した
- なんだかんだ今年に入ってちゃんと触り始めた
- もっと触りまくって僕もLaravelと仲良くなりたい
開発環境構築の自動化
- Provisioningするためのシェル書いてた
- もう少しよりよくこのへんも知識がなくてもすぐに必要な環境が誰でも作れるってぐらいの使いやすさを目指したい
さくらVPSを契約した
- ネットワーク周りやセキュリティの勉強になった
- 仮想環境では得られなかった危機感を感じれた
- リテラシーが向上した
- どんどんせっかく借りてるので知見をためていくために使っていく
VirtualBoxでVagrantBoxを1から作った
- とても勉強になった
- 当たり前のことを当たり前に知れた
今年の半年はなにするの?プライベート
- 自分が使いたいものがあるのでLaravelをつかった開発
- 今年中にphpunitは普通にかけるようになりたいのでその辺りまで
- laravelのコアのコードを読んでみる
- ガンガンプライベートでもコードを書く(環境はできた)
まとめ
- 仕事たのしい
- 開発たのしい
- 環境作るのたのしい
不眠症辛い
成長しているというよりも今までの積み重ねだなーと感じた(振り返って)
CentOS72(1511)x64のVagrantBoxを作った
はじめに
- 作るきっかけは上記の一言です。
作業環境環境
環境 | バージョン |
---|---|
OS XEI Capitan | バージョン10.11.4 |
VirtualBox | バージョン5.0.24 |
Vagrant | バージョン1.8.1 |
入れておきたいVagrantのプラグイン
- vagrant-vbguest
目指す成果物
- 最小構成のCentOS72(1511)x64のbox
VirtualBoxで仮想マシンを作成する
- 仮想マシンの名前とメモリを設定する
- ハードディスクのタイプを選択し可変サイズで作成する
- 仮想マシンの設定を行っていく
- isoを読みこませる
- 読み込ませると以下になる
- オーディオを有効化のチェックを外す
- ネットワークのアダプター1を開きポートフォワーディングをクリックする
- 1レコードを作成する(以下)
- アダプター2を開きホストオンリーアダプターを選択する
- ポートを開きUSBをクリックしチェックを外す
- 設定後は以下になる
CentOS側の設定
- CentOS7をインストールする
- 言語を選択する
- 僕はUSキーボードなのでEnglish English(United States)を選択
- SOFTWARE
- INSTALLATION DESTINATIONの設定
- あとは以下の状態と同じ設定ができてればおk
- できていたら右下の青いボタンをクリック
- 設定完了後は右下の青いボタンを押して再起動
ユーザの情報
アカウント | Password | グループ |
---|---|---|
root | vagrant | wheel |
vagrant | vagrant |
Macのターミナルから作成した仮想マシンに接続する
ssh -p 2222 root@localhost
sudoコマンドの設定
vagrantユーザがパスワード無しでsudo実行可能とする。
- 設定ファイルを開く
visudo
- 設定を以下のように変更する
Defaults requiretty ↓ # Defaults requiretty %vagrant ALL=(ALL) NOPASSWD:ALL
selinuxの無効化
- 設定ファイルを変更する
vi /etc/sysconfig/selinux
- 以下のように設定を変更する
# enforcingからdisabledに変更 SELINUX=disabled
firewallを停止する
systemctl stop firewalld systemctl disable firewalld
sshの設定
mkdir /home/vagrant/.ssh chmod 700 /home/vagrant/.ssh curl https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub >> /home/vagrant/.ssh/authorized_keys chmod 600 /home/vagrant/.ssh/authorized_keys chown -R vagrant:vagrant /home/vagrant/.ssh
パッケージマネージャーの更新
- パッケージマネージャーを更新する
yum update -y
- 仮想環境を再起動する
reboot
Guest Additionsインストール
Guest Additionsをインストールする
- VirtualBox(別ウィンドウで起動している)のメニューからDevicesを選択
- Devicesの中に
Install Guest Additions CD image...
をクリック
Guest Additionsをマウントするディレクトリを作成する
mkdir -p /mnt/cdrom
- Guest Additionsをマウントする
mount -r /dev/cdrom /mnt/cdrom
- VBoxLinuxAdditions.runを実行する
sh /mnt/cdrom/VBoxLinuxAdditions.run
- 以下のエラーは関係ないので無視
Could not find the X.Org or XFree86 Window System, skipping.
- マウントを解除する
umount /mnt/cdrom
- 仮想ドライブからディスクを除去する
- VirtualBox(別ウィンドウで起動している)のメニューからDevicesを選択
- Devicesの中に
Optical Drives
をクリック -
Remove disk from virtual drive
をクリック -
Force Unmount
をクリック
VagrantBox作成前のお掃除
- yumで利用したファイルのcacheを削除
yum clean all
vagrantはネットワークの設定をvagrantが行うので既存の設定ファイル等を削除する
- ifcfg-enp0s3の削除
rm /etc/sysconfig/network-scripts/ifcfg-enp0s3
- udevルールの削除
rm /etc/udev/rules.d/70-persistent-ipoib.rules
フラグメンテーションを解消
- box作成時の圧縮率をあげるため
dd if=/dev/zero of=/EMPTY bs=1M rm -f /EMPTY
- historyを削除する
history -c
仮想マシンを終了させる
shutdown -h now
Boxを作成する前に
作業をしやすくするために行ったポートフォワーディングの設定を削除する。
- 仮想マシンの設定を開く。
- ネットワークのアダプター1(NAT)を選択し、「高度」の内容を展開。
- 下部に表示される「ポートフォワーディング」ボタンを押してメニューを表示。
- 作成した項目を選択してDelキーを押して削除。その後下部のOKボタンを押す。
- 設定画面のOKボタンを押す。
boxの作成
- ※CentOS72(1511)x64って名前は使えないのでCentOS72x64に変更しておきます。
vagrant package --base "仮想マシンの名前" --output box名.box
今回作成したboxを使う方法は以下
- boxを登録
vagrant box add CentOS72x64 作成したboxのディレクトリのパス/CentOS72x64.box
- 設定ファイルの作成
vagrant init CentOS72x64
- 起動
vagrant up
- 接続
vagrant ssh
作るのめんどくせーからこの環境使わせろよって人向け
- boxを登録
vagrant box add raichel/CentOS72x64
- 設定ファイルの作成
vagrant init raichel/CentOS72x64;
- 起動
vagrant up
- 接続
vagrant ssh
最後に
- 技術者なんで自分で作りました。
さくらVPSに入れたMySQL5.7の初期設定を行った
MySQL5.7 のrootユーザーの初期パスワードを取得
- 以下コマンド
sudo cat /var/log/mysqld.log | grep root
- 結果は以下
[Note] A temporary password is generated for root@localhost:初期パスワード
MySQL5.7の初期設定
- 設定コマンド
mysql_secure_installation
- 以下対話しながら設定
Securing the MySQL server deployment. Enter password for user root:初期パスワード The existing password for the user account root has expired. Please set a new password. New password:8文字以上、英大文字小文字数字記号の4種類を含む Re-enter new password:8文字以上、英大文字小文字数字記号の4種類を含む The 'validate_password' plugin is installed on the server. The subsequent steps will run with the existing configuration of the plugin. Using existing password for root. Estimated strength of the password: 100 Change the password for root ? ((Press y|Y for Yes, any other key for No) : y New password:8文字以上、英大文字小文字数字記号の4種類を含む Re-enter new password:8文字以上、英大文字小文字数字記号の4種類を含む Estimated strength of the password: 100 Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? (Press y|Y for Yes, any other key for No) : y Success. Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y Success. By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y - Dropping test database... Success. - Removing privileges on test database... Success. Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y Success. All done!
MySQL5.7の設定ファイルによる設定の変更
- 設定ファイルを開く
sudo vim /etc/my.cnf
- 以下を[mysqld]配下の最後に追記
# MySQL サーバーのデータベースで利用する文字コードに UTF-8 を指定 character-set-server = utf8 # パスワード変更の有効期限を無効化 default_password_lifetime = 0
おもったこと
- ここしばらくセキュリティ周りを意識しはじめた
- パスワードなどは1Passwordで生成するようにしてる