برای هرکسی که توی حوزه وب فعالیت میکنه، واضح و مبرهنه که nginx یه یار جدایی ناپذیره که گاه و بیگاه تحت هر عنوانی بهش نیاز پیدا میکنی. یکی واسه وب سرور، یکی reverse proxy و ...
میخوام براساس کتاب
NGINX Cookbook | Advanced Recipes for High-Performance Load Balancing
اثر Derek DeJonghe یه مجموعه آموزشها و نکاتی رو راجب nginx بنویسم. البته توصیه میکنم خود کتاب رو بخونید ولی خب در حد توان سعی میکنم نکاتی که ممکنه توی کتاب هم نباشه و مدنظرم هست رو بنویسم(البته به دلایل واضح از نوشتن راجب nginx plus صرفنظر میکنم).
لیست بخشهای قبل:
توی این بخش قصد دارم فرآیند نصب nginx رو توضیح بدم. ترجیح خودم نصب روی ubuntu هست(طبیعتا چون ubuntu دارم و دوستش هم دارم) ولی خب براساس کتاب نصبش روی توزیعایی که دوستدار YUM هستن هم مینویسم.
اول مطابق خیلی از فرآیندای نصب و جهت آپدیت بودن رپوهای پکیج منیجر و گرفتن ورژن درست یه آپدیت میزنیم و یه سری برنامههای اساسی موردنیاز هم نصب میکنیم:
$ apt update $ apt install -y curl gnupg2 ca-certificates lsb-release debian-archive-keyring
اون -y هم بخاطر اینه که نپرسه که: میخوای نصبش کنم؟ اگه آره Y رو وارد کن!
بعدش signing key (راجبش اینجا بخونید ولی درکل اینجوریه که پیش ubuntu به این منبعی که ازش دانلود میکنید رسمیت میده) مربوط به nginx رو دانلود و ذخیره میکنیم:
$ OS=$(lsb_release -is | tr '[:upper:]' '[:lower:]') $ RELEASE=$(lsb_release -cs) $ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/${OS} ${RELEASE} nginx" | tee /etc/apt/sources.list.d/nginx.list
این lsb_release هم یه اطلاعاتی راجب سیستم عاملتون و نسخهش بهتون میده. echo $(lsb_release -a) رو بزنید و نتیجهش رو ببینید، باحاله!
یه بار دیگه اطلاعات پکیج منیجرمون (apt عزیز) رو آپدیت میکنیم و بعدش nginx رو نصب میکنیم!
$ apt update $ apt install -y nginx $ systemctl enable nginx $ systemctl start nginx
همونطور که میبینید بعد از نصب سرویسش رو فعال میکنیم تا اگه سیستم ریستارت هم شد خودش دوباره استارت بخوره و در نهایت هم استارتش رو میزنیم. برای اینکه مطمئن بشید درست درحال اجراست این کامند رو بزنید که استاتوس سرویسش رو چک کنید:
$ systemctl start nginx
که منطقا باید چنین خروجیای ببینید:
● nginx.service - nginx - high performance web server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: enabled) Active: active (running) since Tue 2024-11-03 13:20:31 +0330; 6h ago Docs: https://nginx.org/en/docs/ Process: 2086 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS) Main PID: 2094 (nginx) Tasks: 9 (limit: 18742) Memory: 6.1M (peak: 10.0M swap: 2.0M swap peak: 2.0M) CPU: 26ms CGroup: /system.slice/nginx.service ├─2094 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf" ├─2095 "nginx: worker process" ├─2096 "nginx: worker process" ├─2097 "nginx: worker process" ├─2098 "nginx: worker process" Nov 03 13:20:31 useruser systemd[1]: Starting nginx.service - nginx - high performance web server... Nov 03 13:20:31 useruser systemd[1]: Started nginx.service - nginx - high performance web server.
بریم سراغ بخش غیر دوست داشتنی! نصبش با YUM
اول یه فایل درست میکنیم تا ریپازیتوری که nginx رو ازش دانلود میکنیم به پکیج منجیر معرفی کنیم:
$ nano /etc/yum.repos.d/nginx.repo
و با این محتوا پرش میکنیم:
[nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1
اون centos رو بنا به توزیعتون تغییر بدید(مثلا به rhel) و بعدش این کامندا رو ران کنید:
$ yum -y install nginx $ systemctl enable nginx $ systemctl start nginx $ firewall-cmd --permanent --zone=public --add-port=80/tcp $ firewall-cmd --reload
اولی نصبش میکنه.
دومی سرویسش رو فعال میکنه که در صورت ریستارت سیستم خودکار استارت بشه.
سومی استارتش میکنه.
چهارمی پورت ۸۰ رو باز میکنه(پر واضحه که برای https باید پورت ۴۴۳ هم باز کنید)
پنجمی فایروال رو ریلاود میکنه که این آزادسازی پورت اعمال بشه.
اینم از این!
توی پست بعدی فایلهای اساسی، دایرکتوریها و کامندهای مربوط به nginx رو توضیح خواهم داد.