من چطوری اوبونتو 22.04 رو برای برنامه‌نویسی آماده میکنم؟

سلام.من توسعه‌دهنده‌ی سمت سرور با Laravel/PHP هستم و بعد از نصب سیستم عامل (در اینجا اوبونتو 22.04) ابزارهایی رو نصب و تنظیم میکنم که بتونم راحت‌تر به توسعه‌ی نرم‌افزار بپردازم.توی این پست قصد دارم مراحلی که انجام میدم و ابزارهایی که نصب میکنم رو اینجا مستند کنم که شاید به درد همکارانم بخوره.پس‌نوشت: بعضی از دوستان گفتن چرا پروژه‌هات رو Dockerize نمیکنی که نیاز به انجام این مراحل نباشه؟!باید بگم که برای داکرایز نکردن پروژه‌ها، دلایل خودم رو دارم که نیازی به توضیحشون نمیبینم. مسئله‌ی بعدی اینه که به این پست از جنبه‌ی آموزشی نگاه کنید، همه‌ی پروژه‌ها لزوما نیاز به داکرایز شدن ندارن و هرکسی به یه روشی راحته. اینم روش منه. اگر شما هم دوست داشتید میتونید مراحلی که برای آماده‌سازی سیستمتون انجام میدید رو مستند کنید که همه استفاده کنند. با تشکر.بعد از نصب اوبونتو 22.04 اولین کاری که باید کرد آپدیت کردن پکیج‌هاست.پس دو دستور زیر رو به ترتیب میزنم:sudo apt updatesudo apt upgradeبعد نیاز به نصب چند پکیج ابتدایی دارم:sudo apt install git zsh curl wget build-essentialحالا پلاگین OhMyZSH رو برای zsh نصب میکنم:sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"بعد از این کار باید یک بار لاگ‌اوت و دوباره لاگین کنم که Shell پیش‌فرض به zsh تغییر کنه و پلاگین OhMyZSH لود بشه.حالا باید PHP رو نصب کنم. من برای نصب پی‌اچ‌پی از ریپازیتوری ondrej/php استفاده میکنم که همواره آخرین آپدیت‌ها رو توی خودش داره:sudo add-apt-repository ppa:ondrej/phpو بعد پکیج‌های PHP مورد نیازم رو نصب میکنم:sudo apt install php-fpm php-mbstring php-bcmath php-mcrypt php-zip php-xml php-tokenizer php-mysql php-sqlite3 php-mongodb php-redis php-gd php-imagick php-bz2 php-json php-curl php-soap php-readline php-intl php-dev php-pgsql اگر نیاز به نسخه‌های دیگه‌ای هم داشتم به این صورت عمل می‌کنم:sudo apt install php8.0-fpm php8.0-mbstring php8.0-bcmath php8.0-mcrypt php8.0-zip php8.0-xml php8.0-tokenizer php8.0-mysql php8.0-sqlite3 php8.0-mongodb php8.0-redis php8.0-gd php8.0-imagick php8.0-bz2 php8.0-curl php8.0-soap php8.0-readline php8.0-intl php8.0-dev php8.0-pgsql بعد از نصب PHP باید Composer رو نصب کنم:php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"sudo php composer-setup.php --install-dir /usr/local/bin --filename composerphp -r "unlink('composer-setup.php');"بعد خط زیر روی به فایل ~/.zshrc اضافه می‌کنم که سیستم عامل باینری‌های کامپوزر رو از مسیرش بخونه:export PATH="$HOME/.config/composer/vendor/bin:$PATH"در این مرحله نیاز به نصب nodejs دارم که من برای نصبش از ابزار nvm استفاده می‌کنم:بهتره که از سایت github.com/nvm-sh/nvm دستورات رو برداشت (با دستور زیر نسخه‌ی 0.39.3 نصب میشه).curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bashبعد از اجرای دستور بالا باید به صورت اتوماتیک خط‌های زیر به انتهای فایل .zshrc در مسیر HOME اضافه شده باشند. اگر اضافه نشدند به صورت دستی اونها رو اضافه می‌کنم:export NVM_DIR="$HOME/.nvm"[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completionحالا باید فایل .zshrc رو با دستور زیر دوباره به شل zsh معرفی کنم:source ~/.zshrcحالا میتونم نسخه‌های مختلف node رو با nvm install به راحتی نصب کنم:اگر قصد نصب نسخه‌های دیگه رو داشتید عدد 18 رو به عدد ورژن مورد نظرتون تغییر بدید.nvm install 18حالا برای Serve کردن پروژه‌هام نیاز به نصب ابزار valet-linux دارم که توسط کامپوزر به صورت گلوبال نصب میشه:composer global require cpriego/valet-linuxبعد از نصب valet-linux باید چند تا پکیج که پیش‌نیاز valet هستن رو با دستور زیر نصب کنم:sudo apt install libnss3-tools jq xselو در نهایت میتونم با دستور زیر ‌valet رو نصب کنم:valet installحالا دستور زیر رو اجرا میکنم که به Valet بگم پروژه‌هام کجا هستن:cd && mkdir Sites && cd Sites && valet parkبا دستور بالا اول به HOME میرم، بعد دایرکتوری Sites رو میسازم، بعد وارد دایرکتوری Sites میشم و در نهایت با دستور valet park به valet میگم که پروژه‌هام رو از دایرکتوری Sites بخونه.حالا نیاز به نصب docker دارم.ابتدا:sudo apt update && sudo apt install ca-certificates curl gnupg lsb-releaseبعد:sudo mkdir -m 0755 -p /etc/apt/keyringscurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpgecho "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullدر نهایت:sudo apt update && sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginبعد از نصب داکر یوزر فعلیم رو به گروه docker اضافه میکنم که نیازی به وارد کردن sudo قبل از هر دستور docker نداشته باشم:sudo usermod -aG docker $USERحالا باید یک بار لاگ‌اوت و دوباره لاگین کنم.حالا به کمک دستور pull داکر ایمیج‌های mysql, phpmyadmin, mongo, mongoclient, redis, rebrow رو دریافت می‌کنم:docker pull mysql:8docker pull phpmyadmindocker pull mongo:4docker pull mongoclient/mongoclientdocker pull redisdocker pull marian/rebrowحالا یک network به اسم mynet برای کانتینرهام میسازم:docker network create mynetحالا باید کانتینر‌های مورد نیازم رو ایجاد کنم:Mysql (ports: 3306,33060 | username: root | password: root):docker run -d --name mysql --net mynet --restart always -p 3306:3306 -p 33060:33060 -e MYSQL_ROOT_PASSWORD=root mysql:8phpMyAdmin:docker run -d --name mysql-client --net mynet --restart always -p 3001:80 -e PMA_HOST=mysql -e UPLOAD_LIMIT=2048M phpmyadminMongo:docker run -d --name mongo --net mynet --restart always -p 27017:27017 mongo:4MongoClient:docker run -d --name mongo-client --net mynet --restart always -p 3002:3000 mongoclient/mongoclientRedis:docker run -d --name redis --net mynet --restart always -p 6379:6379 redisRebrow (Redis Client):docker run -d --name redis-client --net mynet --restart always -p 3003:5001 marian/rebrowبا اجرای دستورات بالا و ایجاد کانتینرهای مورد نظر، سرویس‌های Mysql, Mongo و Redis روی پورت پیشفرض خودشون Run میشن و کلاینت‌های اونها، روی پورت‌های زیر در دسترس خواهند بود:phpMyAdmin: http://localhost:3001 (username: root | password: root)MongoClient: http://localhost:3002Rebrow (Redis): http://localhost:3003حالا باید پکیج‌های Snap رو هم آپدیت کنم:ابتدا دستور زیر رو میزنم:sudo snap-store --quitبعد تمام برنامه‌های باز رو میبندم و دستور زیر رو میزنم (حتما ببندید که آپدیتتون به مشکل نخوره):sudo snap refreshو در نهایت یک بار سیستم رو ریستارت میکنم.در انتها ابزارهای مورد نیازم رو Ubuntu Software نصب میکنم:Visual Studio CodePHPStormPostmanDiscordTelegramVLCخب آماده‌سازی اوبونتو 22.04 برای برنامه‌نویسی Laravel/PHP تموم شد.امیدوارم این مطلب به دردتون بخوره و کارتون رو راحت بکنه.اگر نکته‌ای داشتید و یا پیشنهادی برای بهتر شدن روند آماده‌سازی داشتید حتما توی کامنت‌ها بهم بگید.«سال نو مبارک»