نحوه نصب Anchor CMS بر روی یک VPS Fedora 26 LAMP
با استفاده از یک سیستم متفاوت؟ Anchor CMS یک سیستم مدیریت محتوا (CMS) بسیار ساده و بسیار سبک ، بسیار آزاد و آزاد است.
Lychee 3.1 Photo Album ابزاری ساده و انعطاف پذیر ، رایگان و منبع باز منبع آزاد است که روی یک سرور VPS اجرا می شود. در عرض چند ثانیه نصب می شود ، شما را قادر می سازد عکس ها را به سرعت و ایمن بارگذاری ، مدیریت و به اشتراک بگذارید. Lychee 3.1 دارای ویژگی واردات Dropbox است (با یک کلید برنامه معتبر drop-ins). این برنامه با ویژگی های جدید از طریق افزونه ها قابل گسترش است ، به عنوان مثال ، به شما امکان می دهد تا با هر دایرکتوری حاوی عکس ، همگام سازی کنید ، عکس را از طریق SSH بارگذاری کنید ، فیدهای RSS را از عکسهای خود ایجاد کنید ، تصاویر را به عکس های خود اضافه کنید ، به علاوه بسیاری دیگر پیشرفته. و ویژگی های مفید
در این آموزش قصد داریم Lychee 3.1 Album Photo را روی یک Fedora 26 LAMP VPS با استفاده از وب سرور Apache ، PHP 7.1 و یک پایگاه داده MariaDB نصب کنیم.
ما با اضافه کردن یک sudo
کاربر جدید شروع خواهیم کرد .
ابتدا به عنوان root
زیر وارد سرور خود شوید :
ssh root@YOUR_VULTR_IP_ADDRESS
کاربر جدیدی به نام user1
(یا نام کاربری دلخواه خود) اضافه کنید:
useradd user1
بعد ، رمز عبور را برای user1
کاربر تنظیم کنید:
passwd user1
در صورت درخواست ، یک گذرواژه ایمن و به یاد ماندنی وارد کنید.
اکنون /etc/sudoers
پرونده را بررسی کنید تا مطمئن شوید این sudoers
گروه فعال است:
visudo
به دنبال بخشی مانند این باشید:
%wheel ALL=(ALL) ALL
اطمینان حاصل کنید که این مورد بدون شرح است. این خط به ما می گوید کاربرانی که عضو wheel
گروه هستند می توانند از این sudo
دستور برای به دست آوردن root
امتیازات استفاده کنند.
پس از ویرایش پرونده ، می توانید با فشار دادن Esc
و سپس وارد :wq
کردن "نوشتن" و "ترک" پرونده ، ذخیره و خارج شوید .
بعد باید به گروه اضافه user1
کنیم wheel
:
usermod -aG wheel user1
ما می توانیم user1
عضویت گروه را تأیید کنیم و بررسی کنیم که این usermod
فرمان با دستور کار کرده است groups
:
groups user1
اکنون از این su
دستور برای تغییر به user1
حساب کاربری sudo جدید استفاده کنید:
su - user1
فرمان سریع بروزرسانی می کند تا نشان دهد اکنون وارد user1
حساب کاربری خود شده اید. می توانید با whoami
دستور این موضوع را تأیید کنید :
whoami
اکنون sshd
سرویس را مجدداً راه اندازی کنید تا بتوانید ssh
با حساب کاربری جدید sudo غیر ریشه ای که اخیراً ایجاد کرده اید وارد شوید:
sudo systemctl restart sshd
از user1
حساب خارج شوید:
exit
از root
حساب خارج شوید (که ssh
جلسه شما را قطع می کند):
exit
اکنون می توانید ssh
از طریق میزبان محلی خود با استفاده از user1
حساب کاربر جدید sudo غیر root وارد نمونه سرور شوید:
ssh user1@YOUR_VULTR_IP_ADDRESS
اگر می خواهید بدون نیاز به تایپ کردن رمز عبور ، sudo را اجرا /etc/sudoers
کنید ، دوباره پرونده را باز کنید ، با استفاده از visudo
:
sudo visudo
بخش را برای wheel
گروه ویرایش کنید تا به نظر برسد:
%wheel ALL=(ALL) NOPASSWD: ALL
لطفاً توجه داشته باشید: غیرفعال کردن نیاز به رمز ورود برای کاربر سودو یک روش پیشنهادی نیست ، اما در اینجا گنجانده شده است زیرا می تواند پیکربندی سرور را بسیار راحت تر و کمتر ناامید کننده ، به خصوص در جلسات مدیریت طولانی تر سیستم ها انجام دهد. اگر نگران پیامدهای امنیتی هستید ، همیشه می توانید پس از اتمام وظایف مدیریت ، تغییر پیکربندی را به اصل برگردانید.
هر زمان که می خواهید root
از داخل sudo
حساب کاربری وارد حساب کاربری شوید ، می توانید از یکی از دستورات زیر استفاده کنید:
sudo -i
sudo su -
می توانید با وارد کردن موارد زیر ، از root
حساب خارج شوید و در sudo
هر زمان به حساب کاربری خود برگردید :
exit
قبل از نصب هر بسته در نمونه سرور Fedora ، ابتدا سیستم را به روز خواهیم کرد.
اطمینان حاصل کنید که با استفاده از یک کاربر sudo غیر root وارد سرور شده اید و دستور زیر را اجرا می کنید:
sudo dnf -y update
سرور وب Apache را نصب کنید:
sudo dnf -y install httpd
سپس از systemctl
فرمان برای شروع و فعال کردن Apache برای اجرای خودکار در زمان بوت استفاده کنید:
sudo systemctl enable httpd
sudo systemctl start httpd
پرونده پیکربندی Apache خود را بررسی کنید تا اطمینان حاصل شود که این DocumentRoot
راهنما به فهرست صحیح اشاره می کند:
sudo vi /etc/httpd/conf/httpd.conf
DocumentRoot
گزینه پیکربندی خواهد شد مثل این:
DocumentRoot "/var/www/html"
حال ، مطمئن شوید که mod_rewrite
ماژول Apache بارگیری شده است. ما می توانیم با جستجو در پرونده پیکربندی ماژول های پایه Apache برای اصطلاح " mod_rewrite
" این کار را انجام دهیم .
پرونده را باز کنید:
sudo vi /etc/httpd/conf.modules.d/00-base.conf
اصطلاح را جستجو mod_rewrite
کنید
اگر mod_rewrite
ماژول Apache بارگیری شود ، یک خط پیکربندی پیدا خواهید کرد که به این صورت است:
LoadModule rewrite_module modules/mod_rewrite.so
اگر خط فوق با نیمه روده ای شروع می شود ، شما نیاز به حذف نیمه روده بزرگ برای ناخوشایند کردن خط و بارگذاری ماژول دارید. البته این برای هر ماژول مورد نیاز Apache نیز صدق می کند.
اکنون باید فایل پیکربندی پیش فرض Apache را ویرایش کنیم تا mod_rewrite
به درستی با Lychee کار کند.
پرونده را باز کنید:
sudo vi /etc/httpd/conf/httpd.conf
سپس قسمتی را که شروع می شود پیدا کنید <Directory "/var/www/html">
و AllowOverride none
به آن تغییر دهید AllowOverride All
. نتیجه نهایی (با حذف همه نظرات) چیزی شبیه به این خواهد بود:
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
اکنون پرونده پیکربندی Apache را ذخیره و بسته کنید.
ما در انتهای این آموزش Apache را مجدداً راه اندازی می کنیم ، اما راه اندازی مجدد Apache به طور مرتب در حین نصب و تنظیمات مطمئناً یک عادت خوب است ، بنابراین بیایید اکنون این کار را انجام دهیم:
sudo systemctl restart httpd
اکنون باید پیش فرض HTTP
و HTTPS
پورت ها را باز کنیم زیرا به طور پیش فرض مسدود می شوند firewalld
.
پورت های فایروال را باز کنید:
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
بارگذاری مجدد فایروال برای اعمال تغییرات:
sudo firewall-cmd --reload
کلمه success
نمایش داده شده در پایانه خود را بعد از هر فرمان پیکربندی فایروال موفق مشاهده خواهید کرد.
HTTP
با مراجعه به آدرس IP یا دامنه نمونه سرور در یک مرورگر می توانیم به سرعت تأیید کنیم که پورت Apache باز باشد:
http://YOUR_VULTR_IP_ADDRESS/
صفحه وب پیش فرض Apache را در مرورگر خود مشاهده خواهید کرد.
SELinux مخفف "Security Enhanced Linux" است. این یک پیشرفت امنیتی برای لینوکس است که به کاربران و سرپرستان امکان کنترل بیشتر از کنترل دسترسی را می دهد. این کار به صورت پیش فرض در Fedora 26 فعال شده است ، اما قطعاً برای امنیت سرور ضروری نیست زیرا بسیاری از توزیع های سرور لینوکس با نصب یا فعال کردن آن به صورت پیش فرض حمل نمی کنند.
برای جلوگیری از مشکلات اجازه پرونده با Lychee بعداً در خط ، فعلاً قصد داریم SELinux را غیرفعال کنیم. بنابراین پرونده پیکربندی SELinux را با ویرایشگر ترمینال مورد علاقه خود باز کنید:
sudo vi /etc/selinux/config
تغییر SELINUX=enforcing
کرده SELINUX=disabled
و سپس پرونده را ذخیره کنید.
برای اعمال تغییر پیکربندی ، SELinux نیاز به راه اندازی مجدد سرور دارد ، بنابراین می توانید سرور را با استفاده از کنترل پنل Vultr مجدداً راه اندازی کنید یا می توانید به راحتی از این shutdown
دستور استفاده کنید :
sudo shutdown -r now
با راه اندازی مجدد سرور ، جلسه SSH شما قطع می شود و ممکن است پیامی را مشاهده کنید که از شما در مورد 'broken pipe'
یا خبر می دهد 'Connection closed by remote host'
. این هیچ نگرانی نیست ، فقط 20 ثانیه صبر کنید و دوباره SSH را دوباره وارد کنید (با نام کاربری و دامنه خود):
ssh user1@YOUR_DOMAIN
یا (با نام کاربری و آدرس IP خود):
ssh user1@YOUR_VULTR_IP_ADDRESS
پس از ورود به سیستم ، باید وضعیت SELinux را دوباره با این sestatus
دستور بررسی کنید تا مطمئن شوید که به درستی غیرفعال شده است:
sudo sestatus
باید پیامی را ببینید که می گوید SELinux status: disabled
. اگر پیامی را می بینید که می گوید SELinux status: enabled
(یا چیزی مشابه) ، باید مراحل فوق را تکرار کرده و از راه اندازی مجدد مناسب سرور خود اطمینان حاصل کنید.
اکنون می توانیم PHP 7.1 را به همراه تمام ماژول های PHP مورد نیاز Lychee نصب کنیم:
sudo dnf -y install php php-mysqlnd php-mbstring php-gd php-common php-pdo php-pecl-imagick php-xml php-zip
از آنجا که ممکن است برای بارگذاری و پردازش پرونده های بزرگ نیاز به استفاده از Lychee داشته باشیم ، لازم است برخی از تنظیمات پیش فرض PHP را تغییر دهیم.
php.ini
پرونده پیکربندی را باز کنید:
sudo vi /etc/php.ini
گزینه های PHP زیر را به این مقادیر تغییر دهید:
max_execution_time = 300
post_max_size = 100M
upload_max_size = 100M
upload_max_filesize = 50M
memory_limit = 256M
پس از اتمام ، پرونده را ذخیره و خارج کنید.
اگر به دلیل عدم امکان بارگذاری یا پردازش پرونده های بزرگ با Lychee دچار مشکل شده اید ، به سادگی سعی کنید مقادیر فوق را بیشتر کنید ، زیرا این می تواند مشکلات شما را برطرف کند.
Fedora 26 به طور پیش فرض از استفاده از سرور پایگاه داده MariaDB استفاده می کند ، که یک منبع پیشرفته ، کاملاً باز ، جامعه توسعه یافته ، جایگزین کشویی برای سرور MySQL است.
سرور پایگاه داده MariaDB را نصب کنید:
sudo dnf -y install mariadb-server
سرور MariaDB را شروع و فعال کنید تا به طور خودکار در زمان بوت اجرا شود:
sudo systemctl enable mariadb
sudo systemctl start mariadb
نصب سرور MariaDB خود را ایمن کنید:
sudo mysql_secure_installation
root
رمز عبور خالی خواهد بود، بنابراین به سادگی ضربه زمانی که برای درخواست وارد کنید root
رمز عبور.
وقتی از شما خواسته شد که یک root
کاربر MariaDB / MySQL ایجاد کنید ، "Y" (برای بله) را انتخاب کنید و سپس یک root
رمز عبور ایمن وارد کنید . به سادگی "Y" را به همه سؤالات بله / خیر پاسخ دهید زیرا پیشنهادات پیش فرض مطمئن ترین گزینه ها هستند.
root
با اجرای دستور زیر وارد پوسته MariaDB شوید به عنوان کاربر MariaDB :
sudo mysql -u root -p
برای دسترسی به دستور فرمان MariaDB ، کافی است پس از آن درخواست root
رمز ورود MariaDB را وارد کنید .
برای ایجاد یک بانک اطلاعاتی MariaDB و کاربر پایگاه داده برای Lychee ، سؤالات زیر را اجرا کنید:
CREATE DATABASE lychee_db CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER 'lychee_user'@'localhost' IDENTIFIED BY 'UltraSecurePassword';
GRANT ALL PRIVILEGES ON lychee_db.* TO 'lychee_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
در صورت تمایل می توانید نام lychee_db
و نام کاربری پایگاه داده را lychee_user
با چیز دیگری به دلخواه خود جایگزین کنید. همچنین ، مطمئن شوید که "UltraSecurePassword" را با یک رمزعبور واقعاً ایمن جایگزین کنید.
دایرکتوری کار فعلی خود را به فهرست پیش فرض وب تغییر دهید:
cd /var/www/html/
اگر پیام خطایی را دارید که می گوید چیزی شبیه به 'No such file or directory'
آن است ، دستور زیر را امتحان کنید:
cd /var/www/ ; sudo mkdir html ; cd html
فهرست کار فعلی شما اکنون خواهد بود /var/www/html/
:. می توانید این مورد را با دستور pwd
(فهرست کار چاپ) بررسی کنید:
pwd
اکنون wget
برای بارگیری بسته نصب Lychee استفاده کنید :
sudo wget --content-disposition https://github.com/electerious/Lychee/archive/v3.1.6.zip
لطفا توجه داشته باشید: شما باید با مراجعه به صفحه بارگیری Lychee جدیدترین نسخه را بررسی کنید .
برای بررسی اینکه فایل را با موفقیت بارگیری کرده اید ، فهرست اصلی را فهرست کنید:
ls -la
بیایید سریع نصب unzip
کنیم تا بتوانیم پرونده را از حالت فشرده خارج کنیم:
sudo dnf -y install unzip
اکنون بایگانی zip را فشرده سازی کنید:
sudo unzip Lychee-3.1.6.zip
همه پرونده های نصب را به فهرست فهرست وب بروید:
sudo mv -v Lychee-3.1.6/* Lychee-3.1.6/.* /var/www/html 2>/dev/null
برای جلوگیری از هرگونه مشکل در مجوز ، مالکیت پرونده های وب را تغییر دهید:
sudo chown -R apache:apache * ./
مجوزهای قابل خواندن جهان را روی فهرستها upload
و data
ف��رستها تنظیم کنید:
sudo chmod -R 777 data/ upload/
دوباره Apache را مجدداً راه اندازی کنید:
sudo systemctl restart httpd
اکنون ما آماده هستیم تا به مرحله آخر برویم.
اکنون زمان آن رسیده است که آدرس IP سرور خود را در مرورگر خود مشاهده کنید ، یا اگر قبلاً تنظیمات Vultr DNS خود را پیکربندی کرده اید (و زمان کافی برای انتشار آن دارید) می توانید به جای آن از دامنه خود بازدید کنید.
برای دسترسی به صفحه نصب Lychee ، آدرس IP نمونه Vultr خود را در نوار آدرس مرورگر خود وارد کنید:
http://YOUR_VULTR_IP_ADDRESS/
در Database Connection Details
صفحه ، مقادیر پایگاه داده زیر را وارد کنید:
Database Host: localhost
Database Username: lychee_user
Password: UltraSecurePassword
Database Name: lychee_db
Connect
برای ادامه کلیک کنید
یک Username
و Password
برای نصب خود وارد کنید:
Username: <your username>
Password: <a secure password>
Create Login
برای ادامه کلیک کنید
شما به طور خودکار به صفحه بارگذاری آلبوم هدایت می شوید و وارد بخش سرپرست می شوید. اگر می خواهید تنظیمات را تغییر دهید می توانید بر روی نماد چرخ دنده در گوشه سمت چپ بالای صفحه کلیک کنید.
برای تغییر تنظیمات پیشرفته تر ، باید به ترمینال برگردید و پرونده پیکربندی Lychee را ویرایش کنید:
sudo vi data/config.php
اگر هنوز تنظیمات Vultr DNS خود را پیکربندی نکرده اید ، می توانید با استفاده از کنترل پنل Vultr DNS این کار را انجام دهید.
همچنین توصیه می شود سایت خود را برای استفاده از SSL پیکربندی کنید زیرا بیشتر مرورگرهای مدرن در صورت عدم امکان فعال سازی سایت های SSL هشدارهایی را صادر می کنند و گواهینامه های SSL اکنون به صورت رایگان در دسترس هستند.
در هر صورت ، اکنون آماده شروع به بارگذاری و به اشتراک گذاری عکس های خود هستید. برای اطلاعات بیشتر در مورد نحوه پیکربندی و استفاده از مدیر عکس خود ، از اسناد Lychee اطمینان حاصل کنید .
با استفاده از یک سیستم متفاوت؟ Anchor CMS یک سیستم مدیریت محتوا (CMS) بسیار ساده و بسیار سبک ، بسیار آزاد و آزاد است.
با استفاده از یک سیستم متفاوت؟ Matomo (سابقا پیویک) یک بستر تحلیلی منبع باز است ، یک جایگزین باز برای Google Analytics. منبع Matomo میزبان o
با استفاده از یک سیستم متفاوت؟ Dolibarr یک برنامه ریزی منبع باز شرکت (ERP) و مدیریت ارتباط با مشتری (CRM) برای تجارت است. دلیبار
AWStats ابزاری مفید برای تحلیل ترافیک وب است. رابط HTML آن از طریق مرورگر قابل دسترسی است و به شما اطلاعاتی آسان درباره اینکه چه کسی شما را مشاهده می کند ، می شود
با استفاده از یک سیستم متفاوت؟ Subrion 4.1 CMS یک سیستم مدیریت محتوای متن باز (CMS) قدرتمند و قابل انعطاف است که یک کانتینر بصری و واضح را به ارمغان می آورد.
با استفاده از یک سیستم متفاوت؟ NGINX می تواند به عنوان سرور HTTP / HTTPS ، سرور پروکسی معکوس ، سرور پروکسی پست الکترونیکی ، تعادل بار ، ترمینال TLS یا cachin استفاده شود
با استفاده از یک سیستم متفاوت؟ Gitea یک منبع کنترل جایگزین متن باز و خود میزبان است که توسط Git ساخته شده است. Gitea در Golang نوشته شده و هست
با استفاده از یک سیستم متفاوت؟ Ghost یک ��لتفرم وبلاگ نویسی منبع باز است که از زمان انتشار 2013 خود محبوبیت زیادی بین توسعه دهندگان و کاربران عادی پیدا می کند. من
با استفاده از یک سیستم متفاوت؟ NodeBB یک انجمن مبتنی بر Node.js است. از سوکت های وب برای تعامل فوری و اعلامیه های زمان واقعی استفاده می کند. کد منبع NodeBB i
با استفاده از یک سیستم متفاوت؟ Tiny Tiny RSS Reader خواننده و جمع کننده منبع خبری وب مبتنی بر منبع آزاد (RSS / Atom) رایگان و منبع باز است که به منظور پخش
با استفاده از یک سیستم متفاوت؟ Backdrop CMS 1.8.0 یک سیستم مدیریت محتوا منبع باز و آزاد و متناسب با تلفن همراه ، رایگان و آزاد است که به ما اجازه می دهد
با استفاده از یک سیستم متفاوت؟ Microweber کشیدن و رها کردن منبع باز CMS و فروشگاه آنلاین است. کد منبع مایکروویو در GitHub میزبانی شده است. این راهنما یو را نشان می دهد
با استفاده از یک سیستم متفاوت؟ Osclass یک پروژه منبع باز است که به شما امکان می دهد به راحتی و بدون دانش فنی یک سایت طبقه بندی شده ایجاد کنید. منبع آن
با استفاده از یک سیستم متفاوت؟ HTMLDoc به صورت پویا اسناد اسکریپت پستی (PDF 1.6) را از متن Hypertext به درستی نوشته شده تجزیه می کند (HTML 3.2). این به شما امکان می دهد
با استفاده از یک سیستم متفاوت؟ PyroCMS یک CMS منبع باز است که به زبان PHP نوشته شده است. کد منبع PyroCMS در GitHub میزبانی شده است. در این راهنما به خوبی از طریق Entir قدم بردارید
با استفاده از یک سیستم متفاوت؟ اکتبر 1.0 CMS یک سیستم مدیریت محتوا (CMS) ساده و قابل اعتماد ، رایگان و منبع باز است که در چارچوب Laravel ساخته شده است
با استفاده از یک سیستم متفاوت؟ Akaunting یک نرم افزار حسابداری رایگان ، منبع باز و آنلاین است که برای مشاغل کوچک و آزاد مترجم طراحی شده است. ساخته شوخ طبعی است
با استفاده از یک سیستم متفاوت؟ Bludit یک CMS بلاگ نویسی ساده ، سریع و انعطاف پذیر است که به زبان PHP نوشته شده است. Bludit از فایلهایی با فرمت JSON برای ذخیره محتوا استفاده می کند ، بنابراین نمی دانید
با استفاده از یک سیستم متفاوت؟ مقدمه TaskBoard ابزاری آزاد و منبع باز است که می تواند برای ردیابی مواردی که برای انجام کار نیاز دارند ، استفاده شود. فراهم می کند
با استفاده از یک سیستم متفاوت؟ MODX Revolution یک سیستم مدیریت محتوای محتوا (CMS) سریع ، انعطاف پذیر ، مقیاس پذیر ، آزاد و منبع آزاد است.
LiteCart یک بستر سبد خرید آزاد و منبع باز است که به زبان های PHP ، jQuery و HTML 5 نوشته شده است. این نرم افزار ساده ، سبک و با کاربرد آسان است.
با استفاده از یک سیستم متفاوت؟ Anchor CMS یک سیستم مدیریت محتوا (CMS) بسیار ساده و بسیار سبک ، بسیار آزاد و آزاد است.
NFS یک سیستم فایل مبتنی بر شبکه است که به رایانه ها اجازه می دهد تا از طریق شبکه رایانه ای به فایلها دسترسی پیدا کنند. این راهنما توضیح می دهد که چگونه می توانید پوشه ها را روی NF قرار دهید
هنگام راه اندازی سرور جدید لینوکس ، به روزرسانی سیستم های هسته و سایر بسته ها تا آخرین نسخه پایدار یک روش توصیه شده است. در این مقاله
با استفاده از یک سیستم متفاوت؟ Matomo (سابقا پیویک) یک بستر تحلیلی منبع باز است ، یک جایگزین باز برای Google Analytics. منبع Matomo میزبان o
TeamTalk یک سیستم کنفرانس است که به کاربران امکان می دهد مکالمات صوتی / تصویری با کیفیت بالا ، چت متنی ، انتقال فایل ها و صفحه های به اشتراک بگذارند. من
Vultr یک ویژگی را فراهم می کند که به شما امکان می دهد با ایجاد یک نمونه جدید ، کلیدهای SSH را از قبل نصب کنید. این اجازه می دهد تا به کاربر root دسترسی داشته باشید ، با این حال ، th
با استفاده از یک سیستم متفاوت؟ NodeBB یک نرم افزار انجمن مبتنی بر Node.js است. از سوکت های وب برای تعامل فوری و اعلامیه های زمان واقعی استفاده می کند. NodeB
ZNC یک پیشرانه پیشرفته شبکه IRC است که تمام وقت بهم متصل می شود تا مشتری IRC بتواند بدون از دست دادن جلسه گپ قطع یا وصل شود.
رنجر یک مدیر فایل مبتنی بر خط فرمان است که دارای کلیدهای اتصال VI است. این برنامه یک رابط لعنتی مینیمالیستی و زیبا با نمای سلسله مراتب فهرست ارائه می دهد